Strategi dagangan stop loss dinamik EMA

EMA RSI MACD
Tarikh penciptaan: 2024-06-17 16:17:31 Akhirnya diubah suai: 2024-06-17 16:17:31
Salin: 0 Bilangan klik: 635
1
fokus pada
1617
Pengikut

Strategi dagangan stop loss dinamik EMA

Gambaran keseluruhan

Strategi ini didasarkan pada isyarat silang indeks pergerakan rata-rata 20 hari dan 200 hari (EMA) dan digabungkan dengan penunjuk yang agak lemah (RSI) dan penunjuk penyebaran penutup rata-rata bergerak (MACD) untuk pengesahan untuk menghasilkan isyarat membeli dan menjual. Strategi ini juga menggunakan kaedah berhenti kehilangan dinamik dan sasaran pendapatan tetap untuk menguruskan risiko perdagangan dan mengunci keuntungan.

Prinsip Strategi

  1. Mengira EMA 20 dan 200 hari, apabila EMA 20 di atas melewati EMA 200 hari, menghasilkan isyarat beli; apabila EMA 20 di bawah melewati EMA 200 hari, menghasilkan isyarat jual.
  2. Penggunaan RSI dan MACD untuk mengesahkan isyarat silang EMA hanya dilakukan apabila RSI lebih tinggi daripada 50 dan garis MACD lebih tinggi daripada garis isyarat; hanya dilakukan apabila RSI lebih rendah daripada 50 dan garis MACD lebih rendah daripada garis isyarat.
  3. Tetapkan kadar keuntungan sasaran tetap (seperti 20%) dan kadar berhenti rugi awal (seperti 10%).
  4. Apabila keuntungan memegang kedudukan mencapai kadar keuntungan yang disasarkan, harga hentian kerugian akan dinaikkan ke bawah 10% daripada harga semasa, untuk mencapai hentian dinamik.
  5. Apabila harga menyentuh harga hentian dinamik, kedudukan terbuka akan berakhir dengan keuntungan.

Kelebihan Strategik

  1. Gabungan beberapa petunjuk teknikal yang mengesahkan isyarat perdagangan meningkatkan kebolehpercayaan isyarat.
  2. Menggunakan kaedah Hentikan Kerosakan Dinamis, sementara mengunci keuntungan, memberi ruang untuk harga untuk menarik balik, mengelakkan penutupan terlalu awal.
  3. Menetapkan kadar pulangan sasaran yang tetap membantu mengawal risiko dan mencapai pulangan yang stabil.

Risiko Strategik

  1. Isyarat silang EMA boleh menyebabkan isyarat palsu yang kerap berlaku, menyebabkan kos dagangan meningkat.
  2. Dalam pasaran yang bergolak, strategi ini boleh menyebabkan kerugian berterusan.
  3. Tarikan sasaran untuk kadar keuntungan dan kadar kerugian yang tetap mungkin tidak sesuai dengan keadaan pasaran yang berbeza dan perlu disesuaikan dengan turun naik pasaran.

Arah pengoptimuman strategi

  1. Memperkenalkan lebih banyak petunjuk teknikal atau sentimen pasaran untuk meningkatkan ketepatan dan kebolehpercayaan isyarat.
  2. Menggunakan kadar keuntungan dan kerugian sasaran yang disesuaikan, menyesuaikan secara dinamik mengikut turun naik pasaran dan ciri-ciri aset.
  3. Menggabungkan trend pasaran dan kitaran turun naik, menetapkan parameter yang berbeza dalam keadaan pasaran yang berbeza.

ringkaskan

Strategi ini dijangka dapat menghasilkan keuntungan yang stabil di pasaran yang sedang berkembang melalui pengesahan isyarat silang EMA yang digabungkan dengan RSI dan MACD, serta kaedah pengurusan risiko untuk menghentikan kerugian yang dinamik dan keuntungan sasaran yang tetap. Tetapi, dalam pasaran yang bergolak, strategi ini mungkin menghadapi risiko perdagangan yang kerap dan kerugian berterusan. Oleh itu, lebih banyak pengoptimuman dan penambahbaikan diperlukan untuk meningkatkan kebolehpasaran dan ketahanan strategi.

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