【从零开始vnpy量化投资】十八. 自动换月与模拟主力连续合约

【从零开始vnpy量化投资】十八. 自动换月与模拟主力连续合约

概述

期货合约与股票有一个比较明显的差异,就是期货合约是有交割时间的,大部分品种是每个月都有一个到期交割的合约,但不是每个合约都有相同的交易量。所以一般我们将同一个品种成交量最大的那个合约叫做主力合约,这类合约由于成交量比较大,使用市价下单的时候买卖价差就会比较小,这样成交的价格会更划算。如果是成交量非常小的月份,比如新产生的最远月的合约,可能一天成交就几百手,买卖挂单的价差会高达几十甚至几百点。
当主力合约交割日越来越近,大部分交易者会将持仓转移到下一个主力合约,对于量化交易的我们来说,这也是需要考虑的事情。如果无法完成自动换月的工作,就需要每隔一段时间人工去调整策略配置同时迁移仓位,这将是一个非常繁琐且容易出错的工作。对开发者而言,正是这类工作,才是值得去开发流程的目标,将人从重复且琐碎的工作中解放出来。

策略换月配置

之前我们编写了两类策略,一类是交易周期非常短的DualThrust策略,一类是交易周期较长的海龟策略。这两种策略的换月步骤也略有区别。下面我们将分别讲解如何将合约切换到下个月。

短期策略

这里的短期策略并不简单指交易周期短的策略,笔者想要定义的短期策略,主要的特征是策略数据文件cta_strategy_data中,除了pos内置变量以外,其他变量都对换月后交易没有任何影响的策略。以笔者的DualThrust策略为例,计算近期ATR和当日开仓点所需要的开盘价都可以通过历史数据直接加载来获取,当日是否开仓可以通过数据库查询当日开仓记录来获取,variables变量中我们也只需要记录当日开仓后的最高价和最低价。

猜你喜欢

转载自blog.csdn.net/u011687355/article/details/131081561