Strategi RMI Trend Sync secara efektif menggabungkan kekuatan Relative Momentum Index (RMI) dan indikator Super Trend untuk mewujudkan integrasi analisis momentum dan penilaian tren. Dengan secara bersamaan memantau tren perubahan harga dan tingkat momentum pasar, strategi menentukan tren pasar dari perspektif yang lebih komprehensif.
RMI adalah versi yang ditingkatkan dari Relative Strength Index (RSI). Ini menggabungkan lebih banyak fitur perubahan harga seperti arah dan magnitudo untuk mengukur momentum pasar dengan lebih tepat.
Metode perhitungan RMI adalah: pertama menghitung keuntungan rata-rata dan kerugian rata-rata selama periode tertentu. Tidak seperti RSI, RMI menggunakan perubahan antara harga penutupan saat ini dan harga penutupan sebelumnya, daripada pertumbuhan positif dan negatif sederhana. Kemudian bagi keuntungan rata-rata dengan kerugian rata-rata dan normalkan nilainya agar sesuai dalam skala 0-100.
Strategi ini menggunakan nilai rata-rata RMI dan MFI untuk membandingkan dengan ambang momentum positif dan momentum negatif yang telah ditetapkan sebelumnya untuk menentukan tingkat momentum pasar saat ini untuk keputusan masuk dan keluar.
Indikator Super Trend dihitung berdasarkan jangka waktu yang lebih tinggi, yang dapat memberikan penilaian pada tren utama.
Strategi ini juga menggabungkan Volume Weighted Moving Average (VWMA) untuk lebih meningkatkan kemampuannya untuk mendeteksi pergeseran tren penting.
Strategi ini memungkinkan untuk memilih perdagangan panjang, pendek atau dua arah. fleksibilitas ini memungkinkan pedagang untuk beradaptasi dengan pandangan pasar dan nafsu risiko mereka.
Dibandingkan dengan strategi yang hanya mengandalkan indikator momentum atau tren, strategi ini mewujudkan identifikasi tren pasar yang lebih akurat melalui integrasi kekuatan RMI dan Super Trend.
Aplikasi RMI dan Super Trend dalam kerangka waktu yang berbeda mengarah pada pemahaman yang lebih tepat dari tren jangka pendek dan jangka panjang.
Mekanisme stop loss real-time berdasarkan Super Trend dapat secara efektif membatasi kerugian per perdagangan.
Pilihan antara perdagangan panjang, pendek atau dua arah memungkinkan strategi ini untuk beradaptasi dengan lingkungan pasar yang berbeda.
Pengoptimalan untuk parameter seperti RMI dan Super Trend cukup kompleks. pengaturan yang tidak tepat dapat merusak kinerja strategi.
Menjadi terlalu sensitif terhadap fluktuasi kecil dapat mengakibatkan pemicu stop loss yang berlebihan.
Solusi: Luangkan rentang stop loss dengan tepat atau gunakan metode stop loss berbasis volatilitas lainnya.
Memperluas aset yang berlaku dan mengidentifikasi arah optimasi parameter untuk aset yang berbeda, untuk memungkinkan replikasi yang lebih luas di lebih banyak pasar.
Mengintegrasikan mekanisme stop loss dinamis untuk melacak gelombang swing saat ini dengan lebih baik dan mengurangi stop loss yang berlebihan yang disebabkan oleh retracement kecil.
Tambahkan penilaian dari lebih banyak indikator sebagai kondisi filter untuk menghindari masuk ke posisi tanpa sinyal yang jelas.
Melalui kombinasi yang cerdik dari RMI dan Super Trend, strategi ini mewujudkan penilaian kondisi pasar yang akurat.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // @ presentTrading //@version=5 strategy("RMI Trend Sync - Strategy [presentTrading]", shorttitle = "RMI Sync [presentTrading]", overlay=true ) // ---> Inputs -------------- // Add Button for Trading Direction tradeDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"]) // Relative Momentum Index (RMI) Settings Length = input.int(21, "RMI Length", group = "RMI Settings") pmom = input.int(70, "Positive Momentum Threshold", group = "RMI Settings") nmom = input.int(30, "Negative Momentum Threshold", group = "RMI Settings") bandLength = input.int(30, "Band Length", group = "Momentum Settings") rwmaLength = input.int(20, "RWMA Length", group = "Momentum Settings") // Super Trend Settings len = input.int(10, "Super Trend Length", minval=1, group="Super Trend Settings") higherTf1 = input.timeframe('480', "Higher Time Frame", group="Super Trend Settings") factor = input.float(3.5, "Super Trend Factor", step=.1, group="Super Trend Settings") maSrc = input.string("WMA", "MA Source", options=["SMA", "EMA", "WMA", "RMA", "VWMA"], group="Super Trend Settings") atr = request.security(syminfo.tickerid, higherTf1, ta.atr(len)) TfClose1 = request.security(syminfo.tickerid, higherTf1, close) // Visual Settings filleshow = input.bool(true, "Display Range MA", group = "Visual Settings") bull = input.color(#00bcd4, "Bullish Color", group = "Visual Settings") bear = input.color(#ff5252, "Bearish Color", group = "Visual Settings") // Calculation of Bar Range barRange = high - low // RMI and MFI Calculations upChange = ta.rma(math.max(ta.change(close), 0), Length) downChange = ta.rma(-math.min(ta.change(close), 0), Length) rsi = downChange == 0 ? 100 : upChange == 0 ? 0 : 100 - (100 / (1 + upChange / downChange)) mf = ta.mfi(hlc3, Length) rsiMfi = math.avg(rsi, mf) // Momentum Conditions positiveMomentum = rsiMfi[1] < pmom and rsiMfi > pmom and rsiMfi > nmom and ta.change(ta.ema(close,5)) > 0 negativeMomentum = rsiMfi < nmom and ta.change(ta.ema(close,5)) < 0 // Momentum Status bool positive = positiveMomentum ? true : negativeMomentum ? false : na bool negative = negativeMomentum ? true : positiveMomentum ? false : na // Band Calculation calculateBand(len) => math.min(ta.atr(len) * 0.3, close * (0.3/100)) * 4 band = calculateBand(bandLength) // Range Weighted Moving Average (RWMA) Calculation calculateRwma(range_, period) => weight = range_ / math.sum(range_, period) sumWeightedClose = math.sum(close * weight, period) totalWeight = math.sum(weight, period) sumWeightedClose / totalWeight rwma = calculateRwma(barRange, rwmaLength) colour = positive ? bull : negative ? bear : na rwmaAdjusted = positive ? rwma - band : negative ? rwma + band : na max = rwma + band min = rwma - band longCondition = positive and not positive[1] shortCondition = negative and not negative[1] longExitCondition = shortCondition shortExitCondition = longCondition // Dynamic Trailing Stop Loss vwma1 = switch maSrc "SMA" => ta.sma(TfClose1*volume, len) / ta.sma(volume, len) "EMA" => ta.ema(TfClose1*volume, len) / ta.ema(volume, len) "WMA" => ta.wma(TfClose1*volume, len) / ta.wma(volume, len) upperBand = vwma1 + factor * atr lowerBand = vwma1 - factor * atr prevLowerBand = nz(lowerBand[1]) prevUpperBand = nz(upperBand[1]) float superTrend = na int direction = na superTrend := direction == -1 ? lowerBand : upperBand longTrailingStop = superTrend - atr * factor shortTrailingStop = superTrend + atr * factor // Strategy Order Execution if (tradeDirection == "Long" or tradeDirection == "Both") strategy.entry("Long", strategy.long, when = longCondition) strategy.exit("Exit Long", "Long", when=longExitCondition, stop = longTrailingStop) if (tradeDirection == "Short" or tradeDirection == "Both") strategy.entry("Short", strategy.short, when =shortCondition) strategy.exit("Exit Short", "Short", when=shortExitCondition, stop = shortTrailingStop)