求助:
on_tick中打印log,发现同一时间会重复打印:
2020-09-14 09:56:58,594 INFO: arb_sim: 2020-09-14 09:56:58.594906 in ontick:等待时间到,当前仓位:近月0远月-1,本地委托{'CTP.3-1122803941_26'}
2020-09-14 09:56:58,594 INFO: arb_sim: 2020-09-14 09:56:58.594906 in ontick:等待时间到,当前仓位:近月0远月-1,本地委托{'CTP.3-1122803941_26'}
2020-09-14 09:56:58,610 INFO: arb_sim: 2020-09-14 09:56:58.610532 in ontick:等待时间到,当前仓位:近月0远月-1,本地委托{'CTP.3-1122803941_26'}
2020-09-14 09:56:58,625 INFO: arb_sim: 2020-09-14 09:56:58.610532 in ontick:等待时间到,当前仓位:近月0远月-1,本地委托{'CTP.3-1122803941_26'}
2020-09-14 09:56:58,625 INFO: arb_sim: 2020-09-14 09:56:58.610532 in ontick:等待时间到,当前仓位:近月0远月-1,本地委托{'CTP.3-1122803941_26'}
2020-09-14 09:56:58,625 INFO: arb_sim: 2020-09-14 09:56:58.610532 in ontick:等待时间到,当前仓位:近月0远月-1,本地委托{'CTP.3-1122803941_26'}
2020-09-14 09:56:58,625 INFO: arb_sim: 2020-09-14 09:56:58.610532 in ontick:等待时间到,当前仓位:近月0远月-1,本地委托{'CTP.3-1122803941_26'}
2020-09-14 09:56:58,636 INFO: 交易撤单失败,代码:26,信息:CTP:报单已全成交或已撤销,不能再撤
2020-09-14 09:56:58,636 INFO: 交易撤单失败,代码:26,信息:CTP:报单已全成交或已撤销,不能再撤
2020-09-14 09:56:58,636 INFO: 交易撤单失败,代码:26,信息:CTP:报单已全成交或已撤销,不能再撤
2020-09-14 09:56:58,636 INFO: 交易撤单失败,代码:26,信息:CTP:报单已全成交或已撤销,不能再撤
2020-09-14 09:56:58,636 INFO: 交易撤单失败,代码:26,信息:CTP:报单已全成交或已撤销,不能再撤
想请问一下有没有人测试过,win server,不开ui的情况下
1 .on_tick中接到tick的时间和tick本身时间戳时间大概差多少?
2 .接到tick直接发单的tick2trade时间如何测量,大概是多少?
3 .问题1中的延迟是ctp行情服务器到on_tick函数的延迟,那么发单到ctp交易服务器的延迟是否应该差不多
另:目前本地直接ping期货公司ctp大概4ms
新手,在使用vnpy使用中遇到这样的情况:
目前使用本地停止单,cta_engine收到EVENT_TICK,先去检查停止单,再去调策略on_tick(),这样在某些情况下会出现:
检查停止单 -> 停止单触发 -> 挂出限价单 -> 挂单成功拿到orederids,cta_engine的map找到策略并为其记录下这个order,且EVENT_ORDER进入事件队列 -> 策略on_tick()调用 -> 策略on_bar()调用 -> on_bar()中拿着得到的限价单orderids去cancel_all() -> OmsEngine中找不到(EVENT_ORDER此时还没处理) -> 报错撤单失败 -> 策略的pos还没更新 -> on_bar()重复挂单
说白了是 cta 拿着自己有的单号去 oms 那边找对应的单撤,两边不是严格同步的(事件队列FIFO),就会出现这个情况
on_bar收到每日第一个BarData的时候打印log,但是LogData的时间却显示:09:29:59:786
产生疑问,每日合成的第一个bar不是应该走完1min吗
同样的,CTA的log显示在:10:00:59:391,撤单失败,找不到委托CTP.5_1910641967_1
但是Mainengine的委托log显示:10:01:00,5_1910641967_1,限价,空,开,3840.6,全部成交
而成交log显示:18527,5_1910641967_1,空,开,3841.0
这三条log的疑问:
1.因为是在每个1min的on_bar()最开始撤单,10:00:59:391撤单时已经找不到CTP.5_1910641967_1,说明这时CTP.5_1910641967_1已经不活跃了,但是CTP.5_1910641967_1成交是在10:01:00啊,有些矛盾
Simnow测试日内交易,分钟级策略,在1m的bar上 撤/挂 停止单
发现订阅的行情中的时间一栏,正常是0.5秒更新一个tick,
但有时会出现2秒或5秒才更新,甚至10秒或者1分钟(当卡顿1分钟左右时,可能会报8193或4907,也可能不会orz)
因为没收到连续稳定的tick,使用的又是停止单,就出现上一个on_bar的单撤晚了,撤不掉,导致重复挂单
具体表现为:
CTA策略app里会报出撤单失败,找不到CTP.XXXXX_1(这应该是停止单触发,挂出去的第一个限价单,这时已经成交了)
然后接着新一个停止单又触发,挂出CTP.XXXXX_2并成交(下一个bar的停止单挂出去的重复限价单)
求助:
1.有没有什么方法应对行情更新的不稳定性
使用Simnow仿真模拟交易,在GUI界面正常显示order和trade等log信息
但是工作目录下.vntrader/log文件夹中所有日期的log文件内容均为空
翻了一下代码,也检查了setting中"log.console": true,"log.file": true,
按代码来看,两个handler添加后应该都会触发,不知道什么原因导致log文件为空
哪位好心人指点一下
最近回测RB时发现rqdata和jqdata的数据差别很大(大到不知道哪个是真实的数据)
不知道这种情况是不是个例
听说有大佬测试过各家数据质量,不知道能否具体说下
还有国内其他数据源的数据情况
Jupyter运行多进程参数优化时报错:
"""
Traceback (most recent call last):
File "c:\vnstudio\lib\multiprocessing\pool.py", line 121, in worker
result = (True, func(*args, **kwds))
File "c:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py", line 1164, in optimize
engine.run_backtesting()
File "c:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py", line 293, in run_backtesting
func(data)
File "c:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py", line 707, in new_bar
self.cross_stop_order()
File "c:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py", line 874, in cross_stop_order
self.active_stop_orders.pop(stop_order.stop_orderid)
KeyError: 'STOP.42450'
"""
The above exception was the direct cause of the following exception:
KeyError Traceback (most recent call last)
<ipython-input-1-744c12103984> in <module>
30 import time
31 start = time.time()
---> 32 res = engine.run_optimization(setting)
33 print (u'耗时:%s' %(time.time()-start))
c:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py in run_optimization(self, optimization_setting, output)
553
554 # Sort results and output
--> 555 result_values = [result.get() for result in results]
556 result_values.sort(reverse=True, key=lambda result: result[1])
557
c:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py in <listcomp>(.0)
553
554 # Sort results and output
--> 555 result_values = [result.get() for result in results]
556 result_values.sort(reverse=True, key=lambda result: result[1])
557
c:\vnstudio\lib\multiprocessing\pool.py in get(self, timeout)
681 return self._value
682 else:
--> 683 raise self._value
684
685 def _set(self, i, obj):
KeyError: 'STOP.42450'