Strategi Sinkron Tren Momentum


Tanggal Pembuatan: 2024-01-16 14:10:25 Akhirnya memodifikasi: 2024-01-16 14:10:25
menyalin: 0 Jumlah klik: 818
1
fokus pada
1617
Pengikut

Strategi Sinkron Tren Momentum

Ringkasan

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.

Prinsip Strategi

Indeks Kinesi Relatif (RMI)

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.

Metode RMI

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.

Penghakiman Motivasi

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 tren super

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.

Pilihan arah transaksi

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.

Analisis Keunggulan Strategi

Pengertian momentum dan tren

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.

Analisis siklus waktu

Menggunakan RMI dan indikator supertrend untuk periode yang berbeda, membuat pemahaman tentang tren jangka pendek dan jangka panjang lebih jelas.

Strategi Stop Loss Waktu Nyata

Mekanisme stop loss real-time yang didasarkan pada supertrend, dapat secara efektif mengendalikan kerugian tunggal.

Fleksibilitas dalam arah transaksi

Pilihan untuk melakukan perdagangan plus, minus, atau dua arah memungkinkan strategi ini untuk beradaptasi dengan lingkungan pasar yang berbeda.

Analisis risiko

Parameter yang sulit untuk dioptimalkan

Optimasi parameter seperti RMI dan supertrend rumit, dan pengaturan yang tidak tepat dapat mempengaruhi efektivitas strategi.

Stop loss terlalu dekat dapat menyebabkan terlalu banyak stop loss

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.

Arah optimasi strategi

Optimasi adaptasi multi-varietas

Memperluas jangkauan varietas yang berlaku, mengidentifikasi arah optimasi parameter dari varietas yang berbeda. Memungkinkan strategi untuk direplikasi di lebih banyak pasar.

Optimasi stop loss dinamis

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.

Menambahkan kondisi filter

Dengan lebih banyak indikator penilaian sebagai syarat penyaringan, hindari membangun gudang tanpa sinyal yang jelas.

Meringkaskan

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.

Kode Sumber Strategi
/*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)