Strategi RMI Trend Sync secara berkesan menggabungkan kekuatan Indeks Momentum Relatif (RMI) dan penunjuk Super Trend untuk merealisasikan integrasi analisis momentum dan penghakiman trend. Dengan memantau trend perubahan harga dan tahap momentum pasaran secara serentak, strategi menentukan trend pasaran dari perspektif yang lebih komprehensif.
RMI adalah versi dipertingkatkan Indeks Kekuatan Relatif (RSI). Ia menggabungkan lebih banyak ciri perubahan harga seperti arah dan besar untuk mengukur momentum pasaran dengan lebih tepat.
Kaedah pengiraan RMI adalah: mula-mula mengira keuntungan purata dan kerugian purata dalam tempoh tertentu. Tidak seperti RSI, RMI menggunakan perubahan antara harga penutupan semasa dan harga penutupan sebelumnya, dan bukannya pertumbuhan positif dan negatif yang mudah. Kemudian membahagikan keuntungan purata dengan kerugian purata dan menormalkan nilai untuk sesuai dalam skala 0-100.
Strategi ini menggunakan nilai purata RMI dan MFI untuk membandingkan dengan ambang momentum positif dan negatif yang ditetapkan terlebih dahulu untuk menentukan tahap momentum pasaran semasa untuk keputusan kemasukan dan keluar.
Indikator Super Trend dikira berdasarkan jangka masa yang lebih tinggi, yang dapat memberikan penilaian mengenai trend utama. Ia secara dinamik menyesuaikan parameter berdasarkan ATR turun naik sebenar untuk mengenal pasti pembalikan trend dengan berkesan.
Strategi ini juga menggabungkan Purata Bergerak Bertimbang Volume (VWMA) untuk meningkatkan lagi keupayaannya untuk mengesan perubahan trend yang penting.
Strategi ini membolehkan memilih perdagangan panjang, pendek atau dua hala. Fleksibiliti ini membolehkan peniaga menyesuaikan diri dengan pandangan pasaran dan selera risiko mereka.
Berbanding dengan strategi yang hanya bergantung pada petunjuk momentum atau trend, strategi ini mencapai pengenalan trend pasaran yang lebih tepat melalui penggabungan kekuatan RMI dan Super Trend.
Penggunaan RMI dan Super Trend dalam jangka masa yang berbeza membawa kepada pemahaman yang lebih tepat mengenai kedua-dua trend jangka pendek dan jangka panjang.
Mekanisme stop loss masa nyata berdasarkan Super Trend dapat dengan berkesan mengehadkan kerugian setiap perdagangan.
Pilihan antara perdagangan panjang, pendek atau dua hala membolehkan strategi ini disesuaikan dengan persekitaran pasaran yang berbeza.
Pengoptimuman untuk parameter seperti RMI dan Super Trend agak rumit. tetapan yang tidak sesuai boleh melemahkan prestasi strategi.
Menjadi terlalu sensitif terhadap turun naik kecil boleh menyebabkan pemicu stop loss yang berlebihan.
Penyelesaian: Luangkan julat stop loss dengan sewajarnya atau gunakan kaedah stop loss lain berdasarkan turun naik.
Memperluas aset yang berkenaan dan mengenal pasti arah pengoptimuman parameter untuk aset yang berbeza, untuk membolehkan replikasi yang lebih luas di lebih banyak pasaran.
Memasukkan mekanisme stop loss dinamik untuk mengesan gelombang swing semasa dengan lebih baik dan mengurangkan stop loss yang berlebihan yang disebabkan oleh retracements kecil.
Tambah pertimbangan dari lebih banyak penunjuk sebagai keadaan penapis untuk mengelakkan memasuki kedudukan tanpa isyarat yang jelas.
Melalui gabungan RMI dan Super Trend yang bijak, strategi ini merealisasikan penilaian keadaan pasaran yang tepat. Ia juga cemerlang dalam kawalan risiko. Dengan pengoptimuman mendalam, dipercayai bahawa prestasinya di lebih banyak aset dan jangka masa akan menjadi semakin luar biasa.
/*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)