Sumber dimuat naik... memuat...

Strategi Dagangan Stop-Loss Dinamik EMA

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

img

Ringkasan

Strategi ini menghasilkan isyarat beli dan jual berdasarkan persilangan purata bergerak eksponen 20 hari dan 200 hari (EMA), yang disahkan oleh Indeks Kekuatan Relatif (RSI) dan penunjuk Perbezaan Convergensi Purata Bergerak (MACD). Strategi ini menggunakan kaedah stop-loss dinamik dan sasaran keuntungan tetap untuk menguruskan risiko perdagangan dan mengunci keuntungan.

Prinsip Strategi

  1. Mengira EMA 20 hari dan 200 hari. Isyarat beli dihasilkan apabila EMA 20 hari melintasi EMA 200 hari, dan isyarat jual dihasilkan apabila EMA 20 hari melintasi EMA 200 hari.
  2. Gunakan RSI dan MACD untuk mengesahkan isyarat silang EMA. Isyarat beli hanya dilaksanakan apabila RSI melebihi 50 dan garis MACD di atas garis isyarat. Isyarat jual hanya dilaksanakan apabila RSI di bawah 50 dan garis MACD di bawah garis isyarat.
  3. Tetapkan sasaran keuntungan tetap (contohnya, 20%) dan tahap stop-loss awal (contohnya, 10%).
  4. Apabila keuntungan yang tidak direalisasikan mencapai sasaran keuntungan, menaikkan harga stop-loss kepada 10% di bawah harga semasa, melaksanakan stop-loss dinamik.
  5. Tutup kedudukan untuk keuntungan apabila harga mencapai tahap stop-loss dinamik.

Kelebihan Strategi

  1. Menggabungkan beberapa penunjuk teknikal untuk mengesahkan isyarat perdagangan meningkatkan kebolehpercayaan isyarat.
  2. Kaedah stop-loss dinamik membantu mengunci keuntungan sambil memberi harga ruang untuk menarik balik, mengelakkan penutupan kedudukan yang lebih awal.
  3. Menetapkan sasaran keuntungan tetap membantu mengawal risiko dan mencapai pulangan yang stabil.

Risiko Strategi

  1. Isyarat silang EMA boleh menghasilkan isyarat palsu yang kerap, yang membawa kepada peningkatan kos dagangan.
  2. Dalam pasaran yang bergelombang, strategi mungkin mengalami kerugian berturut-turut.
  3. Sasaran keuntungan tetap dan tahap stop-loss mungkin tidak menyesuaikan diri dengan baik dengan keadaan pasaran yang berbeza dan mungkin memerlukan penyesuaian berdasarkan turun naik pasaran.

Arahan Pengoptimuman Strategi

  1. Memasukkan penunjuk teknikal tambahan atau penunjuk sentimen pasaran untuk meningkatkan ketepatan dan kebolehpercayaan isyarat.
  2. Mengambil sasaran keuntungan adaptif dan paras stop-loss yang menyesuaikan secara dinamik berdasarkan turun naik pasaran dan ciri aset.
  3. Mempertimbangkan trend pasaran dan kitaran turun naik, dan menggunakan tetapan parameter yang berbeza dalam persekitaran pasaran yang berbeza.

Ringkasan

Dengan menggabungkan isyarat silang EMA dengan pengesahan RSI dan MACD, bersama-sama dengan kaedah pengurusan risiko stop-loss dinamik dan sasaran keuntungan tetap, strategi ini bertujuan untuk mencapai keuntungan yang stabil di pasaran trend. Walau bagaimanapun, di pasaran yang bergolak, strategi ini mungkin menghadapi risiko perdagangan yang kerap dan kerugian berturut-turut. Oleh itu, pengoptimuman dan penambahbaikan lanjut diperlukan untuk meningkatkan kemampuan menyesuaikan diri 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 lanjut