VeighNa量化社区
你的开源社区量化交易平台
casf's Avatar
Member
离线
39 帖子
声望: 0

我的rqdata到期了,暂时换回本地数据,我把全局配置里的datafeed.username、password等信息都删掉了,就像之前一样。但是现在想用地本数据使用CTA策略时候显示“rqdata数据服务初始化失败:用户名为空”。而且需要初始化的一些数据显示“0”。请问这种情况怎么办?
description

buy/sell等开仓指令,下单时候是市价委托吗?
cover是限价吗

关于tick数据 论坛: CTP

我打算用米筐4000的不含TICK数据的服务,我想知道实盘使用时候我获取实时tick级别数据(非历史数据)能否通过CTP接口?会有什么冲突吗

这个问题出现在15min级别的策略运行时,1min级别策略没有问题。
推送的数据量我非常确定是足够的,也没有其他别的问题。
而且上周运行15min策略时,初始化且启动后指标计算就成功了
有时运行15min时,需要等几分钟,指标才能计算成功
但是今天很久了指标数值还是显示0,请问这会是什么原因呢

现在本地数据入库可以通过数据管理模块入库,我想知道现在能不能写一个程序实现,有时候入库数据有点多,一个一个入库有些麻烦

请问是啥问题呢

其次在新设备使用vnpy需要登录,但是我不记得我的账号和密码了,应该咋样查看呢

打印发现on_15min_bar()里self.am.update_bar(bar)之后的代码都没有被执行

我觉得可能是am的问题,所以我尝试把arraymanager()的参数改成1,修改之后后面的代码才开始被执行,之前的参数就是默认值size=100
我是VNPY默认数据库加载的数据,推送数据值都有几百条了,现在不明白问题在哪

代码如下:

from vnpy_ctastrategy import (
CtaTemplate,
StopOrder,
Direction,
TickData,
BarData,
TradeData,
OrderData,
BarGenerator,
ArrayManager,
)

from vnpy.trader.constant import Interval
class ver_two_TS_Strategy(CtaTemplate):
""""""
author = "用Python的交易员"

entry_window = 20

exit_window = 10

atr_window = 20

fixed_size = 1


entry_up = 0
entry_down = 0

exit_up = 0
exit_down = 0

atr_value = 0

long_entry = 0
short_entry = 0

long_stop = 0
short_stop = 0


parameters = ["entry_window", "exit_window", "atr_window", "fixed_size"]
variables = ["entry_up", "entry_down", "exit_up", "exit_down", "atr_value"]

def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
    """"""
    # 类的初始化

    super().__init__(cta_engine, strategy_name, vt_symbol, setting)


    self.bg15min = BarGenerator(self.on_bar, 15, self.on_15min_bar, interval=Interval.MINUTE)

    self.am = ArrayManager()

def on_init(self):

    self.write_log("策略初始化")
    self.load_bar(20)

def on_start(self):

    self.write_log("策略启动")

def on_stop(self):

    self.write_log("策略停止")

def on_tick(self, tick: TickData):

    self.bg15min.update_tick(tick)


def on_bar(self, bar: BarData):
    self.bg15min.update_bar(bar)

def on_15min_bar(self, bar: BarData):

    self.cancel_all()

    self.am.update_bar(bar)
    if not self.am.inited:
        return

    if not self.pos:
        self.entry_up, self.entry_down = self.am.donchian(
            self.entry_window)


    self.exit_up, self.exit_down = self.am.donchian(self.exit_window)

    if not self.pos:
        # 计算atr值
        self.atr_value = self.am.atr(self.atr_window)
        self.long_entry = 0
        self.short_entry = 0
        self.long_stop = 0
        self.short_stop = 0
        self.send_buy_orders(self.entry_up)
        self.send_short_orders(self.entry_down)

    elif self.pos > 0:
        self.send_buy_orders(self.entry_up)

        sell_price = max(self.long_stop, self.exit_down)

        self.sell(sell_price, abs(self.pos), True)


    elif self.pos < 0:
        self.send_short_orders(self.entry_down)

        cover_price = min(self.short_stop, self.exit_up)
        self.cover(cover_price, abs(self.pos), True)

    # 更新图形界面
    self.put_event()

def on_trade(self, trade: TradeData):
    if trade.direction == Direction.LONG:

        self.long_entry = trade.price
        self.long_stop = self.long_entry - 2 * self.atr_value
    else:
        self.short_entry = trade.price
        self.short_stop = self.short_entry + 2 * self.atr_value

def on_order(self, order: OrderData):

    pass

def on_stop_order(self, stop_order: StopOrder):

    pass

def send_buy_orders(self, price):

    t = self.pos / self.fixed_size

    if t < 1:
        self.buy(price, self.fixed_size, True)

    if t < 2:
        self.buy(price + self.atr_value * 0.5, self.fixed_size, True)

    if t < 3:
        self.buy(price + self.atr_value, self.fixed_size, True)

    if t < 4:
        self.buy(price + self.atr_value * 1.5, self.fixed_size, True)

def send_short_orders(self, price):

    t = self.pos / self.fixed_size

    if t > -1:
        self.short(price, self.fixed_size, True)

    if t > -2:
        self.short(price - self.atr_value * 0.5, self.fixed_size, True)

    if t > -3:
        self.short(price - self.atr_value, self.fixed_size, True)

    if t > -4:
        self.short(price - self.atr_value * 1.5, self.fixed_size, True)

description

我把vnpy自带的turtle策略修改了一下,我想基于15min级别进行交易,但是如图所示的数值一直都没有变化过,我想知道是什么问题?
代码如下所示:

比如万分之二的手续费,我应该写0.0002吗

volume_array = am.volume(self.volume_length, array=True)
self.volume_value = volume_array[-1]
self.volume_ma = volume_array[-self.volume_ma_length:].mean()

您好,我想把成交量元素加入自己的策略里,请问volume_ma和volume_length应当如何设置呢?

我发现在开发策略的时候,我有时候不知道某些变量应该如何设置,有的地方不知道怎么去写,可能有些没有概念,请问平台上有没有什么文档或者其它内容可以帮助我更好地开放自己的策略?

description
如图,应该有一个cta_strategy的文件夹吧 但是我这里没有
description
我想找到这些策略的py文件

description

description

为什么pos、fast_ma0等变量数值为0呢?是不是我的数据配置问题?我没有用米筐等等,是下载到本地的数据。如果是数据配置的问题,那我应该如何设置呢

删除以后再次添加环境变量也无法成功运行程序。双击无反应。我不知道是不是自己添加的环境变量路径错误。
请问是D:\vnpy\Scripts和D:\vnpy\吗?
系统内有多个python,想在不卸载其它python的情况下解决这个问题。

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】