将量化投资进行到底
提供专业的量化投资解决方案

AlgoPlus量化投资进阶手册(1)价差交易技术要点

谨以此文献给2019年9月3日所有参与ni2001-ni1911交易的朋友!


2019年9月3日,ni2001以148000开盘,较前一交易日结算价136680上涨8.28%。ni1911以139450开盘,较前一交易日结算价136960上涨1.82%。ni2001与ni1911的价差以罕见的8550开盘,数分钟之后,回归至0以下。

或许如此极端行情不会再出现,这一日必将在所有价差交易者回忆中留下浓墨重彩的一笔。

ni2001 ni1911

 

2019年10月23日更新:

不适宜在回调函数中执行复杂算法,参考OnRtnOrder。同时增加to_dict_raw方法,需要更新AlgoPlus/src/AlgoPlus/utils/base_field.py

2019年10月27日更新:

修正因状态重置不正确导致的不能平仓的问题。

 

技术要点

1、update_buy_spread_open(买开)、update_sell_spread_close(卖平)、update_sell_spread_open(卖开)、update_buy_spread_close(买平)方法调用get_order_price_l1获取报单价格。get_order_price_l1方法实现信号逻辑,满足信号条件则返回报单价格,否则返回None。

2、不适宜在回调函数里做比较耗时的操作,所以将收到的通知转为字典后放入列表中,等待后续处理:

3、根据订单状态的变化调用不同的交易逻辑,on_leg1_traded方法实现腿一成交逻辑,on_leg2_traded方法实现腿二成交逻辑,on_leg1_action方法实现腿一撤单逻辑,on_leg2_action方法实现腿二撤单逻辑:

4、当腿一全部成交/部分成交时,计算腿一成交手数,录入相应手数腿二的报单:

5、当腿二全部成交,计算腿二成交手数:

6、当腿二撤单时,以新价格重新报单:

7、录入报单时,将关键信息保存在本地,收到订单状态通知时更新相关数据:

8、实时监控所有本地订单信息,判断是否需要撤单,with_draw_leg1_order实现腿一撤单请求逻辑,with_draw_leg2_order方法实现腿二撤单请求逻辑,如果所有订单均已成交或者撤单,则重置状态:

9、触发开仓风控时停止开仓交易,触发平仓风控时停止平仓交易:

10、价差相关参数以结构体形式保存,并通过Queue完成初始化。

 

完整代码下载地址:

码云:https://gitee.com/AlgoPlus/AlgoPlus

GitHub:https://github.com/CTPPlus/AlgoPlus

赞(4) 打赏
未经允许不得转载:CTP量化投资技术研究 - AlgoPlus量化投资开源框架 - 将交易进行到底 » AlgoPlus量化投资进阶手册(1)价差交易技术要点
分享到: (0)

评论 抢沙发

评论前必须登录!

 

知者不惑,仁者不忧,勇者不惧

你的认可是我们最大的动力!

微信扫一扫打赏