Git Product home page Git Product logo

rqalpha-mod-vnpy's Issues

适配 vnpy 新版本

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

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
`

`

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

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

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

数据和交易解耦

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

脱离 vtGateway

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

最新版本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

vnpy在onRtnDepthMarketData的问题

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

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

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

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

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)

`

运行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 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

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.