Strategi Mengikuti Breakout Aksi Harga MACD Ganda

MACD ATR
Tanggal Pembuatan: 2024-11-25 11:15:50 Akhirnya memodifikasi: 2024-11-25 11:15:50
menyalin: 1 Jumlah klik: 532
1
fokus pada
1617
Pengikut

Strategi Mengikuti Breakout Aksi Harga MACD Ganda

Ringkasan

Ini adalah strategi perdagangan yang menggabungkan indikator MACD ganda dengan analisis perilaku harga. Strategi ini menentukan tren pasar dengan mengamati perubahan warna garis lurus MACD ganda pada siklus 15 menit, sambil mencari bentuk bullish yang kuat pada siklus 5 menit dan mengkonfirmasi sinyal breakout pada siklus 1 menit. Strategi ini menggunakan mekanisme stop loss dan tracking bullish yang dinamis berbasis ATR untuk memaksimalkan ruang keuntungan sambil secara efektif mengelola risiko.

Prinsip Strategi

Strategi menggunakan dua set indikator MACD dengan parameter berbeda ((34/144/9 dan 100/200/50) untuk mengkonfirmasi tren pasar. Ketika kedua grafik MACD menunjukkan tren warna yang sama, sistem akan mencari bentuk yang kuat pada grafik 5 menit, yang ditandai dengan entitas 1,5 kali lebih besar dari garis bayangan.

Keunggulan Strategis

  1. Analisis multi-siklus: menggabungkan tiga periode waktu 15 menit, 5 menit dan 1 menit untuk meningkatkan keandalan sinyal
  2. Konfirmasi tren: Menggunakan double MACD cross-verifikasi untuk mengurangi sinyal palsu
  3. Analisis Perilaku Harga: Identifikasi Tingkat Harga Kunci Melalui Tren Kecepatan Tinggi
  4. Manajemen risiko dinamis: Stop Loss Adaptif dan Tracking Stop Mechanism berbasis ATR
  5. Filter Sinyal: Syarat Masuk yang ketat mengurangi kesalahan operasi
  6. Tingkat otomatisasi yang tinggi: Otomatisasi seluruh proses transaksi, mengurangi intervensi manusia

Risiko Strategis

  1. Risiko pergeseran tren: kemungkinan terobosan palsu dalam pasar yang sangat bergejolak
  2. Risiko slippage: Perdagangan frekuensi tinggi dengan siklus 1 menit mungkin menghadapi dampak slippage
  3. Risiko overtrading: sinyal yang sering dapat menyebabkan overtrading
  4. Ketergantungan pada kondisi pasar: Performa yang mungkin buruk di pasar yang bergejolak Tindakan mitigasi:
  • Tambahkan filter tren
  • Tetapkan ambang batas fluktuasi minimum
  • Tambahkan batasan jumlah transaksi
  • Memperkenalkan mekanisme identifikasi lingkungan pasar

Arah optimasi strategi

  1. Optimasi parameter MACD: dapat menyesuaikan parameter MACD sesuai dengan karakteristik pasar yang berbeda
  2. Optimasi Stop Loss: Pertimbangkan untuk menambahkan stop loss dinamis berdasarkan volatilitas
  3. Filter waktu transaksi: Tambahkan batasan jendela waktu transaksi
  4. Manajemen lokasi: implementasi batch build-up dan out-of-field mechanism
  5. Filter lingkungan pasar: Tambahkan indikator intensitas tren
  6. Pengendalian penarikan: Menggunakan mekanisme pengendalian risiko berdasarkan kurva kepentingan dan hak

Meringkaskan

Ini adalah sistem strategi untuk analisis teknis dan manajemen risiko yang digunakan secara komprehensif. Ini memastikan kualitas perdagangan melalui analisis multi-siklus dan penyaringan sinyal yang ketat, sekaligus mengelola risiko secara efektif dengan menggunakan stop loss dinamis dan mekanisme penarikan stop. Strategi ini memiliki kemampuan adaptasi yang kuat, tetapi masih perlu dioptimalkan secara berkelanjutan sesuai dengan lingkungan pasar.

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

// @version=5
strategy("Price Action + Double MACD Strategy with ATR Trailing", overlay=true)

// Inputs for MACD
fastLength1 = input.int(34, title="First MACD Fast Length")
slowLength1 = input.int(144, title="First MACD Slow Length")
signalLength1 = input.int(9, title="First MACD Signal Length")

fastLength2 = input.int(100, title="Second MACD Fast Length")
slowLength2 = input.int(200, title="Second MACD Slow Length")
signalLength2 = input.int(50, title="Second MACD Signal Length")

// Input for ATR Trailing
atrMultiplier = input.float(1.5, title="ATR Multiplier for Trailing")

// Inputs for Stop Loss
atrStopMultiplier = input.float(1.0, title="ATR Multiplier for Stop Loss")

// MACD Calculations
[macdLine1, signalLine1, macdHist1] = ta.macd(close, fastLength1, slowLength1, signalLength1)
[macdLine2, signalLine2, macdHist2] = ta.macd(close, fastLength2, slowLength2, signalLength2)

// Get 15M MACD histogram colors
macdHist1Color = request.security(syminfo.tickerid, "15", (macdHist1 >= 0 ? (macdHist1[1] < macdHist1 ? #26A69A : #B2DFDB) : (macdHist1[1] < macdHist1 ? #FFCDD2 : #FF5252)))
macdHist2Color = request.security(syminfo.tickerid, "15", (macdHist2 >= 0 ? (macdHist2[1] < macdHist2 ? #26A69A : #B2DFDB) : (macdHist2[1] < macdHist2 ? #FFCDD2 : #FF5252)))

// Check MACD color conditions
isMacdUptrend = macdHist1Color == #26A69A and macdHist2Color == #26A69A
isMacdDowntrend = macdHist1Color == #FF5252 and macdHist2Color == #FF5252

// Function to detect strong 5M candles
isStrongCandle(open, close, high, low) =>
    body = math.abs(close - open)
    tail = math.abs(high - low) - body
    body > tail * 1.5  // Ensure body is larger than the tail

// Variables to track state
var float fiveMinuteHigh = na
var float fiveMinuteLow = na
var bool tradeExecuted = false
var bool breakoutDetected = false
var float entryPrice = na
var float stopLossPrice = na
var float longTakeProfit = na
var float shortTakeProfit = na

// Check for new 15M candle and reset flags
if ta.change(time("15"))
    tradeExecuted := false      // Reset trade execution flag
    breakoutDetected := false  // Reset breakout detection
    if isStrongCandle(open[1], close[1], high[1], low[1])
        fiveMinuteHigh := high[1]
        fiveMinuteLow := low[1]
    else
        fiveMinuteHigh := na
        fiveMinuteLow := na

// Get 1-minute close prices
close1m = request.security(syminfo.tickerid, "5", close)

// Ensure valid breakout direction and avoid double breakouts
if not na(fiveMinuteHigh) and not breakoutDetected
    for i = 1 to 3
        if close1m[i] > fiveMinuteHigh and not tradeExecuted  // 1M breakout check with close
            breakoutDetected := true
            if isMacdUptrend 
                // Open Long trade
                entryPrice := close
                stopLossPrice := close - (atrStopMultiplier * ta.atr(14))  // ATR-based stop loss
                longTakeProfit := close + (atrMultiplier * ta.atr(14)) // Initialize take profit

                strategy.entry("Long", strategy.long)
                tradeExecuted := true
            break // Exit the loop after detecting a breakout

        else if close1m[i] < fiveMinuteLow and not tradeExecuted  // 1M breakout check with close
            breakoutDetected := true
            if isMacdDowntrend
                // Open Short trade
                entryPrice := close
                stopLossPrice := close + (atrStopMultiplier * ta.atr(14))  // ATR-based stop loss
                shortTakeProfit := close - (atrMultiplier * ta.atr(14)) // Initialize take profit

                strategy.entry("Short", strategy.short)
                tradeExecuted := true
            break // Exit the loop after detecting a breakout

// Update trailing take-profit dynamically
if tradeExecuted and strategy.position_size > 0  // Long trade
    longTakeProfit := math.max(longTakeProfit, close + (atrMultiplier * ta.atr(14)))
    strategy.exit("Long TP/SL", "Long", stop=stopLossPrice, limit=longTakeProfit)

else if tradeExecuted and strategy.position_size < 0  // Short trade
    shortTakeProfit := math.min(shortTakeProfit, close - (atrMultiplier * ta.atr(14)))
    strategy.exit("Short TP/SL", "Short", stop=stopLossPrice, limit=shortTakeProfit)

// Reset trade state when position is closed
if strategy.position_size == 0
    tradeExecuted := false
    entryPrice := na
    longTakeProfit := na
    shortTakeProfit := na