Sumber dimuat naik... memuat...

Strategi Dagangan EMA Trend Momentum Multi-Timeframe

Penulis:ChaoZhang, Tarikh: 2024-11-12 16:35:41
Tag:EMAATRKCSMALR

img

Ringkasan

Ini adalah strategi perdagangan kuantitatif yang menggabungkan trend EMA pelbagai jangka masa dengan analisis momentum. Strategi ini terutamanya menganalisis penyelarasan purata bergerak eksponensial (EMA) 20, 50, 100, dan 200 hari yang digabungkan dengan penunjuk momentum pada kedua-dua jangka masa harian dan mingguan.

Prinsip Strategi

Logik teras merangkumi beberapa komponen utama:

  1. Sistem Penyusunan EMA: Menghendaki EMA 20 hari di atas EMA 50 hari, yang di atas EMA 100 hari, yang di atas EMA 200 hari, membentuk penyusunan menaik yang sempurna.
  2. Sistem Pengesahan Momentum: Mengira penunjuk momentum tersuai berdasarkan regresi linear pada bingkai masa harian dan mingguan. Momentum ini diukur melalui regresi linear penyimpangan harga dari garis tengah Saluran Keltner.
  3. Sistem Masuk Pullback: Harga mesti menarik balik dalam julat peratusan yang ditentukan dari EMA 20 hari untuk masuk, mengelakkan pembelian mengejar.
  4. Sistem Pengurusan Risiko: Menggunakan kelipatan ATR untuk menetapkan sasaran stop-loss dan keuntungan, secara lalai menjadi 1.5x ATR untuk sasaran stop-loss dan 3x ATR untuk sasaran keuntungan.

Kelebihan Strategi

  1. Mekanisme Pengesahan Berbilang: Mengurangkan isyarat palsu melalui pelbagai keadaan termasuk penyelarasan EMA, momentum pelbagai jangka masa, dan penurunan harga.
  2. Pengurusan Risiko Saintifik: Menggunakan ATR untuk menyesuaikan sasaran stop-loss dan keuntungan secara dinamik, menyesuaikan diri dengan perubahan turun naik pasaran.
  3. Mengikuti Trend dengan Momentum: Menangkap trend utama sambil mengoptimumkan masa kemasukan dalam trend.
  4. Kebolehsesuaian yang tinggi: Semua parameter strategi boleh dioptimumkan untuk ciri pasaran yang berbeza.
  5. Analisis pelbagai jangka masa: Meningkatkan kebolehpercayaan isyarat melalui penyelarasan jangka masa harian dan mingguan.

Risiko Strategi

  1. EMA Lag: EMA sebagai penunjuk yang tertinggal boleh menyebabkan kemasukan yang tertunda.
  2. Prestasi yang lemah dalam pasaran yang berbeza: Strategi boleh menghasilkan isyarat palsu yang kerap di pasaran sampingan. Pertimbangkan untuk menambah penapis persekitaran pasaran.
  3. Risiko penarikan: Walaupun ATR berhenti, penarikan yang signifikan mungkin dalam keadaan yang melampau.
  4. Sensitiviti Parameter: Prestasi strategi sensitif kepada tetapan parameter. Ujian pengoptimuman parameter yang menyeluruh disyorkan.

Arahan pengoptimuman

  1. Pengiktirafan persekitaran pasaran: Tambah penunjuk turun naik atau kekuatan trend untuk menggunakan set parameter yang berbeza dalam keadaan pasaran yang berbeza.
  2. Pengoptimuman kemasukan: Tambah pengayun seperti RSI untuk titik kemasukan yang lebih tepat dalam zon mundur.
  3. Penyesuaian Parameter Dinamik: Sesuaikan secara automatik kelipatan ATR dan julat pulback berdasarkan turun naik pasaran.
  4. Integrasi Analisis Volume: mengesahkan kekuatan trend melalui analisis jumlah untuk meningkatkan kebolehpercayaan isyarat.
  5. Pelaksanaan Pembelajaran Mesin: Gunakan algoritma pembelajaran mesin untuk mengoptimumkan parameter secara dinamik dan meningkatkan kebolehsesuaian strategi.

Ringkasan

Ini adalah strategi trend yang dirancang dengan baik, secara logik ketat. Melalui gabungan pelbagai penunjuk teknikal, ia memastikan kedua-dua strategi yang kukuh dan pengurusan risiko yang berkesan. Keupayaan strategi yang tinggi membolehkan pengoptimuman untuk ciri pasaran yang berbeza. Walaupun terdapat risiko yang melekat, arah pengoptimuman yang dicadangkan dapat meningkatkan prestasi strategi. Secara keseluruhan, ini adalah strategi perdagangan kuantitatif yang patut diuji dan dikaji secara mendalam.


/*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)


Berkaitan

Lebih lanjut