今天,我们介绍一下期货的多品种交易,这里说的多品种交易,指的是把一个期货交易策略应用到多个期货品种上,而本文中所采用的策略是有关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 条线的有效值也将有所