Strategy Name: Upgraded Thermostat Strategy
Data cycle: 1H
Support: Commodity Futures, Digital Currency Futures, Digital Currency Spot
- Main chart:
upper track, formula: TOP^^MAC+N_TMPTMP; / / upper track of boll
lower track, formula: BOTTOM^^MAC-N_TMPTMP;//lower track of boll - Secondary chart:
CMI, formula: CMI: ABS(C-REF(C,N_CMI-1))/(HHV(H,N_CMI)-LLV(L,N_CMI))*100;
//0-100 the larger the value, the stronger the trend, CMI <20 is oscillation, CMI>20 is trend
Source code:
(*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 boll BOTTOM^^MAC-N_TMP*TMP;// lower track of boll 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 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; //(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);//MA of RSV D:=SMA(K,M2,1);//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);
Source Code: https://www.fmz.com/strategy/129086