今天,我们介绍一下期货的多品种交易,这里说的多品种交易,指的是把一个期货交易策略应用到多个期货品种上,而本文中所采用的策略是有关RSI的高频趋势策略。这里稍微做下本文中多品种交易思想的说明:对每个不同期货品种的合约,获取其RSI 值,每当有一个期货合约的RSI 值符合相应交易条件时,就对其进行交易。
多品种交易的优点在于可以让我们同时操作多个不同品种,尽可能把握市场中的机会,提高资金使用率,同时也能有效地分散风险。下面就具体说说如何实现基于RSI策略的多品种交易。如果读者需要了解RSI交易策略及相关代码实现,可以查看本文附录。附录中还有本策略的完整代码。
一、多品种交易的框架实现
为了交易不同的期货品种的合约,我们必须先获取并订阅相应不同的合约代码。具体有以下几个步骤,这里只做基本概要,详细代码请查看第二部分:
第一步:在 OnStart 中选择需要交易的期货品种,用 list 来储存
第二步:在 OnMarketQuotationInitial 中根据不同的期货品种获取相应的交易所代码,并进行合约订阅
这样订阅了期货合约之后,在每个合约的 Bar 更新之后,都会执行相关的 OnBar 事件。也就是说只要我们在 OnBar 中完成了交易内容的编写,我们就能对设定的所有品种进行交易,即实现了多品种交易。
二、怎样编写完整的交易策略代码
1、设定要引用的模块
2、在开始事件 OnStart 中设置所需变量并登录交易账号
2.1、由于是针对期货多品种的策略,我们需要一个 list 设定交易所用的期货品种代码, 以及其他四个 list 来分别储存上期所、大商所、郑商所、中金所四个交易所的期货品种代码。这样能方便之后根据需要交易的品种来获取相应的主力合约。另外我们还需要初始化一个期货合约的 list,它将在日内平仓部分中被使用。
2.2、由于本策略需要日内平仓,所以我们在 OnStart 中设置一个闹钟函数,等时间到时会自动触发。闹钟事件的具体内容在 OnAlarm 中编写。
2.3、登录交易账号
3、行情初始化事件 OnMarketQuotationInitial 中根据期货品种获取相应的主力合约代码并订阅需要的行情数据,同时我们需要一个 g.code_list 来存储所有的期货主力合约,在之后的闹钟时间中我们将会使用这个 list 来进行日内平仓操作。在 OnMarketQuotationInitial 中设置这个 list 也保证了它在每天开盘时都会自动更新。
4、在 OnBar 事件中,在获取交易信号(方法见附录)之外,我们还需要取得合约的价格与持仓量,在之后的买卖交易中将使用到这些数据
5、在 OnBar 事件中,我们还需要编写交易操作部分的代码。这里以买开卖平交易为例,每次通过获取开仓信号时,由于是多品种的期货交易,我们必须设置好每个品种的可开仓位,本策略中是把当前资金按每个期货品种等分来计算。之后通过 QuickInsertOrder 函数实现下单。
当卖平信号产生之时,处理就相对简单一些,若持有相应仓位则全部卖平即可,同样使用 QuickInsertOrder 函数实现。
完整的交易代码便如下所示
各位可以参照着编写卖开买平交易方向的代码
6、最后是日内平仓部分,我们在闹钟事件 OnAlarm 中实现它。根据之前在 OnStart 事件中的设置,闹钟会在每天 14:45 分时触发。具体内容是通过遍历所有的期货合约,将其中的未平仓量进行平仓,这里获取仓位的方法不 OnBar 中的方法是相同的。
六、查看回测结果
编写完所有的代码后就可以开始回测来检验策略的效果了,大家可以根据回测结果来调整策略中的参数(包括不同 RSI 值设定的开平仓信号及 RSI 计算周期)
附录:
一、什么是 RSI(相对力度指数)
RSI 全称是相对力度指数(Relative Strength Index),也称相对强弱指数,主要是用来反映市场中买方和卖方力量相对大小的一个指标。目前 RSI 被广泛运用于期货、外汇、股票等众多投资领域的技术分析。它的计算公式如下所示:
RSI: = SMA(MAX(Close − LastClose, 0),N, 1)/SMA(ABS(Close − LastClose),N, 1) ∗ 100
二、RSI 趋势策略详解
RSI 基本在 30 到 70 之间波动。我们可以通过 RSI 指标去判断市场强弱,实行相应的交易操作。判断标准大致如下所示
RSI>50时,强势市场;RSI<50时,弱势市场。
RSI>80时,超买现象,RSI>90时,严重超买。
RSI<20时,超卖现象,RSI<10时,严重超卖。
注意:判断的具体阈值受多因素影响,例如时间长度X,市场行情等
策略核心:利用RSI值确定4条交易信号线(多头开仓、多头平仓、空头开仓、空头平仓)
本文我们利用 RSI 指数来制定期货的趋势跟随交易策略即
1、在 RSI 值较大时认定市场强势,进行买多交易,当 RSI 值回落到一定值后卖平
2、在 RSI 值较小时认定市场弱势,进行卖空交易,当 RSI 值回升到一定值后买平
3、在日内进行平仓,防止隔夜风险
由于 RSI 趋势策略本身含天然止盈止损策略,故本策略不设定止盈止损函数
三、如何获取期货合约的 RSI 值和交易信号在真格量化平台上有获取指标函数 CreateIndicator,其中就有 RSI 指标,使用方式如下
本策略设置的四个交易信号线分别为空头开仓线 25,空头平仓线 60,多头开仓线 70,多 头平仓线 40。即当 RSI 值≥70 时买开,之后当 RSI 值≤40 时卖平;当 RSI 值≤25 时卖开, 之后当 RSI 值≥60 时卖平。
注 1:以上代码均在 OnBar 事件中编写
注 2:若计算周期 X 取值不同,则 4 条线的有效值也将有所不同