Momentum aliran purata bergerak berbilang tempoh berikutan strategi dagangan

EMA ATR KC SMA LR
Tarikh penciptaan: 2024-11-12 16:35:41 Akhirnya diubah suai: 2024-11-12 16:35:41
Salin: 4 Bilangan klik: 640
1
fokus pada
1617
Pengikut

Momentum aliran purata bergerak berbilang tempoh berikutan strategi dagangan

Gambaran keseluruhan

Ini adalah strategi dagangan kuantitatif yang menggabungkan trend trend rata-rata berkala dan analisis momentum. Strategi ini digunakan untuk perdagangan dengan menggunakan indikator momentum yang menggabungkan garis harian dan garis pusingan dengan menganalisis kombinasi 20-, 50-, 100 dan 200 hari indeks pergerakan rata-rata (EMA). Strategi ini menggunakan ATR Stop Loss, yang memasuki pasaran apabila syarat EMA yang selaras telah dipenuhi, dan untuk menguruskan risiko dengan menetapkan sasaran stop loss dan keuntungan sebanyak ATR.

Prinsip Strategi

Logik teras strategi merangkumi bahagian penting berikut:

  1. Sistem penyelarasan EMA: Memerlukan 20 hari EMA terletak di atas 50 hari EMA, 50 hari EMA terletak di atas 100 hari EMA, dan 100 hari EMA terletak di atas 200 hari EMA, membentuk penyelarasan berbilang kepala yang sempurna.
  2. Sistem pengesahan momentum: Indikator momentum tersuai berdasarkan regresi linear yang dikira secara berkala pada garis waktu dan garis waktu. Indikator momentum ini diukur dengan regresi linear pada tahap penyimpangan harga dari sumbu tengah saluran Keltner.
  3. Sistem kemasukan kembali: Harga perlu disesuaikan kembali ke dalam peratusan yang ditetapkan oleh EMA pada hari ke-20 sebelum dibenarkan masuk, untuk mengelakkan kenaikan harga.
  4. Sistem pengurusan risiko: Tetapkan sasaran stop-loss dan profit dengan menggunakan kelipatan ATR, dengan stop-loss default 1.5 kali ATR, dan profit sasaran 3 kali ATR.

Kelebihan Strategik

  1. Mekanisme pengesahan pelbagai: pengesahan pelbagai syarat seperti susunan garis rata, pergerakan pelbagai kitaran dan perubahan harga, untuk mengurangkan isyarat palsu.
  2. Pengurusan risiko saintifik: menggunakan ATR untuk menyesuaikan sasaran stop loss dan keuntungan secara dinamik, menyesuaikan diri dengan perubahan turun naik pasaran.
  3. Trend Tracking dan Momentum: Menerima trend besar dan juga peluang untuk memasuki trend.
  4. Kustomisasi yang kuat: setiap parameter strategi boleh disesuaikan dengan ciri-ciri pasaran yang berbeza.
  5. Analisis pelbagai kitaran: meningkatkan kebolehpercayaan isyarat dengan menggabungkan garis matahari dan garis pusingan.

Risiko Strategik

  1. Ketinggalan garis purata: EMA sebagai penunjuk ketinggalan boleh menyebabkan kemasukan lewat. Disarankan untuk digabungkan dengan penunjuk utama lain.
  2. Tidak berlaku untuk pasaran goyah: Strategi ini mungkin sering menghasilkan isyarat palsu di pasaran goyah horizontal. Disarankan untuk memasukkan penapis persekitaran pasaran.
  3. Risiko penarikan balik: Walaupun terdapat penangguhan ATR, penarikan balik yang lebih besar mungkin berlaku dalam keadaan yang melampau. Anda boleh mempertimbangkan untuk menetapkan had penarikan balik maksimum.
  4. Sensitiviti parameter: Kesan strategi lebih sensitif terhadap tetapan parameter. Percubaan pengoptimuman parameter yang mencukupi disyorkan.

Arah pengoptimuman strategi

  1. Pengenalan keadaan pasaran: penambahan indikator kadar turun naik atau indikator kekuatan trend, menggunakan kombinasi parameter yang berbeza dalam keadaan pasaran yang berbeza.
  2. Pengoptimuman kemasukan: Anda boleh menambah indikator berayun seperti RSI untuk mencari titik kemasukan yang lebih tepat di dalam zon regangan.
  3. Penyesuaian parameter dinamik: menyesuaikan kelipatan ATR dan julat penyesuaian secara automatik mengikut turun naik pasaran.
  4. Menambah analisis kuantiti transaksi: Meningkatkan kebolehpercayaan isyarat dengan mengkonfirmasi kekuatan trend melalui kuantiti transaksi.
  5. Memperkenalkan pembelajaran mesin: menggunakan parameter pengoptimuman dinamik algoritma pembelajaran mesin untuk meningkatkan adaptasi strategi.

ringkaskan

Ini adalah strategi trend-tracking yang dirancang dengan logik dan logik yang ketat. Dengan penggunaan gabungan pelbagai petunjuk teknikal, ia memastikan kestabilan strategi dan menyediakan mekanisme pengurusan risiko yang baik. Strategi ini sangat disesuaikan dan dapat dioptimumkan mengikut ciri-ciri pasaran yang berbeza. Walaupun terdapat beberapa risiko yang wujud, prestasi strategi dapat ditingkatkan lagi dengan arah pengoptimuman yang disyorkan.

Kod sumber strategi
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Swing Trading with EMA Alignment and Custom Momentum", overlay=true)

// User inputs for customization
atrLength = input.int(14, title="ATR Length", minval=1)
atrMultiplierSL = input.float(1.5, title="Stop-Loss Multiplier (ATR)", minval=0.1)   // Stop-loss at 1.5x ATR
atrMultiplierTP = input.float(3.0, title="Take-Profit Multiplier (ATR)", minval=0.1)   // Take-profit at 3x ATR
pullbackRangePercent = input.float(1.0, title="Pullback Range (%)", minval=0.1) // 1% range for pullback around 20 EMA
lengthKC = input.int(20, title="Length for Keltner Channels (Momentum Calculation)", minval=1)

// EMA settings
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// ATR calculation
atrValue = ta.atr(atrLength)

// Custom Momentum Calculation based on Linear Regression for Daily Timeframe
highestHighKC = ta.highest(high, lengthKC)
lowestLowKC = ta.lowest(low, lengthKC)
smaCloseKC = ta.sma(close, lengthKC)

// Manually calculate the average of highest high and lowest low
averageKC = (highestHighKC + lowestLowKC) / 2

// Calculate daily momentum using linear regression
dailyMomentum = ta.linreg(close - (averageKC + smaCloseKC) / 2, lengthKC, 0) // Custom daily momentum calculation

// Fetch weekly data for momentum calculation using request.security()
[weeklyHigh, weeklyLow, weeklyClose] = request.security(syminfo.tickerid, "W", [high, low, close])

// Calculate weekly momentum using linear regression on weekly timeframe
weeklyHighestHighKC = ta.highest(weeklyHigh, lengthKC)
weeklyLowestLowKC = ta.lowest(weeklyLow, lengthKC)
weeklySmaCloseKC = ta.sma(weeklyClose, lengthKC)
weeklyAverageKC = (weeklyHighestHighKC + weeklyLowestLowKC) / 2

weeklyMomentum = ta.linreg(weeklyClose - (weeklyAverageKC + weeklySmaCloseKC) / 2, lengthKC, 0) // Custom weekly momentum calculation

// EMA alignment condition (20 EMA > 50 EMA > 100 EMA > 200 EMA)
emaAligned = ema20 > ema50 and ema50 > ema100 and ema100 > ema200

// Momentum increasing condition (daily and weekly momentum is positive and increasing)
dailyMomentumIncreasing = dailyMomentum > 0 and dailyMomentum > dailyMomentum[1] //and dailyMomentum[1] > dailyMomentum[2]
weeklyMomentumIncreasing = weeklyMomentum > 0 and weeklyMomentum > weeklyMomentum[1] //and weeklyMomentum[1] > weeklyMomentum[2]

// Redefine Pullback condition: price within 1% range of the 20 EMA
upperPullbackRange = ema20 * (1 + pullbackRangePercent / 100)
lowerPullbackRange = ema20 * (1 - pullbackRangePercent / 100)
pullbackToEma20 = (close <= upperPullbackRange) and (close >= lowerPullbackRange)

// Entry condition: EMA alignment and momentum increasing on both daily and weekly timeframes
longCondition = emaAligned and dailyMomentumIncreasing and weeklyMomentumIncreasing and pullbackToEma20

// Initialize stop loss and take profit levels as float variables
var float longStopLevel = na
var float longTakeProfitLevel = na

// Calculate stop loss and take profit levels based on ATR
if (longCondition)
    longStopLevel := close - (atrMultiplierSL * atrValue)  // Stop loss at 1.5x ATR below the entry price
    longTakeProfitLevel := close + (atrMultiplierTP * atrValue) // Take profit at 3x ATR above the entry price

// Strategy execution
if (longCondition)
    strategy.entry("Long", strategy.long)

// Exit conditions: Stop-loss at 1.5x ATR and take-profit at 3x ATR
if (strategy.position_size > 0)
    strategy.exit("Take Profit/Stop Loss", "Long", stop=longStopLevel, limit=longTakeProfitLevel)