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

编译 6.3.16 64位的 CTP接口
我使用的是 VS2017(v141)
直接打开 vnpy.api.ctp.vnctp 下的 vnctp.sln 文件项目
修正了windows SDK版本(10.0.17763.0),VC++ 目录包含 python 3.7.5 的include 和 libs,如下图所示:
description
这样之后没有头文件等报错了。

我在编译的时候,选择 X64 平台会出现如下报错:
description

选择 X86 平台是又有这种错误:
description

对于 X86的错误我的理解是因为我使用了python 3.7.5 的libs,并没有32的库文件,所以出错,但是我实在不知道 X64平台的错误再哪里?(编译没错,链接报错了)
还望大家有空帮忙看一下,感谢!!

首先,将 rqdata 保存到 sqlite 时,对rqdata 的日期做了特殊处理,减了1分钟,也就是说时间为 10:00:00的数据其实是10:00:00 到 10:01:00的ohlc价格,这个是前提

再看 BarGenerator 的 update_bar 函数,它会将最新的 bar 的数据更新到 self.window_bar 中,假设此时传到 update_bar 中的 bar 的时间为10:00:00(注意这个bar实际表示的价格是10:00:00 到 10:01:00之间的),这个bar 的 ohlc 价格会先更新到 self.window_bar(合成1小时时,此时这个window_bar要表示的是9点的数据) 中,之后代码中再判断当前bar与上一个bar 的小时是否相等,如果相等表示这个window_bar完成,这是不是有问题了,这个windows_bar其实用到了未来数据了(就是10:00:00 到 10:01:00的价格)?还望回答一下,谢谢!

description

description
请教一下,上图中画圈的两个三角型,向下是表示开仓做空,向上是表示开仓做多么?平仓是怎么看的?感谢!

我看到某些策略中存在 exit_time = time(hour=14, minute=55),比如程序中已经写好的策略 DualThrustStrategy,并且会进行判断当前时间是否大于 exit_time,如果大于 exit_time 就全部平仓,这样是不是意味着放弃夜盘了?虽然是日内策略,但是这样是不是有些不大对了?还望解答,感谢!

出现该问题的原因是 BacktestingEngine 中的 cross_stop_order 函数没有对 stop_order 的状态进行判断。该函数的最后会调用 self.strategy.on_trade(trade) 函数,而类似 KingKeltnerStrategy 中的 on_trade 函数会调用 cancel_order 取消某条 stop_order 报单,将 active_stop_orders 中的 该条 stop_order 报单 pop 出去,但是在 cross_stop_order 中循环时还是可能会访问到该条 stop_order 报单,如果这条报单正好可以成交,会导致再次 pop 而报错。

解决方式为在 cross_stop_order 函数最开始加一条判断就好了:
if stop_order.status == StopOrderStatus.CANCELLED:
continue

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

沪公网安备 31011502017034号

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