
Strategi sinkronisasi tren dinamika mengintegrasikan keuntungan dari indeks dinamika relatif (RMI) dan indikator tren super, yang memungkinkan kombinasi efektif antara analisis dinamika dan penilaian tren. Strategi ini memperhatikan tren perubahan harga dan tingkat dinamika pasar, serta menilai arah pasar dari perspektif yang lebih menyeluruh.
RMI adalah versi yang lebih baik dari indeks kekuatan relatif (RSI). Ini menggabungkan lebih banyak fitur seperti arah dan besarnya perubahan harga, sehingga dapat lebih akurat menilai pergerakan pasar.
RMI dihitung dengan menghitung kenaikan rata-rata dan penurunan rata-rata dalam periode tertentu. Berbeda dengan RSI, RMI menggunakan nilai perubahan harga penutupan hari itu terhadap harga penutupan hari sebelumnya, bukan pertumbuhan positif dan pertumbuhan negatif yang sederhana.
Strategi ini menggunakan nilai rata-rata RMI dan MFI untuk membandingkan dengan prediksi penurunan momentum positif dan penurunan momentum negatif untuk menilai tingkat momentum pasar saat ini, untuk menentukan posisi yang akan dibuat dan posisi yang akan dihapus.
Indikator supertrend berdasarkan perhitungan periode waktu yang lebih tinggi, dapat memberikan penilaian terhadap tren besar. Ia akan menyesuaikan parameter ATR dinamis berdasarkan lebar gelombang riil, sehingga secara efektif mengidentifikasi titik-titik perubahan tren.
Strategi ini juga dilengkapi dengan volume-weighted average linear VWMA, yang meningkatkan kemampuan untuk mengidentifikasi perubahan tren penting.
Strategi ini dapat dipilih untuk melakukan perdagangan plus, minus, atau dua arah. Ini memungkinkan pedagang untuk menyesuaikan secara fleksibel sesuai dengan pandangan pasar dan preferensi risiko mereka sendiri.
Strategi ini memberikan penilaian yang lebih akurat tentang pergerakan pasar dengan mengintegrasikan keuntungan dari RMI dan indikator supertrend dibandingkan dengan strategi yang hanya menggunakan indikator momentum atau indikator tren.
Menggunakan RMI dan indikator supertrend untuk periode yang berbeda, membuat pemahaman tentang tren jangka pendek dan jangka panjang lebih jelas.
Mekanisme stop loss real-time yang didasarkan pada supertrend, dapat secara efektif mengendalikan kerugian tunggal.
Pilihan untuk melakukan perdagangan plus, minus, atau dua arah memungkinkan strategi ini untuk beradaptasi dengan lingkungan pasar yang berbeda.
Optimasi parameter seperti RMI dan supertrend rumit, dan pengaturan yang tidak tepat dapat mempengaruhi efektivitas strategi.
Terlalu sensitif terhadap pergerakan pasar dalam periode kecil dapat menyebabkan masalah stop loss yang terlalu sering.
Solusi: Mengurangi jangkauan kerusakan dengan tepat, atau menggunakan metode kerusakan yang lain.
Memperluas jangkauan varietas yang berlaku, mengidentifikasi arah optimasi parameter dari varietas yang berbeda. Memungkinkan strategi untuk direplikasi di lebih banyak pasar.
Penambahan mode stop-loss dinamis, sehingga stop-loss line dapat lebih baik melacak gelombang saat ini, mengurangi stop-loss berlebihan yang disebabkan oleh getaran kecil.
Dengan lebih banyak indikator penilaian sebagai syarat penyaringan, hindari membangun gudang tanpa sinyal yang jelas.
Strategi ini melalui kombinasi yang cerdik dari RMI dan indikator tren super, mencapai penilaian kondisi pasar yang akurat. Strategi ini juga cukup baik dalam pengendalian risiko. Dengan pengoptimalan yang mendalam, percaya bahwa kinerjanya akan menjadi lebih baik di beberapa varietas dan beberapa siklus.
/*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)