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

在vnpy社区版3.8.0, 我写了一个策略,监控27个商品,就是同一个策略,应用到多个symbol。发现如下异常:

  1. 早上9:00开盘,大商所和郑商所的品种(symbol)接收tick异常,分钟线和小时线无法合成。 策略用米筐数据初始化,行情订阅正常,所有策略实例初始化正常。 vnpy主界面行情正常刷新
  2. 早上9:00开盘,同一个策略的监控上期所和广期所品种的实例正常。
  3. 夜盘,晚上9:00开盘,所有行情都接收正常,分钟线和小时线合成正常,包括大商所和郑商所

我昨天特意到8:55以后初始化策略实例,发现郑商所的品种可以接收tick,大商所还是不行。上期所和广期所OK。 我的猜想:

  1. CTP的问题,夜盘OK,早盘不正常,仅仅是大商所和郑商所。 我还试过,早盘9:00以后再初始化策略,所有symbol接收正常。
  2. 多线程问题,我是批量初始化,而且是一个策略多个symbol。

请高手指点哪里出问题了?

使用VNStation 3.1 安装后,发现MongoDB导入数据异常。 表现为数据可以插入,但是bar_overview统计出错。具体代码出错位置就是统计bar数量 Cousor.count()报错,说是没有这个函数。

对比VNstation 3.0, 发现pymongo版本不同。使用老的pymongo==3.12.3替换后,正常。 后来发现是Cousor.count()失效了。 请及时团队更新这个问题

description

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

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

沪公网安备 31011502017034号

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