本文主要介绍了价差交易模块的事件触发机制。感谢‘次第花开’和‘用户名呀’在维恩的派论坛里的分享!
spreadTrading状态机
上图为价差交易的事件触发流。
- stDataEngine: 包括了对各个leg的price,volume的计算;
- ctaEngine在processTickEvent方法中直接调用cta策略中的对应function;
- stEngine中首先在stDataEngine中用processTickEvent,processTradeEvent,processPosEvent三个方法处理eventEnging推送的3个EVENT事件,然后再通过4个EVENT_SPREADTRAND事件通知stAlgoEngine的对应process方法,最后再由stAlgoEngine调用st策略中对应的function(3个update方法);
- stAlgoEngine中的processTimerEvent处理从eventEngine中收到的EVENT_TIMER事件,周期为1秒,以此来作为自动撤单的计时器。
注意
- spread的仓位(longPos,shortPos,netPos) 是指价差做多、做空的,而不是单合约的持仓情况。maxOrderSize, maxPosSize也是同样指spread的。
- trade Mode:
MODE_LONGONLY:
只能做多价差,需要buyPrice < sellPrice;
MODE_SHORTONLY:
只能做空价差,需要shortPrice > coverPrice;
MODE_LONGSHORT:
允许做多或做空价差,则需要同向做多,做空的价位进行区分。例如如果先做多了价差,那么当价格上升到一定价位,应该是要先sell,然后再上升的话就short。
- spread中的四个legAdjusted**
这四个legAdjusted**是根据leg.ratio进行的一个折算,完成了从leg合约到spread的映射。里面有个min( )操作,是为了确保让一个spread中多条leg都能成交。
其他问题
如何在spreadtrading模块中调用实时的五档行情数据?
请参考帖子:
(http://www.vnpie.com/forum.php?mod=viewthread&tid=2268&highlight=spreadtrading)
基于python的开源交易平台开发框架。截止目前,vn.py项目在Github上的Star已经达到5787,量化交易类开源项目第1,量化类项目第3(1、2依旧分别是Zipline和TuShare)。
项目官网:http://www.vnpy.org
论坛地址:www.vnpie.com
知乎专栏:https://zhuanlan.zhihu.com/vn-py
Developed by Traders,
for Traders