Git Product home page Git Product logo

rqalpha-mod-vnpy's Introduction

rqalpha-mod-vnpy

RQAlpha 对接 vnpy 的扩展 Mod。通过启用该 Mod 来实现期货策略的实盘交易。目前本模块仍处在正式发布前的测试阶段,您可以下载参与测试并开 Issue 提交 bug,也欢迎您提交代码,参与开发。

本开源模块未进行详尽完备的测试,作者不保证您通过本模块获取到数据的完整以及准确性、不保证您的策略逻辑正确触发对应的实盘操作,您通过使用本模块实盘操作产生的损益与作者无关。

当前版本的 rqalpha-mod-vnpy 仅支持 VN.PY 的最新版本,请您及时更新 VN.PY 的代码

环境要求

由于 VN.PY 项目仅支持 Linux 和 Windows 系统,python2.7 环境,目前本模块也仅支持在 Linux 或 Windows 系统下 python2.7 环境。
作者仅在 ubuntu 16.04 LTS 系统进行了测试。关于 Windows 及其他 Linux 发行版下的兼容性,作者会在精力允许的情况进行测试,也欢迎您将兼容性情况反馈给我。

编译和安装

本模块依赖 RQAlpha 和 VN.PY 两个项目,所以需要完成两个项目的安装。

安装 RQAlpha

rqalpha-mod-vnpy 依赖 2.0.X 版本的 RQAlpha,您可以执行如下命令来安装 RQAlpha

pip install -U rqalpha

安装 VN.PY

VN.PY 项目未提供 pip 安装包,所以您只能通过下载源代码自行编译的方式进行安装。详细的环境配置和安装说明您可以查看 VN.PY官方教程

安装 mod

在您完成 RQAlpha 的安装之后,您可以执行以下命令来安装 mod:

rqalpha mod install vnpy

之后您可以执行以下命令来启动 mod:

rqalpha mod enable vnpy

如果您需要关闭或者卸载 mod 您可以执行以下两条命令:

rqalpha mod disable vnpy

rqalpha mod uninstall vnpy

配置项

您需要在配置项中填入 vnpy 相关文件夹的路径及您的 CTP 账号密码等信息,您可以在 simnow 官网 申请实盘模拟账号。
配置项的使用与 RQAlpha 其他 mod 无异

"vnpy": {
    # 您需要接入的接口,目前仅支持 CTP
    "gateway_type": "CTP",
    # VN.PY 项目目录下有一个 vn.trader 文件夹,您需要把该文件夹的路径填到此处
    "vn_trader_path": None,
    # 您使用 simnow 模拟交易时可以选择使用24小时服务器,该服务器允许您在收盘时间测试相关 API,如果您需要全天候测试,您需要开启此项。
    "all_day": True,
    # VN.PY 创建临时文件的目录
    "temp_path": "./vnpy_temp",
    # 以下是您的 CTP 账户信息,由于您需要将密码明文写在配置文件中,您需要注意保护个人隐私。
    "CTP": {
        "userID": "",
        "password": "",
        "brokerID": "9999",
      	"tdAddress": "tcp://180.168.146.187:10030",
      	"mdAddress": "tcp://180.168.146.187:10031",
    },
}

开箱即用虚拟机

为了让用户能够在最短时间内体验 rqapha-mod-vnpy,免去繁琐的环境配置和接口编译,作者提供了开箱即用的虚拟机镜像。

有关虚拟机镜像的导入以及 rqalpha 的调试和运行,您可以参考 rqalpha 文档

点此下载

体验 rqalpha-mod-vnpy

  • 双击打开桌面上的 rqalpha_vnpy_test.py 文件,在配置文件对应位置填入您的 simnow userID 和密码

  • 打开终端,依次输入如下命令:

cd /home/rqalpha_user/桌面

source activate py2

python rqalpha_vnpy_test.py

FAQ

  • 为什么策略在初始化期间停滞了几十秒甚至数分钟?

    程序在启动前,需要从 CTP 获取 Instrument 和 Commission 等数据,由于CTP控流等原因,像 CTP 发送大量请求会占用很长时间。您可以将 log_level 设置成 verbose 来查看详细的回调函数执行情况。未来可能会考虑开放设置是否全量更新 commission 信息以换取更快的启动速度。*

  • 为什么我在RQAlpha中查询到的账户、持仓信息与我通过快期、vn.trader 等终端查询到的不一致?

    本 mod 会尽力将您的账户信息恢复至 RQAlpha 中,但由于计算逻辑的不同,可能会导致各个终端显示的数字有差异,另外您通过其他终端下单交易也有可能导致数据同步的不及时。不过这也有可能是程序bug,如果您发现不一致情况严重,欢迎通过Issue的方式向作者提出。*

  • VN.PY 的环境配置和安装比较复杂,我搞不定/懒得搞怎么办?

    作者会尽力研究,争取将VN.PY的安装包含进 mod 中,通过 pip 的形式一键安装,在这之前,作者会提供一个开箱即用虚拟机镜像,供您直接下载使用。*

  • 为什么会报 NotImplementedError?

    请尝试将配置文件中的 frequency 设置为 tick。

  • 我如何在 python3.x 下使用该 mod?

    您可以尝试使用 rqalpha-mod-ctp, 该 mod 实现了 python3.x 的支持。待 rqalpha-mod-ctp 逐步完善后,rqalpha-mod-vnpy 将不再维护。

History

  • 0.9.30
    • 脱离对 vn.py 上层代码的依赖,直接对接 TdApi 和 MdApi 类。
    • 启动时不再因为 vn.py 接口不完整报错。
    • 修复断线重连及账户恢复时的若干 bug。
    • 提升运行效率

rqalpha-mod-vnpy's People

Contributors

cedricporter avatar cuizi7 avatar handsomu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rqalpha-mod-vnpy's Issues

ImportError: No module named account

rqalpha : 3.0.2
rqalpha-mod-vnpy: 0.9.30
vnpy is also the latest;

/usr/bin/python2.7 /home/walker/Desktop/Rqalpha30/rqalpha/startmod.py
Traceback (most recent call last):
File "/home/walker/Desktop/Rqalpha30/rqalpha/rqalpha/main.py", line 195, in run
mod_handler.start_up()
└ <rqalpha.mod.ModHandler object at 0x7faba6b47f90>
File "/home/walker/Desktop/Rqalpha30/rqalpha/rqalpha/mod/init.py", line 68, in start_up
self._mod_dict[mod_name].start_up(self._env, mod_config)
│ │ │ └ {'CTP': {'brokerID': '9999',
'mdAddress': 'tcp://180.168.146.187:10010',
'password': 'FinalicA_0472',
'tdAddress': 'tcp://180...
│ │ └ <rqalpha.mod.ModHandler object at 0x7faba6b47f90>
│ └ u'vnpy'
└ <rqalpha.mod.ModHandler object at 0x7faba6b47f90>
File "/usr/local/lib/python2.7/dist-packages/rqalpha_mod_vnpy/mod.py", line 34, in start_up
from .vnpy_broker import VNPYBroker
File "/usr/local/lib/python2.7/dist-packages/rqalpha_mod_vnpy/vnpy_broker.py", line 20, in
from rqalpha.model.account import BenchmarkAccount, FutureAccount
ImportError: No module named account
2017-08-07 ERROR No module named account
[2017-08-07 11:27:55.326767] ERROR: system_log: 策略运行产生异常
Traceback (most recent call last):
File "/home/walker/Desktop/Rqalpha30/rqalpha/rqalpha/main.py", line 195, in run
mod_handler.start_up()
File "/home/walker/Desktop/Rqalpha30/rqalpha/rqalpha/mod/init.py", line 68, in start_up
self._mod_dict[mod_name].start_up(self._env, mod_config)
File "/usr/local/lib/python2.7/dist-packages/rqalpha_mod_vnpy/mod.py", line 34, in start_up
from .vnpy_broker import VNPYBroker
File "/usr/local/lib/python2.7/dist-packages/rqalpha_mod_vnpy/vnpy_broker.py", line 20, in
from rqalpha.model.account import BenchmarkAccount, FutureAccount
ImportError: No module named account
Traceback (most recent call last):
File "/home/walker/Desktop/Rqalpha30/rqalpha/startmod.py", line 78, in
run_file(strategy_file_path, config_mod1)
│ │ └ {'base': {'accounts': {'future': 100000}, 'start_date': '2016-01-01', 'end_date': '2016-12-01', 'strategy_file': '/home/walker/D...
│ └ '/home/walker/Desktop/Rqalpha30/rqalpha/rqalpha/examples/buy_and_hold.py'
└ <function run_file at 0x7faba71fcc80>
File "/home/walker/Desktop/Rqalpha30/rqalpha/rqalpha/init.py", line 97, in run_file
return main.run(config)
│ └ {'base': {'accounts': {'FUTURE': 100000.0},
'benchmark': None,
'data_bundle_path': '/home/walker/.rqalpha/bundle',
'end_date'...
└ <module 'rqalpha.main' from '/home/walker/Desktop/Rqalpha30/rqalpha/rqalpha/main.pyc'>
File "/home/walker/Desktop/Rqalpha30/rqalpha/rqalpha/main.py", line 317, in run
mod_handler.tear_down(code, user_exc)
│ │ └ CustomException()
│ └ EXIT_CODE.EXIT_INTERNAL_ERROR
└ <rqalpha.mod.ModHandler object at 0x7faba6b47f90>
File "/home/walker/Desktop/Rqalpha30/rqalpha/rqalpha/mod/init.py", line 73, in tear_down
ret = self._mod_dict[mod_name].tear_down(*args)
│ │ │ └ (EXIT_CODE.EXIT_INTERNAL_ERROR, CustomException())
│ │ └ u'vnpy'
│ └ <rqalpha.mod.ModHandler object at 0x7faba6b47f90>
└ None
File "/usr/local/lib/python2.7/dist-packages/rqalpha_mod_vnpy/mod.py", line 55, in tear_down
self._gateway.exit()
└ <rqalpha_mod_vnpy.mod.VNPYMod object at 0x7faba6b35f10>
AttributeError: 'NoneType' object has no attribute 'exit'

Process finished with exit code 1

测试发单时候系统报错退出

image

RQA设置的LimitOrder在发出时实际变成了MarketOrder,并且一发单就自动撤单了。

合约
测试代码如下:

`def init(context):
context.s1 = "IF1705"
#subscribe(context.s1)
subscribe(context.s1)
logger.info("Interested in: " + str(context.s1))
context.counter = 0
context.order = None
context.vwap = 0
context.multiplier = instruments(context.s1).contract_multiplier

def before_trading(context):
print('************* BEFORE TRADING***********')
print('GET OPEN ORDERS {}'.format(get_open_orders()))
p_print(context)

def p_print(context):
print('PORTFOLIO TOTAL VALUE{}, UAV {}, CASH{}, COST{}'.format(context.portfolio.total_value,
context.portfolio.unit_net_value,
context.portfolio.cash,
context.portfolio.transaction_cost))
print('ACCOUNT CASH{}, HOLDING PNL{}, REALIZED PNL{}, BUY MARGIN{}, '
'SELL MARGIN{}, MARGIN{}, FROZEN_CASH{}, TOTAL_VALUE {}'.format(context.portfolio.future_account.cash,
context.portfolio.future_account.holding_pnl,
context.portfolio.future_account.realized_pnl,
context.portfolio.future_account.buy_margin,
context.portfolio.future_account.sell_margin,
context.portfolio.future_account.margin,
context.portfolio.future_account.frozen_cash,
context.portfolio.future_account.total_value))

def handle_tick(context, tick):
context.counter += 1
if tick.volume != 0:
context.vwap = tick.total_turnover / (tick.volume * context.multiplier)
else:
context.vwap = tick.last

if context.counter % 100 == 0:

    print('COUNTER {},  VWAP {}, LAST {}, VOLUME {}, TURNOVER {}'.format(
          context.counter,  context.vwap, tick.last, tick.volume, tick.total_turnover))
    print('*******************BUY OPEN NOW****************')

    p_print(context)
    context.order = buy_open(context.s1, 1, LimitOrder(3500))


if context.counter % 150 == 0:

    print('COUNTER {},  VWAP {}, LAST {}, VOLUME {}, TURNOVER {}'.format(
          context.counter,  context.vwap, tick.last, tick.volume, tick.total_turnover))
    print('SELL CLOSE NOW *****************')
    sell_close(context.s1, 1, LimitOrder(3300))
    p_print(context)

`

数据和交易解耦

分离数据和交易部分,在使用 rqalpha-mod-vnpy 的时候数据和事件不一定要通过 vnpy 获得,应允许替换数据源和事件源。

适配 vnpy 新版本

vnpy 这两天提交了不少新代码,改动比较大,rqalpa-mod-vnpy 也需要做相应的适配。

脱离 vtGateway

由于 vtGateway 的封装程度比较高,一些函数的封装不适用于rqalpha。故决定尝试脱离 vtGateway,参照 vtGateway 的模式重写 gateway。

运行vnpy mod时报错

rqalpha version: 2.0.7
rqalpha_mod_vnpy version: 0.9.11
使用pycharm运行;

今天又没有这个错误了 。

Exception in thread Thread-7:
Traceback (most recent call last):
File "C:\APPS\Anaconda4_32\lib\threading.py", line 801, in __bootstrap_inner
self.run()
File "C:\APPS\Anaconda4_32\lib\threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "C:\vnpy\vn.trader\eventEngine.py", line 218, in __run
self.__process(event)
File "C:\vnpy\vn.trader\eventEngine.py", line 228, in __process
[handler(event) for handler in self._handlers[event.type]]
File "C:\LocalRqalpha\rqalpha\rqalpha\mod\rqalpha_mod_vnpy\vnpy_engine.py", line 254, in
self.event_engine.register(EVENT_ERROR, lambda e: system_log.error(e['data']))
AttributeError: Event instance has no attribute 'getitem'

获取当前持仓的市场行情出错

账户中有股指期货的仓位。在早晨9点商品开盘的时候,获取股指行情出错。
`
[2017-05-05 09:00:45.451757] ERROR: system_log: Cannot find such tick whose order_book_id is IF1705
Traceback (most recent call last):
File "/media/psf/Home/rqalpha/rqalpha/main.py", line 209, in run
env.portfolio = broker.get_portfolio()
│ └ <rqalpha_mod_vnpy.vnpy_broker.VNPYBroker object at 0x7fe49f38eb50>
└ <rqalpha.environment.Environment object at 0x7fe4ad1ed410>
File "/media/psf/Home/rqalpha-mod-vnpy/rqalpha_mod_vnpy/vnpy_broker.py", line 68, in get_portfolio
return self.gateway.get_portfolio()
└ <rqalpha_mod_vnpy.vnpy_broker.VNPYBroker object at 0x7fe49f38eb50>
File "/media/psf/Home/rqalpha-mod-vnpy/rqalpha_mod_vnpy/ctp/gateway.py", line 93, in get_portfolio
future_account = self.cache.account
└ <rqalpha_mod_vnpy.ctp.gateway.CtpGateway object at 0x7fe49f38b150>
File "/media/psf/Home/rqalpha-mod-vnpy/rqalpha_mod_vnpy/ctp/data_cache.py", line 115, in account
holding_pnl = sum(position.holding_pnl for position in six.itervalues(ps))
│ └ {'CU1705': FuturePosition({'sell_old_quantity': 1, 'contract_multiplier': 5.0, 'last_price': 44960.0, 'buy_pnl': -3850.0, 'buy_r...
└ <module 'six' from '/home/cui/anaconda2/envs/rqa/lib/python2.7/site-packages/six.pyc'>
File "/media/psf/Home/rqalpha-mod-vnpy/rqalpha_mod_vnpy/ctp/data_cache.py", line 115, in
holding_pnl = sum(position.holding_pnl for position in six.itervalues(ps))
│ │ └ <module 'six' from '/home/cui/anaconda2/envs/rqa/lib/python2.7/site-packages/six.pyc'>
│ └ FuturePosition({'sell_old_quantity': 0, 'contract_multiplier': 300.0, 'last_price': 3383.4, 'buy_pnl': -8039.999999999918, 'buy
...
└ FuturePosition({'sell_old_quantity': 0, 'contract_multiplier': 300.0, 'last_price': 3383.4, 'buy_pnl': -8039.999999999918, 'buy
...
File "/media/psf/Home/rqalpha/rqalpha/model/position/future_position.py", line 133, in holding_pnl
return self.buy_holding_pnl + self.sell_holding_pnl
│ └ FuturePosition({'sell_old_quantity': 0, 'contract_multiplier': 300.0, 'last_price': 3383.4, 'buy_pnl': -8039.999999999918, 'buy_...
└ FuturePosition({'sell_old_quantity': 0, 'contract_multiplier': 300.0, 'last_price': 3383.4, 'buy_pnl': -8039.999999999918, 'buy_...
File "/media/psf/Home/rqalpha/rqalpha/model/position/future_position.py", line 105, in buy_holding_pnl
return (self.last_price - self.buy_avg_holding_price) * self.buy_quantity * self.contract_multiplier
│ │ │ └ FuturePosition({'sell_old_quantity': 0, 'contract_multiplier': 300.0, 'last_price': 3383.4, 'buy_pnl': -8039.999999999918, 'buy_...
│ │ └ FuturePosition({'sell_old_quantity': 0, 'contract_multiplier': 300.0, 'last_price': 3383.4, 'buy_pnl': -8039.999999999918, 'buy_...
│ └ FuturePosition({'sell_old_quantity': 0, 'contract_multiplier': 300.0, 'last_price': 3383.4, 'buy_pnl': -8039.999999999918, 'buy_...
└ FuturePosition({'sell_old_quantity': 0, 'contract_multiplier': 300.0, 'last_price': 3383.4, 'buy_pnl': -8039.999999999918, 'buy_...
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'
2017-05-05 09:00:45.00 ERROR unsupported operand type(s) for -: 'NoneType' and 'float'
[2017-05-05 09:00:45.725248] ERROR: system_log: 策略运行产生异常
Traceback (most recent call last):
File "/media/psf/Home/rqalpha/rqalpha/main.py", line 209, in run
env.portfolio = broker.get_portfolio()
File "/media/psf/Home/rqalpha-mod-vnpy/rqalpha_mod_vnpy/vnpy_broker.py", line 68, in get_portfolio
return self._gateway.get_portfolio()
File "/media/psf/Home/rqalpha-mod-vnpy/rqalpha_mod_vnpy/ctp/gateway.py", line 93, in get_portfolio
future_account = self._cache.account
File "/media/psf/Home/rqalpha-mod-vnpy/rqalpha_mod_vnpy/ctp/data_cache.py", line 115, in account
holding_pnl = sum(position.holding_pnl for position in six.itervalues(ps))
File "/media/psf/Home/rqalpha-mod-vnpy/rqalpha_mod_vnpy/ctp/data_cache.py", line 115, in
holding_pnl = sum(position.holding_pnl for position in six.itervalues(ps))
File "/media/psf/Home/rqalpha/rqalpha/model/position/future_position.py", line 133, in holding_pnl
return self.buy_holding_pnl + self.sell_holding_pnl
File "/media/psf/Home/rqalpha/rqalpha/model/position/future_position.py", line 105, in buy_holding_pnl
return (self.last_price - self.buy_avg_holding_price) * self.buy_quantity * self.contract_multiplier
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'
CThostFtdcUserApiImplBase::OnSessionDisconnected[0x7fe48c0008c8][-830341119][ 0]
CThostFtdcUserApiImplBase::OnSessionDisconnected[0x7fe4900008c8][-830406655][ 0]

`

vnpy在onRtnDepthMarketData的问题

vnpy封装的 onRtnDepthMarketData函数会对volume=0的数据进行过滤。
导致在非交易时段调用subscribe函数没有当前最新快照数据返回,无法计算出portfolio.total_value(举例来说,有股指期货仓位的策略在夜盘时间打印portfolio信息,直接报错退出)。
需要进行改写,或者加入QryDepthMarketData函数。

最新版本rqalpha 出错 ImportError: No module named account

2017-07-01 07:24:33.00 ERROR No module named account
[2017-07-01 07:24:33.068771] ERROR: system_log: 策略运行产生异常
Traceback (most recent call last):
File "//anaconda/lib/python2.7/site-packages/rqalpha/main.py", line 195, in run
mod_handler.start_up()
File "//anaconda/lib/python2.7/site-packages/rqalpha/mod/init.py", line 68, in start_up
self._mod_dict[mod_name].start_up(self._env, mod_config)
File "//anaconda/lib/python2.7/site-packages/rqalpha_mod_vnpy/mod.py", line 34, in start_up
from .vnpy_broker import VNPYBroker
File "//anaconda/lib/python2.7/site-packages/rqalpha_mod_vnpy/vnpy_broker.py", line 20, in
from rqalpha.model.account import BenchmarkAccount, FutureAccount
ImportError: No module named account

启动恢复仓位时出现空仓key error

在每次启动vnpy的时候,系统都会自动查询当前仓位信息加载到RQA中。发现当出现空方向仓位的时候就直接报key error了。查看代码发现data_factory中cache_vnpy_position_before_init函数中的空仓字段写错。不应为sell_position,而应为sell_quantity

我运行vnpy mod报错,具体信息如下:

OS: Ubuntu 16.04
Python 2.7.12
rqalpha-mod-vnpy: 0.9.11
rqalpha: 2.0.9

Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/Vnpy/vnpy/vn.trader/eventEngine.py", line 218, in __run
self.__process(event)
File "/home/Vnpy/vnpy/vn.trader/eventEngine.py", line 228, in __process
[handler(event) for handler in self._handlers[event.type]]
File "/home/RqalphaNew/rqalpha/rqalpha/mod/rqalpha_mod_vnpy/vnpy_engine.py", line 254, in
self.event_engine.register(EVENT_ERROR, lambda e: system_log.error(e['data']))
AttributeError: Event instance has no attribute 'getitem'

Traceback (most recent call last):
File "/home/RqalphaNew/rqalpha/rqalpha/main.py", line 191, in run
mod_handler.start_up()
└ <rqalpha.mod.ModHandler object at 0x7fb9c50f63d0>
File "/home/RqalphaNew/rqalpha/rqalpha/mod/init.py", line 67, in start_up
self._mod_dict[mod_name].start_up(self.env, mod_config)
│ │ │ └ {'commission_multiplier': 1,
'enabled': True,
'matching_type': MATCHING_TYPE.CURRENT_BAR_CLOSE,
'price_limit': True,
'signal...
│ │ └ <rqalpha.mod.ModHandler object at 0x7fb9c50f63d0>
│ └ 'sys_simulation'
└ <rqalpha.mod.ModHandler object at 0x7fb9c50f63d0>
File "/home/RqalphaNew/rqalpha/rqalpha/mod/rqalpha_mod_sys_simulation/mod.py", line 47, in start_up
raise RuntimeError(
("Not supported matching type {}").format(mod_config.matching_type))
│ └ {'commission_multiplier': 1,
'enabled': True,
'matching_type': MATCHING_TYPE.CURRENT_BAR_CLOSE,
'price_limit': True,
'signal...
└ <function gettext at 0x7fb9d118c9b0>
RuntimeError: 不支持撮合类型: MATCHING_TYPE.CURRENT_BAR_CLOSE
0000-00-00 ERROR 不支持撮合类型: MATCHING_TYPE.CURRENT_BAR_CLOSE
[2017-04-11 16:01:00.747647] ERROR: system_log: 策略运行产生异常
Traceback (most recent call last):
File "/home/RqalphaNew/rqalpha/rqalpha/main.py", line 191, in run
mod_handler.start_up()
File "/home/RqalphaNew/rqalpha/rqalpha/mod/init.py", line 67, in start_up
self._mod_dict[mod_name].start_up(self.env, mod_config)
File "/home/RqalphaNew/rqalpha/rqalpha/mod/rqalpha_mod_sys_simulation/mod.py", line 47, in start_up
raise RuntimeError(
("Not supported matching type {}").format(mod_config.matching_type))
RuntimeError: 不支持撮合类型: MATCHING_TYPE.CURRENT_BAR_CLOSE

发送平仓单时针对上期所平今的处理

VNPY的Close只能平上期所昨仓。平今仓需要设置为CloseToday。所以buy_close 以及 sell_close 需要对上期所合约智能识别。举例来说,当前昨仓5,今仓3.当平仓数量为6的时候,按照先进先出的方式,先平昨仓5,后平今仓1,发送2个平仓单。此时函数应返回order list。与此同时,cancel_order API也应当支持对于order list的cancel操作。如果平仓数量为10的时候,则将昨仓5、今仓3分别发送平仓单。

9:26启动策略报 signed integer greater than maximum错误


Traceback (most recent call last):
File "/media/psf/Home/rqalpha/rqalpha/main.py", line 289, in run
Executor(env).run(bar_dict)
│ │ └ BarMap(RB1710)
│ └ <rqalpha.environment.Environment object at 0x7f11239a7410>
└ <class 'rqalpha.core.executor.Executor'>
File "/media/psf/Home/rqalpha/rqalpha/core/executor.py", line 52, in run
for event in self._env.event_source.events(start_date, end_date, frequency):
File "/media/psf/Home/rqalpha-mod-vnpy/rqalpha_mod_vnpy/vnpy_event_source.py", line 131, in events
calendar_dt = parse(''.join((str(tick.date), str(tick.time/1000))))
│ │ └ {'b5_v': 0, 'b4_v': 0, 'limit_down': 2796.0, 'limit_up': 3217.0, 'high': 2954.0, 'b5': 1.7976931348623157e+308, 'b3_v': 0, 'b1':...
│ └ {'b5_v': 0, 'b4_v': 0, 'limit_down': 2796.0, 'limit_up': 3217.0, 'high': 2954.0, 'b5': 1.7976931348623157e+308, 'b3_v': 0, 'b1':...
└ <function parse at 0x7f111c960b18>
File "/home/cui/anaconda2/envs/rqa/lib/python2.7/site-packages/dateutil/parser.py", line 1168, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
│ │ └ {}
│ └ '2017050592628'
└ <dateutil.parser.parser object at 0x7f111ce79050>
File "/home/cui/anaconda2/envs/rqa/lib/python2.7/site-packages/dateutil/parser.py", line 578, in parse
if cday > monthrange(cyear, cmonth)[1]:
File "/home/cui/anaconda2/envs/rqa/lib/python2.7/calendar.py", line 121, in monthrange
day1 = weekday(year, month, 1)
│ │ └ 5
│ └ 2017050592628
└ <function weekday at 0x7f111c956758>
File "/home/cui/anaconda2/envs/rqa/lib/python2.7/calendar.py", line 113, in weekday
return datetime.date(year, month, day).weekday()
│ │ │ └ 1
│ │ └ 5
│ └ 2017050592628
└ <module 'datetime' from '/home/cui/anaconda2/envs/rqa/lib/python2.7/lib-dynload/datetime.so'>
OverflowError: signed integer is greater than maximum
2017-05-05 09:26:28.00 ERROR signed integer is greater than maximum
[2017-05-05 09:26:31.950227] ERROR: system_log: 策略运行产生异常
Traceback (most recent call last):
File "/media/psf/Home/rqalpha/rqalpha/main.py", line 289, in run
Executor(env).run(bar_dict)
File "/media/psf/Home/rqalpha/rqalpha/core/executor.py", line 52, in run
for event in self._env.event_source.events(start_date, end_date, frequency):
File "/media/psf/Home/rqalpha-mod-vnpy/rqalpha_mod_vnpy/vnpy_event_source.py", line 131, in events
calendar_dt = parse(''.join((str(tick.date), str(tick.time/1000))))
File "/home/cui/anaconda2/envs/rqa/lib/python2.7/site-packages/dateutil/parser.py", line 1168, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/home/cui/anaconda2/envs/rqa/lib/python2.7/site-packages/dateutil/parser.py", line 578, in parse
if cday > monthrange(cyear, cmonth)[1]:
File "/home/cui/anaconda2/envs/rqa/lib/python2.7/calendar.py", line 121, in monthrange
day1 = weekday(year, month, 1)
File "/home/cui/anaconda2/envs/rqa/lib/python2.7/calendar.py", line 113, in weekday
return datetime.date(year, month, day).weekday()
OverflowError: signed integer is greater than maximum
`

`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.