VeighNa量化社区
你的开源社区量化交易平台
Member
加入于:
帖子: 60
声望: 8

上周五夜盘实盘测试自己写的沪铝5分钟macd策略, 发现在近半个小时内, 只计算了3个macd的dif值, 记录如下:

2020-10-10 00:33:45,310 INFO: al2010双均线策略初始化完成
2020-10-10 00:34:05,095 INFO: CTA策略初始化完成
2020-10-10 00:34:05,095 INFO: 进入控制cta交易子线程
2020-10-10 00:43:07,518 INFO: DIF值为:4.640292383406631
2020-10-10 00:45:09,013 INFO: DIF值为:4.223777945979236
2020-10-10 01:00:07,066 INFO: DIF值为:4.647035546902771

按照预期的逻辑, 应该是每隔5分钟都会计算一次macd的dif值, 但是实际只计算了三次,而且第一次计算的时候是在2020-10-10 00:43, 正常应该是在00:40或者00:45才会计算, 上通达信上看了一下当时al2010的K线情况, 发现当时成交量很少, 连续几个5分钟的成交量都为零, 通达信5分钟al2010的K线图如下:

description

所以怀疑是不是vnpy的Bargenerator无法对较长一段时间内零成交量的情况进行K线合成, 因为K线合成是接收到TickData后才会触发的, 如果一段时间内交易量为零, 是不是交易所就不会推送tickdata, 从而也不会触发5分钟K线合成? 但是据我所知交易所推送的都是切片行情啊, 应该会每隔一小段时间推送交易的切片, 即使交易量为零. 如果因为交易量为零交易所就不推送tick数据, 那vnpy的K线合成逻辑应该要再完善一下: 在没有tick推送的跨策略的周期时间内 , 增加超时K线合成的逻辑

Member
avatar
加入于:
帖子: 4684
声望: 285

可能是交易所没推。
想知道自己选定的合约有没有切片行情,建议可以print一下看看。

Member
加入于:
帖子: 60
声望: 8

@xiaohe
今晚测试了一下交易稍微活跃点的品种, K线生成正常, 指标计算也正常, 看来确实是因为交易所没有推行情导致无法触发on_tick生成k线23:40:05.810600:[完成]1分钟K线的创建
23:40:05.810600:[创建]新的1分钟K线
23:41:05.325600:[完成]1分钟K线的创建
23:41:05.325600:[创建]新的1分钟K线
23:41:05.325600:[创建]新的一根5分钟K线
23:41:05.325600:[完成]1分钟K线的创建
23:41:05.325600:[创建]新的1分钟K线
23:42:06.320600:[完成]1分钟K线的创建
23:42:06.320600:[创建]新的1分钟K线
23:42:06.320600:[更新]5分钟K线,数据接口为CTP
23:42:06.321600:[完成]1分钟K线的创建
23:42:06.321600:[创建]新的1分钟K线
23:43:08.830600:[完成]1分钟K线的创建
23:43:08.830600:[创建]新的1分钟K线
23:43:08.830600:[更新]5分钟K线,数据接口为CTP
23:43:08.830600:[完成]1分钟K线的创建
23:43:08.830600:[创建]新的1分钟K线
23:44:15.334600:[完成]1分钟K线的创建
23:44:15.334600:[创建]新的1分钟K线
23:44:15.334600:[更新]5分钟K线,数据接口为CTP
23:44:15.334600:[完成]1分钟K线的创建
23:44:15.335600:[创建]新的1分钟K线
2020-10-13 23:45:14,348 INFO: DIF值为:-6.778714391957692

Member
加入于:
帖子: 60
声望: 8

通达信软件生成K线的时候有超时机制, 可以在交易很不活跃的品种下正常生成K线, 所以vnpy的K线生成还有改进空间

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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