【提交中】说明该委托没有收到柜台的确认回报,也就是可能柜台没收到。
你的日志中没有【合约信息查询成功】的输出,建议查下CTP接口是否底层报错了(猜测可能是没有GFEX)。
可以试试升级到3.6.0解决
检查下是否加载了PaperAccount本地模拟模块,有的话去掉即可
havenonetosay wrote:
我的策略是每天早上8点50分自动启动,目标合约是pg液化石油气。
8:50还没到竞价阶段,但是启动后on_tick收到的第一个tick的时间居然是当天晚上10点59分的,
比如1月1日早上8:50启动,结果收到的第一条tick的datetime居然是1月1日晚上10:59的,
结果导致BarGenerator无法生成分钟bar了(因为BarGenerator只会接收比上一条tick时间更晚的tick)。初步估计是vnpy_ctp对大商所的ActionDay的处理问题,所以应该不只是pg合约,大商所的合约都可能有这个问题。(这下不得不吐槽国内的交易所对 TradingDay/ActionDay 的处理问题了,几个交易所几个不同标准,FXXK.)
我看到论坛上有过滤无效tick的解决办法:https://www.vnpy.com/forum/topic/30601-che-di-jie-jue-tickshu-ju-de-guo-lu-wen-ti
但是修改的地方太多了,不利于vnpy后续更新(除非官方把修改合并进去)主要是这个异常tick如果不考虑本地系统时间,单纯从tick的datetime还无法判断是否无效,因为它也确实是正常的交易时间内。
目前一个不太优雅的解决办法是,直接取系统时间,如果是9点前收取的tick一律无视。
但这种过滤方法又会影响回测和载入历史tick,所以针对这个问题又得额外增加判断逻辑。
看vnpy_ctp的仓库已经开了Issue,大家有什么思路在这里一起讨论下吧。
确实对于大商所的日期特殊处理,就是导致上述问题的原因。
brad-pigg wrote:
首先我之前用的3.0版。 但是在把MacOS 从Montery 升级到Ventura 之后 就不能用了。
于是我从github 下载vnpy 的mac 压缩包 解压后,用pycharm打开,自动进入vnpy-3.6.0虚拟环境。
然后运行了 bash install_osx.sh 之后 出现了这样的状况
我试着手动pip install 例如 pip install vnpy_ctastrategy 是可以安装的。
我想请问下,是我安装哪里出了问题呢?还是现在MacOS 就是要这样手动安装?
目前都需要手动安装的
导入数据的时候,代码要写【i2305】,不要加上【.DCE】的后缀
havenonetosay wrote:
根据文档,下单的时候有个net参数可以设置净仓下单模式,多数情况下是正常的,但是偶尔(概率并不小)仍然会出现锁仓的情况。
比如当前的pos是1,
调用self.sell(order_price, 2, net=True)
大概率是会先平1手多仓,然后再开1手空仓。
但是有一定概率会直接开2手空仓,造成有1手锁仓的问题。反之当前pos是-1的时候,
调用self.buy(order_price, 2, net=True)
大概率是会先平1手空仓,然后再开1手多仓。
但是有一定概率会直接开2手多仓,造成有1手锁仓的问题。出问题的概率只是相对低,实际并不低,
我对接simnow,写了个run.py,同时开启所有主力合约。
过1天,就有一大堆锁仓的。每次下单之前我都会调用self.cancel_all(),所以实际伪代码类似下面这种:
self.cancel_all() self.buy(order_price, self.target_pos-self.pos, net=True)
因为有可能上次报单价格没有成交,所以会先撤单,再重新下单。
我猜可能是由于撤单和成交回报不同步导致的vnpy对仓位的判断错误而导致的净仓转换的问题。请问这种要怎么解决呢?
出现这种情况的原因,大概率是还有活动委托的撤单回报尚未收到。
底层OffsetConverter组件对于开平的转换,是基于仓位的【可用】数量进行的,所以如果之前已经挂出的委托撤单后,回报尚未收到的情况下(即冻结部分没有解锁),此时反向委托就会造成开仓。
TargetPosTemplate内部实现了一个简单的交易状态机,必须没有在途委托时才允许重下,所以不会有这个问题。
pip install vnpy_ctp==6.5.1.12
降级接口版本试试
这个应该是出现了异常的【秒】数据点,需要做个过滤排查了
可以看下3.6.0的CtaBacktester,优化配置界面多了个进程数量的选项
数据服务的用途在于历史回测和实盘初始化,如果你有其他渠道获取数据那就不是必须购买RQData
Windows系统上不能超过63,这个是由于Python进程池的Windows实现限制的,Linux则没有了。
一般建议用0就好,会直接基于你的CPU核心数量启动对应的进程,如果确实优化过程中发现内存不足程序崩溃了,那就设置核心数N/2试试看
3.6.0已经官方支持Mac,安装好Python 3.10后,直接pip install vnpy_ctp试试
应该是少了GFEX的广期所支持,需要官方更新UFT接口了
感谢分享!
geniuswp wrote:
每次下载历史数据都会显示下载条数0,然后报错,请问大佬如何解决
Traceback (most recent call last):
File "D:\Tools\veighna_studio\lib\threading.py", line 1319, in invoke_excepthook
hook(args)
TypeError: create_qapp.<locals>.threading_excepthook() missing 1 required positional argument: 'extra'下载前已经在首页订阅数据了
ibapi更新导致的一个兼容性BUG,Github仓库里已经修复了,估计下个版本发布吧
柜台端版本和API不一致,如果是SIMNOW的话直接用CTP接口