Strategi ini dinamakan
Logik teras strategi ini adalah berdasarkan kepada penunjuk CHOP, di mana sistem purata bergerak menilai arah trend keseluruhan. Khususnya, strategi ini mengira nilai RSI garis pantas (Length = 20) dan garis perlahan (Length = 50) pada bingkai masa yang lebih tinggi, dan mengira perbezaan antara kedua-dua garis RSI. Apabila RSI garis pantas melintasi di atas RSI garis perlahan, ia menandakan trend menaik dan mencetuskan isyarat panjang. Sebaliknya, jika RSI garis pantas melintasi di bawah RSI garis perlahan, ia menunjukkan trend menurun dan menghasilkan isyarat pendek. Perbezaan RSI yang berbeza didorong oleh kenaikan harga dan dapat mengenal pasti titik perubahan trend dengan sensitif.
Strategi ini juga memperkenalkan mekanisme pelbagai jangka masa: ia mengira perbezaan RSI pada jangka masa yang lebih tinggi (contohnya harian) untuk menentukan arah trend keseluruhan, dan kemudian melaksanakan pesanan beli dan jual sebenar pada jangka masa yang lebih rendah (contohnya 5 minit) berdasarkan penilaian trend jangka masa yang lebih tinggi.
Penyelesaian:
Strategi ini memanfaatkan perbezaan RSI untuk menangkap titik perubahan yang berpotensi pada trend dengan sensitif. Aplikasi pelbagai jangka masa memastikan menilai trend keseluruhan sambil mengekalkan pelaksanaan perdagangan tertentu yang fleksibel. Berbanding dengan strategi trend berikut yang lain, strategi ini lebih mudah, intuitif dalam penyesuaian parameter dan mudah dioptimumkan.
/*backtest start: 2023-11-19 00:00:00 end: 2023-12-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Flow Trend Indicator Strategy", "FlowTI", overlay=true, calc_on_every_tick=true) isTimeFrame(timeFrame) => timeFrame == timeframe.period ? true : false Htf() => isTimeFrame("12") ? "60" : isTimeFrame("60") ? "300" : isTimeFrame("300") ? "D" : isTimeFrame("D") ? "W" : isTimeFrame("W") ? "M" : isTimeFrame("M") ? "5M" : "D" TrendIndication() => trendFastLength = 20 trendSlowLength = 50 upFastHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on) downFastHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on) rsiFastHtf = downFastHtf == 0 ? 100 : upFastHtf == 0 ? 0 : 100 - (100 / (1 + upFastHtf / downFastHtf)) upSlowHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on) downSlowHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on) rsiSlowHtf = downSlowHtf == 0 ? 100 : upSlowHtf == 0 ? 0 : 100 - (100 / (1 + upSlowHtf / downSlowHtf)) rsiDiff = rsiFastHtf - rsiSlowHtf crossover(rsiDiff, 0) ? true : crossunder(rsiDiff, 0) ? false : na if (TrendIndication() == true) strategy.entry("Long", strategy.long) if (TrendIndication() == false) strategy.entry("Short", strategy.short)