Strategi Segerak Trend Momentum


Tarikh penciptaan: 2024-01-16 14:10:25 Akhirnya diubah suai: 2024-01-16 14:10:25
Salin: 0 Bilangan klik: 818
1
fokus pada
1617
Pengikut

Strategi Segerak Trend Momentum

Gambaran keseluruhan

Strategi sinkronisasi trend dinamik mewujudkan kombinasi yang berkesan antara analisis dinamik dan penghakiman trend dengan mengintegrasikan kelebihan indeks dinamik relatif (RMI) dan indikator trend super. Strategi ini memberi perhatian kepada trend perubahan harga dan tahap dinamik pasaran, dan menilai arah pasaran dari sudut yang lebih menyeluruh.

Prinsip Strategi

Indeks Kinetik Relatif (RMI)

RMI adalah versi yang lebih baik daripada indeks kekuatan relatif (RSI). Ia menggabungkan lebih banyak ciri seperti arah dan magnitud perubahan harga, yang dapat menilai pergerakan pasaran dengan lebih tepat.

Kaedah pengiraan RMI

RMI dikira dengan mengira kenaikan dan penurunan purata dalam tempoh tertentu. Berbeza dengan RSI, RMI menggunakan nilai perubahan harga penutupan hari itu berbanding harga penutupan hari sebelumnya, dan bukan pertumbuhan positif dan pertumbuhan negatif yang mudah.

Penghakiman Motivasi

Strategi ini menggunakan nilai purata RMI dan MFI untuk membandingkan dengan nilai penurunan dinamik positif dan negatif yang diingini untuk menilai tahap dinamik pasaran semasa, untuk membuat keputusan mengenai kedudukan dan kedudukan kosong.

Penunjuk Super Trend

Indikator Super Trend berdasarkan pengiraan kitaran masa yang lebih tinggi, dapat memberikan penilaian terhadap trend besar. Ia akan menyesuaikan parameter ATR dinamik berdasarkan lebar gelombang sebenar, sehingga dapat mengenal pasti titik perubahan trend dengan berkesan.
Strategi ini juga dilengkapi dengan VWMA, yang meningkatkan lagi keupayaan untuk mengenal pasti perubahan trend penting.

Pilihan arah dagangan

Strategi ini mempunyai pilihan untuk melakukan perdagangan lebih banyak, lebih sedikit atau dua hala. Ini membolehkan peniaga menyesuaikan diri secara fleksibel mengikut pandangan pasaran dan keutamaan risiko mereka.

Analisis kelebihan strategi

Pengkajian momentum dan trend

Berbanding dengan strategi yang menggunakan indikator momentum atau indikator trend sahaja, strategi ini mencapai keputusan pergerakan pasaran yang lebih tepat dengan menggabungkan kelebihan RMI dan indikator super trend.

Analisis kitaran masa

Menggunakan RMI dan indikator trend super untuk tempoh yang berbeza, menjadikan trend jangka pendek dan jangka panjang lebih jelas.

Strategi Hentikan Kerugian Dalam Masa Nyata

Mekanisme Hentian Kerosakan Masa Nyata yang berasaskan Supertrend, dapat mengawal kerugian tunggal dengan berkesan.

Arah perdagangan fleksibel

Pilihan untuk berdagang lebih banyak, lebih rendah, atau dua hala membolehkan strategi ini menyesuaikan diri dengan keadaan pasaran yang berbeza.

Analisis risiko

Parameter sukar untuk dioptimumkan

Optimasi parameter seperti RMI dan Super Trend adalah rumit, dan penyesuaian yang tidak betul boleh menjejaskan kesan strategi.

Stop loss terlalu dekat boleh menyebabkan terlalu banyak stop loss

Terlalu sensitif terhadap turun naik pasaran dalam kitaran kecil, menyebabkan masalah terlalu kerap dengan hentikan kerugian.

Penyelesaian: Pelancaran yang sesuai untuk menghentikan kerugian, atau menggunakan cara menghentikan kejutan lain.

Arah pengoptimuman strategi

Optimumkan adaptasi pelbagai jenis

Memperluas julat varieti yang boleh digunakan, mengenal pasti arah pengoptimuman parameter untuk varieti yang berbeza. Membolehkan strategi untuk disalin di lebih banyak pasaran.

Pengoptimuman stop loss dinamik

Penambahan mod hentian dinamik, membolehkan garis hentian untuk lebih baik mengesan gelombang semasa, mengurangkan hentian berlebihan yang disebabkan oleh gegaran kecil.

Tambah syarat penapisan

Dengan lebih banyak pengukuran, anda boleh memilih untuk mengelakkan penempatan tanpa isyarat yang jelas.

ringkaskan

Strategi ini mencapai penilaian keadaan pasaran yang tepat melalui gabungan RMI dan indikator trend super. Ia juga agak baik dalam mengawal risiko. Dengan pengoptimuman yang mendalam, ia dipercayai akan menjadi lebih baik dalam pelbagai varieti dan pelbagai kitaran.

Kod 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)