vn.py官网
开源量化社区
Member
avatar
加入于:
帖子: 4
声望: 0

以下为仿真的日志

description

algo(start_short_algo or start_long_algo)的参数设置为:
max_pos = 1,
payup = 10,
interval = 3

有三个问题想请教一下
1)SpreadTaker_000001,SpreadTaker_000002在启动后没有发出任何委托。这是什么原因?
2)SpreadTaker_000003先发出了hc(主动腿)的委托,随即成交,但是为什么没有发出rb(被动腿)的委托?
3)我将on_order函数写下如下形式,但没有生成任何log,请问是什么原因?
def on_order(self, order: OrderData):
"""
Callback when order status is updated.
"""
self.write_log(f'[{self.strategy_name}]order_info:{order}')

Administrator
avatar
加入于:
帖子: 4997
声望: 292
  1. 价差满足条件,算法才会发出委托
  2. 你这里是在用价差策略去启动算法?请检查下是否策略把算法给停止了
Member
avatar
加入于:
帖子: 4
声望: 0

用Python的交易员 wrote:

  1. 价差满足条件,算法才会发出委托
  2. 你这里是在用价差策略去启动算法?请检查下是否策略把算法给停止了

1已经明白是什么问题了。
2每次on_spread_tick会先stop_all_algo。
还有个问题就是,为什么价差满足条件后,算法只发出hc的委托,而不发出rb的委托。

Member
avatar
加入于:
帖子: 3033
声望: 174

不清楚你策略的具体逻辑了,可能要自己对照排查了

Member
avatar
加入于:
帖子: 4
声望: 0

xiaohe wrote:

不清楚你策略的具体逻辑了,可能要自己对照排查了

看了vnpy\vnpy\app\spread_trading\algo.py中的on_tick的逻辑,发现是因为价差满足条件后,先发出active_leg的委托,在下一个tick发出passive_leg的委托,而我的策略中在每个tick开始的时候,都会stop_all_algo。
由此诞生了一个疑问,为什么设计成在前后两个tick分别发出两条腿的委托,而非在同一个tick发出两条腿的委托,其中的原因是什么?感谢解答。

Member
avatar
加入于:
帖子: 3033
声望: 174

通常主动腿都是流动性较差的那一个,价差模块是先发出了主动腿委托,在收到其成交回报后,再立即发出被动退的委托。
两个同时下很容易瘸腿吧
https://www.vnpy.com/forum/topic/3122-vn-pyfa-bu-v2-0-7-jie-chai-jiao-yi

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3

沪公网安备 31011502017034号