Sumber daya yang dimuat... Pemuatan...

Strategi Perdagangan Stop-Loss Dinamis EMA

Penulis:ChaoZhang, Tanggal: 2024-06-17 16:17:31
Tag:EMARSIMACD

img

Gambaran umum

Strategi ini menghasilkan sinyal beli dan jual berdasarkan crossover dari 20 hari dan 200 hari Eksponensial Moving Averages (EMA), yang dikonfirmasi oleh Indeks Kekuatan Relatif (RSI) dan indikator Moving Average Convergence Divergence (MACD).

Prinsip Strategi

  1. Menghitung EMA 20 hari dan 200 hari. Sinyal beli dihasilkan ketika EMA 20 hari melintasi di atas EMA 200 hari, dan sinyal jual dihasilkan ketika EMA 20 hari melintasi di bawah EMA 200 hari.
  2. Gunakan RSI dan MACD untuk mengkonfirmasi sinyal crossover EMA. Sinyal beli hanya dieksekusi ketika RSI di atas 50 dan garis MACD di atas garis sinyal. Sinyal jual hanya dieksekusi ketika RSI di bawah 50 dan garis MACD di bawah garis sinyal.
  3. Tetapkan target keuntungan tetap (misalnya, 20%) dan tingkat stop-loss awal (misalnya, 10%).
  4. Ketika keuntungan yang belum direalisasikan mencapai target keuntungan, naikkan harga stop loss menjadi 10% di bawah harga saat ini, menerapkan stop loss dinamis.
  5. Tutup posisi untuk mendapatkan keuntungan ketika harga mencapai level stop loss dinamis.

Keuntungan Strategi

  1. Menggabungkan beberapa indikator teknis untuk mengkonfirmasi sinyal perdagangan meningkatkan keandalan sinyal.
  2. Metode stop-loss dinamis membantu mengunci keuntungan sambil memberi harga ruang untuk mundur, menghindari penutupan posisi dini.
  3. Menetapkan target keuntungan tetap membantu mengendalikan risiko dan mencapai pengembalian yang stabil.

Risiko Strategi

  1. Sinyal silang EMA dapat menghasilkan sinyal palsu yang sering, yang mengarah pada peningkatan biaya perdagangan.
  2. Di pasar yang bergolak, strategi dapat mengalami kerugian berturut-turut.
  3. Target laba tetap dan tingkat stop-loss mungkin tidak beradaptasi dengan baik dengan kondisi pasar yang berbeda dan mungkin memerlukan penyesuaian berdasarkan volatilitas pasar.

Arah Optimasi Strategi

  1. Masukkan indikator teknis tambahan atau indikator sentimen pasar untuk meningkatkan akurasi dan keandalan sinyal.
  2. Mengadopsi target keuntungan adaptif dan tingkat stop loss yang menyesuaikan secara dinamis berdasarkan volatilitas pasar dan karakteristik aset.
  3. Mempertimbangkan tren pasar dan siklus volatilitas, dan menerapkan pengaturan parameter yang berbeda dalam lingkungan pasar yang berbeda.

Ringkasan

Dengan menggabungkan sinyal crossover EMA dengan konfirmasi RSI dan MACD, bersama dengan metode manajemen risiko stop-loss dan target keuntungan tetap yang dinamis, strategi ini bertujuan untuk mencapai keuntungan yang stabil di pasar tren. Namun, di pasar yang bergolak, strategi dapat menghadapi risiko perdagangan yang sering dan kerugian berturut-turut. Oleh karena itu, optimasi dan perbaikan lebih lanjut diperlukan untuk meningkatkan kemampuan beradaptasi dan ketahanan strategi.


/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy with RSI and MACD Confirmation and Dynamic Trailing Stop Loss", overlay=true)

// Calculate EMAs
ema20 = ta.ema(close, 20)
ema200 = ta.ema(close, 200)

// Calculate RSI
rsi = ta.rsi(close, 14)

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)

// Plot EMAs, RSI, and MACD on the chart
plot(ema20, color=color.blue, title="EMA 20")
plot(ema200, color=color.red, title="EMA 200")
hline(70, "Overbought", color=color.red)
hline(30, "Oversold", color=color.green)
plot(rsi, title="RSI", color=color.orange)
hline(0, "Zero Line", color=color.gray)
plot(macdLine, title="MACD Line", color=color.aqua)
plot(signalLine, title="Signal Line", color=color.fuchsia)

// Strategy parameters
targetProfitPercent = 20
trailingStopIncrement = 10

// Strategy variables
var float initialStopLevel = na
var float trailingStopLevel = na

// Strategy rules with RSI and MACD confirmation
longCondition = ta.crossover(ema20, ema200) and rsi > 50 and macdLine > signalLine
shortCondition = ta.crossunder(ema20, ema200) and rsi < 50 and macdLine < signalLine

// Execute trades
if (longCondition)
    strategy.entry("Buy Call", strategy.long)
    initialStopLevel := strategy.position_avg_price * (1 - 0.10) // Initial stop-loss at 10% below entry price

if (shortCondition)
    strategy.entry("Buy Put", strategy.short)

// Calculate profit and loss targets
takeProfit = strategy.position_avg_price * (1 + targetProfitPercent / 100) // 20% profit target

// Update trailing stop loss
if (strategy.opentrades > 0)
    if (strategy.position_size > 0) // Long position
        if (strategy.netprofit >= takeProfit)
            // Update stop-loss based on profit increments
            if (trailingStopLevel == na)
                trailingStopLevel := strategy.position_avg_price * (1 - 0.10) // Initial trailing stop at 10% below entry price
            else
                if (strategy.position_avg_price * (1 - 0.10) > trailingStopLevel)
                    trailingStopLevel := strategy.position_avg_price * (1 - 0.10) // Increase stop-loss to 10% below current price
        
        // Apply trailing stop loss
        strategy.exit("Take Profit", "Buy Call", stop=trailingStopLevel)

// Plot buy and sell signals on the chart
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")


Berkaitan

Lebih banyak