在vnpy社区版3.8.0, 我写了一个策略,监控27个商品,就是同一个策略,应用到多个symbol。发现如下异常:
我昨天特意到8:55以后初始化策略实例,发现郑商所的品种可以接收tick,大商所还是不行。上期所和广期所OK。 我的猜想:
请高手指点哪里出问题了?
使用VNStation 3.1 安装后,发现MongoDB导入数据异常。 表现为数据可以插入,但是bar_overview统计出错。具体代码出错位置就是统计bar数量 Cousor.count()报错,说是没有这个函数。
对比VNstation 3.0, 发现pymongo版本不同。使用老的pymongo==3.12.3替换后,正常。 后来发现是Cousor.count()失效了。 请及时团队更新这个问题
CTP仿真环境支持本地停止单吗?
用华鑫期货的仿真环境,测试中用到了vnpy的本地停止单(local_stop_order)功能,在IF1912合约上。发现出错。 策略发的本地停止单3840的空单,ctp发的
3476的现价空单。 所以仿真环境CTP报错,错误信息是超出报价范围。
我看了一下CtaEngine类的check_stop_order()函数。需要ticket中的tick.ask_price_5,bid_price_5,或者tick.limit_down,tick.limit_up。仿真环境中买五,卖五的价格都没有啊。
if stop_order.direction == Direction.LONG:
if tick.limit_up:
price = tick.limit_up
else:
price = tick.ask_price_5
else:
if tick.limit_down:
price = tick.limit_down
else:
price = tick.bid_price_5
采用本地停止单的模式下,我发现在实盘下无法正常撤单。版本2.0.6, 股指IC1908合约交易。
在回测模式下是OK的。然后我debug了一下,发现在回测模式下,backtesting engine返回的是 vt_orderid是这样的格式["STOP.1"] ,而在cta engine下,返回的本地停止单的的格式是'STOP.1", 是不带[]的。 请问正确的格式是应该是怎样的? 我找了一下相关源代码,如下
cta engine的代码(413行)=====>
self.stop_orders[stop_orderid] = stop_order
vt_orderids = self.strategy_orderid_map[strategy.strategy_name]
vt_orderids.add(stop_orderid)
self.call_strategy_func(strategy, strategy.on_stop_order, stop_order)
self.put_stop_order_event(stop_order)
return stop_orderid
BacktestingEngine的代码(906行)======>
price = round_to(price, self.pricetick)
if stop:
vt_orderid = self.send_stop_order(direction, offset, price, volume)
else:
vt_orderid = self.send_limit_order(direction, offset, price, volume)
return [vt_orderid]
自己示例程序写了如下run.py,执行后出错。
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp
from vnpy.gateway.ctp import CtpGateway
from vnpy.app.cta_strategy import CtaStrategyApp
def main():
"""Start VN Trader"""
qapp = create_qapp()
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(CtpGateway)
main_engine.add_app(CtaStrategyApp)
main_window = MainWindow(main_engine, event_engine)
main_window.showMaximized()
qapp.exec()
if name == "main":
main()
出现如下错误=======================>
Traceback (most recent call last):
File "C:\ProgramData\VNConda\lib\site-packages\numpy\core__init__.py", line 16, in <module>
from . import multiarray
ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/vnpy-2.0.2/qic/run.py", line 2, in <module>
from vnpy.trader.engine import MainEngine
File "C:\vnpy-2.0.2\vnpy\trader\engine.py", line 26, in <module>
from .setting import SETTINGS
File "C:\vnpy-2.0.2\vnpy\trader\setting.py", line 7, in <module>
from .utility import load_json
File "C:\vnpy-2.0.2\vnpy\trader\utility.py", line 9, in <module>
import numpy as np
File "C:\ProgramData\VNConda\lib\site-packages\numpy__init.py", line 142, in <module>
from . import add_newdocs
File "C:\ProgramData\VNConda\lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "C:\ProgramData\VNConda\lib\site-packages\numpy\lib\init.py", line 8, in <module>
from .type_check import *
File "C:\ProgramData\VNConda\lib\site-packages\numpy\lib\type_check.py", line 11, in <module>
import numpy.core.numeric as _nx
File "C:\ProgramData\VNConda\lib\site-packages\numpy\core\init__.py", line 26, in <module>
raise ImportError(msg)
ImportError:
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try git clean -xdf
(removes all
files not under version control). Otherwise reinstall numpy.
Original error was: DLL load failed: %1 不是有效的 Win32 应用程序。
Process finished with exit code 1