Aliran Rangka Masa Berbilang Mengikut Sistem Dagangan (MTF-ATR-MACD)

EMA RSI ATR MACD MTF SL TP
Tarikh penciptaan: 2024-11-25 14:42:33 Akhirnya diubah suai: 2024-11-25 14:42:33
Salin: 4 Bilangan klik: 540
1
fokus pada
1617
Pengikut

Aliran Rangka Masa Berbilang Mengikut Sistem Dagangan (MTF-ATR-MACD)

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan trend yang komprehensif yang menggabungkan analisis pelbagai kerangka masa, sistem garis rata-rata, penunjuk pergerakan dan penunjuk kadar turun naik. Sistem ini mengenal pasti arah trend melalui persilangan purata bergerak indeks jangka pendek dan jangka panjang (EMA), menggunakan penunjuk RSI yang agak kuat (RSI) untuk membuat keputusan overbought dan oversold, digabungkan dengan MACD untuk pengesahan dinamik, dan menggunakan kerangka masa yang lebih tinggi (EMA) sebagai sistem penapis trend.

Prinsip Strategi

Strategi menggunakan mekanisme pengesahan berlapis untuk membuat keputusan transaksi:

  1. Lapisan pengenalan trend: menggunakan persilangan EMA 9 dan 21 untuk menangkap perubahan trend
  2. Layer pengesahan momentum: momentum trend yang disahkan oleh penunjuk MACD ((12, 26, 9)
  3. Penapisan overbought dan oversold: menggunakan RSI ((14) untuk penapisan pada tahap 7030
  4. Pengesahan bingkai masa tinggi: menggunakan EMA tahap garis matahari secara pilihan sebagai penapis trend
  5. Pengurusan risiko: menggunakan ATR 1.5x untuk menjejaki hentian kerugian, dan ATR 2x untuk menetapkan sasaran keuntungan

Sistem hanya akan membuka kedudukan selepas memenuhi pelbagai syarat: EMA bersilang, RSI tidak mencapai nilai teratas, arah MACD adalah betul dan trend jangka masa tinggi disahkan. Keluar menggunakan gabungan tracking stop loss dan sasaran keuntungan tetap.

Kelebihan Strategik

  1. Sistem pengesahan berganda mengurangkan isyarat palsu
  2. Penapisan trend jangka masa tinggi meningkatkan kadar kemenangan
  3. Dinamika Stop Loss Berasaskan Ketegangan
  4. Sistem pengurusan risiko yang lengkap
  5. Parameter boleh disesuaikan dengan ciri-ciri pasaran yang berbeza
  6. Menyokong perdagangan dua hala, menyesuaikan diri dengan keadaan pasaran yang berbeza
  7. Portfolio Indeks Menjaga Trend dan Menjaga Dinamika

Risiko Strategik

  1. Keadaan yang berlainan boleh menyebabkan kehilangan sebahagian peluang perdagangan
  2. Boleh berdagang dengan kerap dalam pasaran yang tidak menentu
  3. Pengoptimuman parameter boleh menyebabkan pemasangan berlebihan
  4. Pengesahan jangka masa yang tinggi boleh menyebabkan kelewatan kemasukan Penyelesaian:
  • Parameter penyesuaian dinamik mengikut ciri-ciri pasaran yang berbeza
  • Peningkatan fleksibiliti dalam memilih arah dagangan
  • Memperkenalkan mekanisme penapisan kadar turun naik
  • Mekanisme penyesuaian parameter pengoptimuman

Arah pengoptimuman strategi

  1. Memperkenalkan mekanisme penapisan kadar turun naik untuk menyesuaikan kedudukan semasa turun naik yang tinggi
  2. Mekanisme penyesuaian parameter yang dibangunkan mengikut keadaan pasaran yang dinamik
  3. Peningkatan keberkesanan isyarat pengesahan penunjuk kuantiti
  4. Mengoptimumkan logik penghakiman trend jangka masa tinggi
  5. Memperbaiki program penangguhan kerugian, pertimbangkan untuk menambah masa penangguhan kerugian
  6. Membangunkan modul penilaian prestasi strategi

ringkaskan

Strategi ini adalah sistem perdagangan yang mengikuti trend yang lengkap, dengan kombinasi pelbagai petunjuk teknikal dan sistem pengurusan risiko yang ketat, dapat memperoleh keuntungan yang stabil di pasaran yang sedang tren. Sistem ini sangat berskala, dan dapat disesuaikan dengan keadaan pasaran yang berbeza melalui pengoptimuman.

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