Sistem Perdagangan Mengikuti Tren Berbagai Kerangka Waktu (MTF-ATR-MACD)

EMA RSI ATR MACD MTF SL TP
Tanggal Pembuatan: 2024-11-25 14:42:33 Akhirnya memodifikasi: 2024-11-25 14:42:33
menyalin: 4 Jumlah klik: 540
1
fokus pada
1617
Pengikut

Sistem Perdagangan Mengikuti Tren Berbagai Kerangka Waktu (MTF-ATR-MACD)

Ringkasan

Strategi ini adalah sistem perdagangan pelacakan tren yang komprehensif, yang menggabungkan analisis beberapa kerangka waktu, sistem rata-rata, indikator momentum, dan indikator volatilitas. Sistem ini mengidentifikasi arah tren melalui persilangan rata-rata bergerak indeks jangka pendek dan jangka panjang (EMA), menggunakan indikator relatif kuat (RSI) untuk penilaian overbought dan oversold, digabungkan dengan MACD untuk konfirmasi momentum, dan menggunakan kerangka waktu yang lebih tinggi (EMA) sebagai sistem filter tren.

Prinsip Strategi

Strategi ini menggunakan mekanisme verifikasi berlapis untuk membuat keputusan transaksi:

  1. Layer pengidentifikasi tren: menggunakan persilangan EMA periode 9 dan 21 untuk menangkap perubahan tren
  2. Layer pengesahan momentum: momentum tren yang diverifikasi melalui indikator MACD ((12, 26, 9)
  3. Filter overbought dan oversold: Filter pada level 7030 menggunakan indikator RSI ((14))
  4. Konfirmasi kerangka waktu tinggi: menggunakan EMA tingkat garis matahari secara opsional sebagai filter tren
  5. Manajemen risiko: Menggunakan ATR 1.5x untuk tracking stop loss, ATR 2x untuk target profit

Sistem hanya akan membuka posisi setelah memenuhi beberapa kondisi: EMA bergeser, RSI belum mencapai batas, MACD arah benar dan tren jangka waktu tinggi dikonfirmasi. Keluar menggunakan kombinasi dari tracking stop loss dan target profit tetap.

Keunggulan Strategis

  1. Sistem multi-verifikasi secara signifikan mengurangi sinyal palsu
  2. Filter tren kerangka waktu tinggi meningkatkan tingkat kemenangan
  3. Dinamika Stop Loss Adaptif Berbasis Fluktuasi
  4. Sistem manajemen risiko yang lengkap
  5. Parameter dapat disesuaikan dengan karakteristik pasar yang berbeda
  6. Mendukung transaksi dua arah, dapat disesuaikan dengan lingkungan pasar yang berbeda
  7. Portfolio Indikator Menjaga Tren dan Motivasi

Risiko Strategis

  1. Beberapa kondisi dapat menyebabkan kehilangan beberapa peluang perdagangan.
  2. Mungkin sering berdagang di pasar yang bergejolak
  3. Optimasi parameter dapat menyebabkan overfitting
  4. Konfirmasi waktu yang tinggi dapat menyebabkan keterlambatan masuk Larutan:
  • Parameter penyesuaian dinamis berdasarkan karakteristik pasar yang berbeda
  • Meningkatkan fleksibilitas dalam memilih arah transaksi
  • Memperkenalkan mekanisme penyaringan fluktuasi
  • Mekanisme adaptasi parameter optimasi

Arah optimasi strategi

  1. Memperkenalkan mekanisme penyaringan fluktuasi untuk menyesuaikan posisi selama fluktuasi tinggi
  2. Mekanisme adaptasi parameter yang dikembangkan, disesuaikan dengan dinamika kondisi pasar
  3. Meningkatkan efektivitas sinyal konfirmasi indikator volume transaksi
  4. Mengoptimalkan logika penilaian tren kerangka waktu tinggi
  5. Perbaiki program stop loss, pertimbangkan untuk meningkatkan waktu stop loss
  6. Mengembangkan Modul Penilaian Kinerja Strategi

Meringkaskan

Strategi ini adalah sistem perdagangan pelacakan tren yang komprehensif, dengan kombinasi beberapa indikator teknis dan sistem manajemen risiko yang ketat, yang dapat menghasilkan keuntungan yang stabil di pasar yang sedang tren. Sistem ini sangat terukur dan dapat disesuaikan dengan berbagai lingkungan pasar melalui optimalisasi.

Kode Sumber Strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-24 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5 
strategy("Trend Following with ATR, MTF Confirmation, and MACD", overlay=true)

// Parameters
emaShortPeriod = input.int(9, title="Short EMA Period", minval=1)
emaLongPeriod = input.int(21, title="Long EMA Period", minval=1)
rsiPeriod = input.int(14, title="RSI Period", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought", minval=50)
rsiOversold = input.int(30, title="RSI Oversold", minval=1)
atrPeriod = input.int(14, title="ATR Period", minval=1)
atrMultiplier = input.float(1.5, title="ATR Multiplier", minval=0.1)
takeProfitATRMultiplier = input.float(2.0, title="Take Profit ATR Multiplier", minval=0.1)

// Multi-timeframe settings
htfEMAEnabled = input.bool(true, title="Use Higher Timeframe EMA Confirmation?", inline="htf")
htfEMATimeframe = input.timeframe("D", title="Higher Timeframe", inline="htf")

// MACD Parameters
macdShortPeriod = input.int(12, title="MACD Short Period", minval=1)
macdLongPeriod = input.int(26, title="MACD Long Period", minval=1)
macdSignalPeriod = input.int(9, title="MACD Signal Period", minval=1)

// Select trade direction
tradeDirection = input.string("Both", title="Trade Direction", options=["Both", "Long", "Short"])

// Calculating indicators
emaShort = ta.ema(close, emaShortPeriod)
emaLong = ta.ema(close, emaLongPeriod)
rsiValue = ta.rsi(close, rsiPeriod)
atrValue = ta.atr(atrPeriod)

// Calculate MACD
[macdLine, macdSignalLine, _] = ta.macd(close, macdShortPeriod, macdLongPeriod, macdSignalPeriod)

// Higher timeframe EMA confirmation
htfEMALong = request.security(syminfo.tickerid, htfEMATimeframe, ta.ema(close, emaLongPeriod))

// Trading conditions
longCondition = ta.crossover(emaShort, emaLong) and rsiValue < rsiOverbought and (not htfEMAEnabled or close > htfEMALong) and macdLine > macdSignalLine
shortCondition = ta.crossunder(emaShort, emaLong) and rsiValue > rsiOversold and (not htfEMAEnabled or close < htfEMALong) and macdLine < macdSignalLine

// Plotting EMAs
plot(emaShort, title="EMA Short", color=color.green)
plot(emaLong, title="EMA Long", color=color.red)

// Plotting MACD
hline(0, "Zero Line", color=color.gray)
plot(macdLine - macdSignalLine, title="MACD Histogram", color=color.green, style=plot.style_histogram)
plot(macdLine, title="MACD Line", color=color.blue)
plot(macdSignalLine, title="MACD Signal Line", color=color.red)

// Trailing Stop-Loss and Take-Profit levels
var float trailStopLoss = na
var float trailTakeProfit = na

if (strategy.position_size > 0) // Long Position
    trailStopLoss := na(trailStopLoss) ? close - atrValue * atrMultiplier : math.max(trailStopLoss, close - atrValue * atrMultiplier)
    trailTakeProfit := close + atrValue * takeProfitATRMultiplier
    strategy.exit("Exit Long", "Long", stop=trailStopLoss, limit=trailTakeProfit, when=shortCondition)

if (strategy.position_size < 0) // Short Position
    trailStopLoss := na(trailStopLoss) ? close + atrValue * atrMultiplier : math.min(trailStopLoss, close + atrValue * atrMultiplier)
    trailTakeProfit := close - atrValue * takeProfitATRMultiplier
    strategy.exit("Exit Short", "Short", stop=trailStopLoss, limit=trailTakeProfit, when=longCondition)

// Strategy Entry
if (longCondition and (tradeDirection == "Both" or tradeDirection == "Long"))
    strategy.entry("Long", strategy.long)
    
if (shortCondition and (tradeDirection == "Both" or tradeDirection == "Short"))
    strategy.entry("Short", strategy.short)

// Plotting Buy/Sell signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Plotting Trailing Stop-Loss and Take-Profit levels
plot(strategy.position_size > 0 ? trailStopLoss : na, title="Long Trailing Stop Loss", color=color.red, linewidth=2, style=plot.style_line)
plot(strategy.position_size < 0 ? trailStopLoss : na, title="Short Trailing Stop Loss", color=color.green, linewidth=2, style=plot.style_line)
plot(strategy.position_size > 0 ? trailTakeProfit : na, title="Long Take Profit", color=color.blue, linewidth=2, style=plot.style_line)
plot(strategy.position_size < 0 ? trailTakeProfit : na, title="Short Take Profit", color=color.orange, linewidth=2, style=plot.style_line)