Strategi RMI Trend Sync

Penulis:ChaoZhang, Tanggal: 2024-01-16 14:10:25
Tag:

img

Gambaran umum

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.

Prinsip Strategi

Indeks Momentum Relatif (RMI)

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

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.

Penghakiman Momentum

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 Tren Super

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.

Pilihan Arah Perdagangan

Strategi ini memungkinkan untuk memilih perdagangan panjang, pendek atau dua arah. fleksibilitas ini memungkinkan pedagang untuk beradaptasi dengan pandangan pasar dan nafsu risiko mereka.

Analisis Keuntungan

Menggabungkan Momentum dan Analisis Tren

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.

Analisis Multi-Timeframe

Aplikasi RMI dan Super Trend dalam kerangka waktu yang berbeda mengarah pada pemahaman yang lebih tepat dari tren jangka pendek dan jangka panjang.

Stop Loss Waktu Nyata

Mekanisme stop loss real-time berdasarkan Super Trend dapat secara efektif membatasi kerugian per perdagangan.

Arah Perdagangan Fleksibel

Pilihan antara perdagangan panjang, pendek atau dua arah memungkinkan strategi ini untuk beradaptasi dengan lingkungan pasar yang berbeda.

Analisis Risiko

Optimasi Parameter yang Sulit

Pengoptimalan untuk parameter seperti RMI dan Super Trend cukup kompleks. pengaturan yang tidak tepat dapat merusak kinerja strategi.

Stop Loss terlalu ketat

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.

Arahan Optimasi

Adaptasi lintas aset

Memperluas aset yang berlaku dan mengidentifikasi arah optimasi parameter untuk aset yang berbeda, untuk memungkinkan replikasi yang lebih luas di lebih banyak pasar.

Stop Loss Dinamis

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.

Kondisi filter tambahan

Tambahkan penilaian dari lebih banyak indikator sebagai kondisi filter untuk menghindari masuk ke posisi tanpa sinyal yang jelas.

Kesimpulan

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)

Lebih banyak