本文主要说说VNPY的价差模块的简单使用,至于自开发算法什么暂不涉及。
VNPY提供价差交易模块,其实还是挺好用的,先说说使用,再说说代码。进入之后的界面如下图:
使用思路:
- - 定义价差组合:定义一组价差组合,可以是一个主动腿,一个或者多个被动腿
|- -指定针对价差组合算法,系统默认是Sniper交易算法,VNPY提供算法模板,可以自己新增
|-- 针对Sniper算法,选择模式,和填入参数。这个在后面细说。
价差组合定义文件在VnTrader/ST_setting.json
实例代码如下:
[ { "name": "rb.1910-2001", "activeLeg": { "vtSymbol": "rb1910", "ratio": 1, "multiplier": 1.0, "payup": 2 }, "passiveLegs": [ { "vtSymbol": "rb2001", "ratio": -1, "multiplier": -1.0, "payup": 2 } ] }]
其中name是定义名称
activeLeg定义主动腿,passiveLegs填入被动腿,其中被动腿是队列,可以填入多个。
-- vtSymbol:指定期货品种
-- ratio:这个有点绕,是针对量Volume的比例,如果是1,就是rb1910直接的买卖量,如果是2的话,就是原理买卖量处于2的取整。
如上图所示,价差的买量和卖量其实是两个腿的期货可交易报单量取较小值。比如rb1910买量是3.0,rb2001是2.0,而且ratio都是1;那么价差就是较小值2.0。
同样,买入和计算持仓的时候,也会如此。
-- Multipier:这个是针对价格price的比例,就很好理解了。
-- payup: 这个是发单报价,是直接按照触发价格,还是加上一点,比如触发多单价格是3400,payup是2,那么报单价格是3402。
Sniper算法的参数:
首先看看下图,是6月20一日的价差走势,基本在价差上下限在258 / 245, 那么思路就是差值在245时候,应该反身扩大回去,到249这样位置,258时候反身回到253。
那么在sinper参数可以这样定义:
-- 模式:双向,多空都做
-- Buy price/ Sell price:这里填入都是差值,245看多,249平仓
-- Short price/ cover price: 258 差值看空,253空仓。
代码分析后面再写吧。。。