Loading ...

恒温器策略在发明者量化平台的实践与应用

Author: mindrainbow, Created: 2019-07-20 14:34:05, Updated: 2019-07-20 21:23:05

为什么叫它恒温器。我们根据其在市场,震荡和趋势两种模式下转换和交易的适应能力来命名这个系统。该系统源自我们对特定系统在特定市场领域的成功的观察。此系统可以创建具有双重性质的策略来充分利用市场的两种模式。

首先,我们创建一个函数来帮助确定市场模式。根据此函数的输出,恒温器从跟随模式切换到短期摆动模式。

趋势跟踪模式使用类似于布林带中的趋势跟踪机制。短期摆动系统是一个包含模式识别的开放式突破。此函数比较市场徘徊的距离和市场行进的实际距离:

Abs(收盘价 - 收盘价[29])/(最高价(30)- 最低价(低价,30日)* 100

该函数生成0到100之间的值。值越大,当前市场的拥挤程度越小。如果函数返回的值小于20,则系统进入短期摆动模式。

基本上,市场大部分都在展示一个摆动动作,系统试图抓住波动并从中获取微薄的利润。恒温器试图通过买入/卖出小市场冲动来实现这一壮举。如果波动足够大,那么系统会切换模式。

通过对短期波动的深入分析,我们发现有时候买入比卖出更好,反之亦然。这些时候可以通过简单的视觉模式来确定。如果今天的收盘价高于昨天的高点,低点和收盘价(也称为当天的关键点),那么我们认为明天的市场行动可能会看跌。然而,如果今天的收盘价低于昨天的高点,低点和收盘价的平均值,那么今天的市场可能会看涨。我们将这些时候分类为更容易买入和卖出的价位。

在发明者量化平台,恒温器策略是一个非常流行的策略,用户根据自己的需求,添加一些额外的交易逻辑,使得策略表现更加优秀,以下是一个恒温器策略在发明者量化平台的典型框架:

  • 主图: 上轨公式:TOP^^MAC+N_TMPTMP;//布林通道上轨 下轨公式:BOTTOM^^MAC-N_TMPTMP;//布林通道下轨

  • 副图: CMI公式:CMI:ABS(C-REF(C,N_CMI-1))/(HHV(H,N_CMI)-LLV(L,N_CMI))*100;//0-100 取值越大,说明趋势越强,CMI<20震荡模式,CMI>20为趋势

  • 代码(My语言):


MAC:=MA(CLOSE,N);
TMP:=STD(CLOSE,N);
TOP^^MAC+N_TMP*TMP;      // 布林通道上轨
BOTTOM^^MAC-N_TMP*TMP;   // 布林通道下轨
BBOLL:=C>MAC;
SBOLL:=C<MAC;
N_CMI:=30;

CMI:ABS(C-REF(C,N_CMI-1))/(HHV(H,N_CMI)-LLV(L,N_CMI))*100; //0-100 取值越大,说明趋势越强,CMI<20震荡模式,CMI>20为趋势

N_KD:=9;
M1:=3;
M2:=3;
RSV:=(CLOSE-LLV(LOW,N_KD))/(HHV(HIGH,N_KD)-LLV(LOW,N_KD))*100; //收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值。

K:=SMA(RSV,M1,1); //RSV的移动平均值
D:=SMA(K,M2,1);   //K的移动平均值
MIND:=30;
BKD:=K>D AND D<MIND;
SKD:=K<D AND D>100-MIND;

// 震荡模式
BUYPK1:=CMI < 20 AND BKD;  //震荡多单买平开
SELLPK1:=CMI < 20 AND SKD; //震荡空单卖平开

// 趋势模式下原有震荡持仓的处理
SELLY1:=REF(CMI,BARSBK) < 20 AND C>BKPRICE*(1+0.01*STOPLOSS*3) AND K<D; //震荡多单止盈
BUYY1:=REF(CMI,BARSSK) < 20 AND C<SKPRICE*(1-0.01*STOPLOSS*3) AND K>D;  //震荡空单止盈

// 趋势模式
BUYPK2:=CMI >= 20 AND C > TOP;        // 趋势多单买平开
SELLPK2:=CMI >= 20 AND C < BOTTOM;    // 趋势空单卖平开

// 趋势模式下原有震荡持仓的处理
SELLY2:=REF(CMI,BARSBK) >= 20 AND C>BKPRICE*(1+0.01*STOPLOSS*3) AND SBOLL;//趋势多单止盈
BUYY2:=REF(CMI,BARSSK) >= 20 AND C<SKPRICE*(1-0.01*STOPLOSS*3) AND BBOLL;//趋势空单止盈
SELLS2:=REF(CMI,BARSBK) >= 20 AND C<BKPRICE*(1-0.01*STOPLOSS) AND SBOLL;//趋势多单止损
BUYS2:=REF(CMI,BARSSK) >= 20 AND C>SKPRICE*(1+0.01*STOPLOSS) AND BBOLL;//趋势空单止损

IF BARPOS>N THEN BEGIN
    BUYPK1,BPK;
    SELLPK1,SPK;
    BUYPK2,BPK;
    SELLPK2,SPK;
END
BUYY1,BP(SKVOL);
BUYY2,BP(SKVOL);
BUYS2,BP(SKVOL);
SELLY1,SP(BKVOL);
SELLY2,SP(BKVOL);
SELLS2,SP(BKVOL);

该策略回测结果如下:

img img img

更多详情,请参见:https://www.fmz.com/strategy/129086


More