Strategi Perdagangan Adaptif Dinamis Indikator Multi-Teknis (MTDAT)

MACD RSI BB ATR SMA SD
Tanggal Pembuatan: 2024-11-29 14:54:57 Akhirnya memodifikasi: 2024-11-29 14:54:57
menyalin: 0 Jumlah klik: 506
1
fokus pada
1617
Pengikut

Strategi Perdagangan Adaptif Dinamis Indikator Multi-Teknis (MTDAT)

Ringkasan

Strategi ini adalah sistem perdagangan komprehensif yang didasarkan pada beberapa indikator teknis, menggabungkan beberapa indikator teknis seperti MACD, RSI, Bollinger Bands dan ATR untuk menangkap tren pasar dan peluang pembalikan. Strategi ini menggunakan stop loss dan profit yang dinamis, mampu menyesuaikan parameter perdagangan sesuai dengan volatilitas pasar, dan secara efektif mengendalikan risiko sambil menjamin keuntungan. Hasil pengembalian menunjukkan bahwa strategi ini mencapai tingkat pengembalian 676.27% selama tiga bulan terakhir selama pengujian, menunjukkan adaptasi pasar yang baik.

Prinsip Strategi

Strategi ini menggunakan sistem verifikasi indikator teknis berlapis, termasuk:

  1. MACD ((12,26,9) digunakan untuk menangkap sinyal konversi momentum, menghasilkan sinyal beli saat MACD melintasi garis sinyal dan menghasilkan sinyal jual saat melintasi garis sinyal
  2. RSI ((14) sebagai filter sekunder, di bawah 35 dianggap sebagai zona oversold, di atas 65 dianggap sebagai zona overbought
  3. Brin band ((20,2) digunakan untuk mengidentifikasi area fluktuasi harga, mempertimbangkan untuk membeli ketika harga menyentuh rel bawah, mempertimbangkan untuk menjual ketika menyentuh rel atas
  4. ATR digunakan untuk mengatur stop loss dan profit level secara dinamis, dengan stop loss ditetapkan 3x ATR, dan profit target ditetapkan 5x ATR

Logika perdagangan menggabungkan strategi trend tracking dan reversal trading untuk meningkatkan akurasi perdagangan melalui verifikasi ganda. Sistem ini secara otomatis menyesuaikan tingkat stop loss dan profit berdasarkan volatilitas pasar secara real-time, untuk mengoptimalkan manajemen risiko secara dinamis.

Keunggulan Strategis

  1. Sistem Verifikasi Sinyal Multidimensi Meningkatkan Keandalan Transaksi
  2. Skema stop loss dan profit dinamis beradaptasi dengan kondisi pasar yang berbeda
  3. Mengintegrasikan ide-ide perdagangan dari trend dan reversal, meningkatkan peluang perdagangan
  4. Sistem manajemen risiko otomatis mengurangi kesalahan penilaian manusia
  5. 53.99% kemenangan dan faktor keuntungan 1.44 menunjukkan strategi stabil
  6. Strategi mendukung pengingat perdagangan real-time untuk memudahkan trader

Risiko Strategis

  1. Multiple indicator dapat menyebabkan sinyal terlambat, kehilangan peluang di pasar yang cepat
  2. Tingkat pengembalian maksimum 56.33% membutuhkan ketahanan risiko yang lebih besar
  3. Transaksi yang lebih sering dapat menyebabkan biaya transaksi yang lebih tinggi
  4. Strategi yang mungkin lebih berisiko dalam pasar yang bergejolak

Saran pengendalian risiko:

  • Menerapkan rencana pengelolaan dana secara ketat
  • Periksa dan sesuaikan parameter secara teratur
  • Hentikan transaksi selama data penting diumumkan
  • Tetapkan batas kerugian maksimum per hari

Arah optimasi strategi

  1. Optimalisasi parameter:

    • Parameter indikator untuk mempertimbangkan siklus adaptasi
    • Optimalkan pengaturan ATR untuk meningkatkan RR
  2. Peningkatan sistem sinyal:

    • Menambahkan verifikasi indikator volume transaksi
    • Memperkenalkan indikator sentimen pasar
  3. Optimasi Manajemen Risiko:

    • Mewujudkan manajemen posisi dinamis
    • Tambahkan filter waktu
  4. Peningkatan teknologi:

    • Menambahkan filter volatilitas pasar
    • Optimalkan penilaian waktu masuk dan keluar

Meringkaskan

Strategi ini mencapai efek perdagangan yang lebih baik melalui kombinasi dari beberapa indikator teknis dan sistem manajemen risiko yang dinamis. Meskipun ada risiko penarikan, strategi ini menunjukkan adaptasi dan stabilitas pasar yang baik melalui kontrol risiko yang ketat dan pengoptimalan berkelanjutan.

Kode Sumber Strategi
/*backtest
start: 2024-11-21 00:00:00
end: 2024-11-28 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("XAUUSD STRATEGY 10MIN", overlay=true)

// Spread Adjustment (38-point spread)
spread = 38 * syminfo.mintick       

// MACD Calculation
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
macdBuy = ta.crossover(macdLine, signalLine)
macdSell = ta.crossunder(macdLine, signalLine)

// RSI Calculation
rsi = ta.rsi(close, 14)
rsiOverbought = rsi > 65
rsiOversold = rsi < 35

// Bollinger Bands Calculation
basis = ta.sma(close, 20)
dev = 2 * ta.stdev(close, 20)
upperBand = basis + dev
lowerBand = basis - dev

// ATR Calculation for Volatility-Based Stop Loss and Take Profit
atr = ta.atr(14)
stopLoss = 3 * atr
takeProfit = 5 * atr

// Variables to track entry price and line
var line entryLine = na
var int tradeNumber = 0
var string tradeType = ""
var string tradeSignalComment = ""

// Buy Condition
buyCondition = (macdBuy or rsiOversold or close < lowerBand)

// Sell Condition
sellCondition = (macdSell or rsiOverbought or close > upperBand)

// Strategy Entry and Alerts
if (buyCondition and strategy.opentrades == 0)  // Open a new buy trade
    // Remove the previous entry line if it exists
    // if not na(entryLine)
    //     line.delete(entryLine)
    
    // Adjust the entry price by adding the spread (ask price)
    buyPrice = close + spread

    // Enter a new buy trade at the ask price, and close it with the bid price
    strategy.entry("Buy", strategy.long, stop=buyPrice - stopLoss, limit=buyPrice + takeProfit, comment="Enter buy $" + str.tostring(buyPrice))
    tradeNumber := tradeNumber + 1  // Increment trade number
    tradeType := "Entry Long"
    tradeSignalComment := "Enter buy trade"
    
    // Plot new dotted entry line for the current trade
    // entryLine := line.new(bar_index, buyPrice, bar_index + 50, buyPrice, width=1, color=color.green, style=line.style_dotted)
    
    // Send alert for the buy entry
    alert("Trade No: " + str.tostring(tradeNumber) + "\n" +
          "Signal: " + tradeType + " - " + tradeSignalComment + "\n" +
          "Date/Time: " + str.format("{0,date,dd-MM-yyyy HH:mm}", time) + "\n" +
          "Price: " + str.tostring(buyPrice), alert.freq_once_per_bar_close)

if (sellCondition and strategy.opentrades == 0)  // Open a new sell trade
    // Remove the previous entry line if it exists
    // if not na(entryLine)
    //     line.delete(entryLine)
    
    // Adjust the entry price by subtracting the spread (bid price)
    sellPrice = close - spread

    // Enter a new sell trade at the bid price, and close it with the ask price
    strategy.entry("Sell", strategy.short, stop=sellPrice + stopLoss, limit=sellPrice - takeProfit, comment="Enter sell $" + str.tostring(sellPrice))
    tradeNumber := tradeNumber + 1  // Increment trade number
    tradeType := "Entry Short"
    tradeSignalComment := "Enter sell trade"
    
    // Plot new dotted entry line for the current trade
    // entryLine := line.new(bar_index, sellPrice, bar_index + 50, sellPrice, width=1, color=color.red, style=line.style_dotted)
    
    // Send alert for the sell entry
    alert("Trade No: " + str.tostring(tradeNumber) + "\n" +
          "Signal: " + tradeType + " - " + tradeSignalComment + "\n" +
          "Date/Time: " + str.format("{0,date,dd-MM-yyyy HH:mm}", time) + "\n" +
          "Price: " + str.tostring(sellPrice), alert.freq_once_per_bar_close)

// Exit conditions and alerts
if (strategy.position_size > 0 and sellCondition)  // Close buy when sell conditions met
    // Adjust the exit price by subtracting the spread (bid price)
    exitPrice = close - spread
    strategy.close("Buy", comment="Exit buy $" + str.tostring(exitPrice))
    
    // Remove the entry line when the trade is closed
    // if not na(entryLine)
    //     line.delete(entryLine)
    
    // Send alert for the buy exit
    tradeType := "Exit Long"
    tradeSignalComment := "Exit buy trade"
    alert("Trade No: " + str.tostring(tradeNumber) + "\n" +
          "Signal: " + tradeType + " - "  + tradeSignalComment + "\n" +
          "Date/Time: " + str.format("{0,date,dd-MM-yyyy HH:mm}", time) + "\n" +
          "Price: " + str.tostring(exitPrice), alert.freq_once_per_bar_close)

if (strategy.position_size < 0 and buyCondition)  // Close sell when buy conditions met
    // Adjust the exit price by adding the spread (ask price)
    exitPrice = close + spread
    strategy.close("Sell", comment="Exit sell $" + str.tostring(exitPrice))
    
    // Remove the entry line when the trade is closed
    // if not na(entryLine)
    //     line.delete(entryLine)
    
    // Send alert for the sell exit
    tradeType := "Exit Short"
    tradeSignalComment := "Exit sell trade"
    alert("Trade No: " + str.tostring(tradeNumber) + "\n" +
          "Signal: " + tradeType + " - " + tradeSignalComment + "\n" +
          "Date/Time: " + str.format("{0,date,dd-MM-yyyy HH:mm}", time) + "\n" +
          "Price: " + str.tostring(exitPrice), alert.freq_once_per_bar_close)

// Plot Indicators
plot(upperBand, title="Upper Bollinger Band", color=color.blue)
plot(lowerBand, title="Lower Bollinger Band", color=color.blue)