主图: 上轨,公式:TOP^^MAC+N_TMP*TMP;//布林通道上轨 下轨,公式:BOTTOM^^MAC-N_TMP*TMP;//布林通道下轨
副图: CMI,公式 : CMI:ABS(C-REF(C,N_CMI-1))/(HHV(H,N_CMI)-LLV(L,N_CMI))*100;//0-100 取值越大,说明趋势越强,CMI<20震荡模式,CMI>20为趋势
(*backtest
start: 2018-11-06 00:00:00
end: 2018-12-04 00:00:00
period: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
*)
MAC:=MA(CLOSE,N);
TMP:=STD(CLOSE,N);
TOP^^MAC+N_TMP*TMP; // 布林通道上轨
// upper track of ball
BOTTOM^^MAC-N_TMP*TMP; // 布林通道下轨
// lower track of ball
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为趋势
// 0-100 the larger the value, the stronger the trend, CMI <20 is oscillation mode, CMI>20 is the trend
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周期最低值做差,两差之间做比值。
// (1)closing price - the lowest of cycle N, (2)the highest of cycle N - the lowest of cycle N, (1)/(2)
K:=SMA(RSV,M1,1); // RSV的移动平均值
// MA of RSV
D:=SMA(K,M2,1); // K的移动平均值
// MA of K
MIND:=30;
BKD:=K>D AND D<MIND;
SKD:=K<D AND D>100-MIND;
// 震荡模式
// oscillation mode
BUYPK1:=CMI < 20 AND BKD; // 震荡多单买平开
// if it's oscillation, buy to cover and buy long immediately
SELLPK1:=CMI < 20 AND SKD; // 震荡空单卖平开
// if it's oscillation, sell to close long position and sell short to open position immediately
// 趋势模式下原有震荡持仓的处理
// Disposal of the original oscillating position under the trend mode
SELLY1:=REF(CMI,BARSBK) < 20 AND C>BKPRICE*(1+0.01*STOPLOSS*3) AND K<D; // 震荡多单止盈
// if it's oscillation, long position take profit
BUYY1:=REF(CMI,BARSSK) < 20 AND C<SKPRICE*(1-0.01*STOPLOSS*3) AND K>D; // 震荡空单止盈
// if it's oscillation, short position take profit
// 趋势模式
// trend mode
BUYPK2:=CMI >= 20 AND C > TOP; // 趋势多单买平开
// if it's trend, buy to cover and buy long immediately
SELLPK2:=CMI >= 20 AND C < BOTTOM; // 趋势空单卖平开
// if it's trend, sell to close long position and sell short to open position immediately
// 趋势模式下原有震荡持仓的处理
// Disposal of the original oscillating position under the trend mode
SELLY2:=REF(CMI,BARSBK) >= 20 AND C>BKPRICE*(1+0.01*STOPLOSS*3) AND SBOLL; // 趋势多单止盈
// if it's trend, long position take profit
BUYY2:=REF(CMI,BARSSK) >= 20 AND C<SKPRICE*(1-0.01*STOPLOSS*3) AND BBOLL; // 趋势空单止盈
// if it's trend, short position take profit
SELLS2:=REF(CMI,BARSBK) >= 20 AND C<BKPRICE*(1-0.01*STOPLOSS) AND SBOLL; // 趋势多单止损
// if it's trend, long position stop loss
BUYS2:=REF(CMI,BARSSK) >= 20 AND C>SKPRICE*(1+0.01*STOPLOSS) AND BBOLL; // 趋势空单止损
// if it's trend, short position stop loss
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);