Strategi ini disebut
Logika inti dari strategi ini didasarkan pada indikator CHOP, di mana sistem rata-rata bergerak menilai arah tren keseluruhan. Secara khusus, strategi menghitung nilai RSI dari garis cepat (Length = 20) dan garis lambat (Length = 50) pada kerangka waktu yang lebih tinggi, dan menghitung perbedaan antara kedua garis RSI. Ketika RSI garis cepat melintasi di atas RSI garis lambat, itu menandakan tren naik dan memicu sinyal panjang. Sebaliknya, jika RSI garis cepat melintasi di bawah RSI garis lambat, itu menunjukkan tren menurun dan menghasilkan sinyal pendek. Perbedaan RSI yang bervariasi yang didorong oleh kenaikan harga dan dapat secara sensitif mengidentifikasi titik perubahan tren.
Strategi ini juga memperkenalkan mekanisme multi-frame waktu: itu menghitung perbedaan RSI pada kerangka waktu yang lebih tinggi (misalnya harian) untuk menentukan arah tren keseluruhan, dan kemudian mengeksekusi pesanan beli dan jual yang sebenarnya pada kerangka waktu yang lebih rendah (misalnya 5 menit) berdasarkan penilaian tren kerangka waktu yang lebih tinggi.
Solusi:
Strategi ini memanfaatkan divergensi RSI untuk menangkap titik balik potensial tren secara sensitif. Aplikasi multi-frame waktu memastikan menilai tren keseluruhan sambil menjaga eksekusi perdagangan tertentu fleksibel. Dibandingkan dengan strategi tren berikut lainnya, strategi ini lebih mudah, intuitif dalam penyesuaian parameter dan mudah dioptimalkan.
/*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)