Strategi perdagangan mengikuti tren momentum rata-rata pergerakan multi-periode

EMA ATR KC SMA LR
Tanggal Pembuatan: 2024-11-12 16:35:41 Akhirnya memodifikasi: 2024-11-12 16:35:41
menyalin: 4 Jumlah klik: 640
1
fokus pada
1617
Pengikut

Strategi perdagangan mengikuti tren momentum rata-rata pergerakan multi-periode

Ringkasan

Ini adalah strategi perdagangan kuantitatif yang menggabungkan pelacakan tren rata-rata multi-periode dan analisis momentum. Strategi ini terutama melakukan perdagangan dengan menganalisis kombinasi rangkuman 20, 50, 100, dan 200 hari indeks moving average (EMA) dengan indikator momentum yang digabungkan dengan garis matahari dan garis lingkaran. Strategi ini menggunakan metode ATR stop loss, memasuki pasar ketika kondisi momentum EMA selaras terpenuhi, dan mengelola risiko dengan menetapkan stop loss dan profit target ATR ganda.

Prinsip Strategi

Logika inti dari strategi ini mencakup bagian-bagian utama berikut:

  1. Sistem Alignment EMA: Memerlukan 20 hari EMA di atas 50 hari EMA, 50 hari EMA di atas 100 hari EMA, dan 100 hari EMA di atas 200 hari EMA, untuk membentuk multicolor yang sempurna.
  2. Sistem Konfirmasi Momentum: Indikator momentum khusus yang didasarkan pada regresi linier yang dihitung pada siklus waktu garis matahari dan garis lingkar. Indikator momentum ini diukur dengan regresi linier pada tingkat penyimpangan harga dari sumbu tengah saluran Keltner.
  3. Sistem penarikan kembali: Harga harus ditarikan kembali ke dalam persentase yang ditentukan oleh EMA pada hari ke-20 untuk diizinkan masuk, untuk menghindari kenaikan harga.
  4. Sistem manajemen risiko: Menggunakan ATR untuk menetapkan stop loss dan profit target, dengan default stop loss 1,5 kali ATR dan profit target 3 kali ATR.

Keunggulan Strategis

  1. Mekanisme pengesahan ganda: Mengurangi sinyal palsu dengan pengesahan kondisi ganda, seperti urutan rata-rata, dinamika multi-siklus, dan perubahan harga.
  2. Manajemen risiko ilmiah: Menggunakan ATR untuk secara dinamis menyesuaikan target stop loss dan profit, sesuai dengan perubahan volatilitas pasar.
  3. Mengikuti tren dengan mengkombinasikan momentum: Anda dapat menangkap tren besar, tetapi Anda juga dapat menangkap momen masuk yang lebih baik dalam tren.
  4. Kustomisasi yang kuat: setiap parameter dari strategi dapat disesuaikan dengan karakteristik pasar yang berbeda.
  5. Analisis multi-siklus: meningkatkan keandalan sinyal dengan kombinasi garis matahari dan garis lingkar.

Risiko Strategis

  1. Keterlambatan rata-rata: EMA sebagai indikator keterlambatan dapat menyebabkan keterlambatan waktu masuk. Disarankan untuk dikombinasikan dengan indikator terkemuka lainnya.
  2. Tidak berlaku untuk pasar bergoyang: Strategi ini dapat sering menghasilkan sinyal palsu di pasar bergoyang horizontal. Disarankan untuk menambahkan filter lingkungan pasar.
  3. Resiko penarikan: Meskipun ada ATR yang terhenti, namun dalam situasi ekstrem mungkin akan ada penarikan yang lebih besar. Anda dapat mempertimbangkan untuk mengatur batas penarikan maksimum.
  4. Sensitivitas parameter: Efek strategi sangat sensitif terhadap pengaturan parameter. Disarankan untuk melakukan pengujian optimasi parameter yang memadai.

Arah optimasi strategi

  1. Identifikasi lingkungan pasar: Menambahkan indikator volatilitas atau indikator kekuatan tren, menggunakan kombinasi parameter yang berbeda dalam lingkungan pasar yang berbeda.
  2. Optimasi entri: Anda dapat menambahkan indikator berayun seperti RSI untuk mencari titik masuk yang lebih tepat di zona regresi.
  3. Penyesuaian parameter dinamis: Mengatur otomatis ATR perkalian dan rentang regresi sesuai dengan volatilitas pasar.
  4. Menambahkan analisis volume transaksi: Mengkonfirmasi kekuatan tren dengan volume transaksi, meningkatkan keandalan sinyal.
  5. Memperkenalkan pembelajaran mesin: Menggunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara dinamis, meningkatkan adaptasi strategi.

Meringkaskan

Ini adalah strategi pelacakan tren yang dirancang secara rasional dan logis. Dengan penggunaan kombinasi dari beberapa indikator teknis, strategi ini menjamin stabilitas dan menyediakan mekanisme manajemen risiko yang baik. Strategi ini sangat dapat disesuaikan dan dapat dioptimalkan sesuai dengan karakteristik pasar yang berbeda.

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