手动交易

假设当前豆油期货价差合约买价为408,卖价为420,并且在大周期上,价差围绕0上下波动。

价差交易的盈利在于高抛低吸,即在低位,如-300买入豆油期货价差合约,在高位,如+800卖出价差合约,平仓获利离场。由于不能立刻成交,所以其默认执行算法SpreadTaker(主动对价成交算法)会每隔一段时间进行委托操作,一般是以超价的限价单的形式发出委托。

下面通过2个例子,分别是发出委托立即成交和发出委托等待成交来具体介绍手动交易的操作情况:

发出委托立即成交

假设目标价差合约价格为425,我们以超价5元的形式,即430的价位发出买入限价单,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/spread_trading/2-7.png

由于限价单(430)价位高于当前卖价(420),所以委托立刻成交,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/spread_trading/8.png

此时各监控组件状态如下所示:

  • 日志组件

    • 买入y_05_09价差合约的顺序是:发出y2205多头委托 -> y2205委托成交 -> 发出y2209空头委托 -> y2209委托成交。价差交易必须遵循的逻辑是主动腿成交后,才去用被动腿来对冲头寸,并且对冲必须尽可能及时。这也为什么一般被动腿选择较为活跃合约的原因。
  • 价差组件

    • 买入1手豆油期货价差合约成交后,【净仓】从0变成1。实际上,VN Trader【持仓】组件显示,y2205合约多头持仓1手,y2209合约空头持仓1手。
  • 算法组件

    • 本次委托SpreadTaker算法执行情况:成交数量1手,委托状态是【全部成交】。

发出委托等待成交

以400的价位发出限价买入指令,由于当前买价卖价分别位于412和426,所以委托状态显示【未成交】,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/spread_trading/9.png

此时各监控组件状态如下所示:

  • 日志组件

    • 本次算法即SpreadTaker_000002已经启动,但由于价格没有触发到目标价位,算法在循环读秒中处于等待状态;
  • 算法组件

    • 委托状态为【未成交】,要结束算法只需鼠标双击【SpreadTaker_000002】单元格即可。

仅当卖价低于-300时,才出发该限价单,已超价5元,即-295去主动成交。

撤销委托

鼠标双击【SpreadTaker_000002】单元格,即可结束该算法。此时【日志】组件输出“算法已停止”,【算法】组件显示委托状态由【未成交】变成【已撤销】,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/spread_trading/10.png