Sumber dimuat naik... memuat...

Strategi Peningkatan Keuntungan EMA Multi-Level Multi-Periode Crossover Dynamic

Penulis:ChaoZhang, Tarikh: 2025-01-06 10:50:38
Tag:EMATPSLRSIMACDCCIATRROCPFIOBV

img

Ringkasan

Strategi ini adalah sistem dagangan berdasarkan Exponential Moving Averages (EMA), terutama menggunakan persilangan EMA20 dan EMA50 untuk mengenal pasti perubahan trend pasaran. Strategi ini mempunyai titik mengambil keuntungan pelbagai peringkat yang dinamik digabungkan dengan mekanisme stop-loss untuk kawalan risiko. Sistem ini secara visual memaparkan arah trend pasaran melalui perubahan warna latar belakang, membantu peniaga memahami pergerakan pasaran dengan lebih baik.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan aspek berikut:

  1. Menggunakan persilangan EMA20 dan EMA50 untuk menentukan arah trend: menjana isyarat beli apabila EMA20 melintasi di atas EMA50, dan isyarat jual apabila melintasi di bawah EMA50.
  2. Secara dinamik menetapkan empat sasaran keuntungan berdasarkan julat lilin sebelumnya:
    • TP1 ditetapkan pada julat 0.5x
    • TP2 ditetapkan pada julat 1.0x
    • TP3 ditetapkan pada julat 1.5x
    • TP4 ditetapkan pada julat 2.0x
  3. Menetapkan titik stop-loss 3% untuk kawalan risiko
  4. Menampilkan arah trend melalui warna latar belakang lilin: hijau untuk trend menaik dan merah untuk trend menurun

Kelebihan Strategi

  1. Tetapan mengambil keuntungan dinamik: menyesuaikan sasaran keuntungan secara automatik berdasarkan turun naik pasaran masa nyata
  2. Mekanisme keuntungan pelbagai peringkat: memastikan kunci keuntungan sambil membolehkan trend berkembang sepenuhnya
  3. Visualisasi yang luar biasa: arah trend ditunjukkan dengan jelas melalui warna latar belakang
  4. Kawalan risiko yang komprehensif: Stop-loss tetap berkesan mengawal kerugian maksimum setiap perdagangan
  5. Parameter fleksibel: peniaga boleh menyesuaikan pengganda keuntungan dan peratusan stop-loss berdasarkan keadaan pasaran

Risiko Strategi

  1. Kelewatan EMA: kelewatan yang melekat dalam isyarat EMA boleh menyebabkan titik kemasukan tertunda
  2. Risiko pasaran sampingan: boleh menghasilkan isyarat palsu yang kerap di pasaran yang berbeza
  3. Stop-loss tetap: Stop berasaskan peratusan mungkin tidak sesuai dengan semua keadaan pasaran
  4. Jarak mengambil keuntungan: selang sasaran keuntungan mungkin terlalu luas atau sempit di pasaran yang tidak menentu

Arahan Pengoptimuman Strategi

  1. Memperkenalkan penunjuk tambahan: tambah RSI atau MACD untuk pengesahan isyarat
  2. Mengoptimumkan mekanisme stop-loss: mempertimbangkan menggunakan ATR untuk jarak stop-loss dinamik
  3. Tambah penapisan masa: melaksanakan tetingkap masa perdagangan untuk mengelakkan tempoh yang sangat tidak menentu
  4. Meningkatkan pengurusan kedudukan: menyesuaikan saiz kedudukan secara dinamik berdasarkan turun naik pasaran
  5. Meningkatkan pengesahan isyarat: menambah penunjuk jumlah sebagai syarat pengesahan tambahan

Ringkasan

Ini adalah strategi trend yang terstruktur dengan logik yang jelas. Ia menangkap trend melalui persimpangan EMA, mengurus keuntungan dengan titik mengambil keuntungan dinamik, dan mengawal risiko dengan stop-loss. Reka bentuk visualisasi strategi ini intuitif dan berkesan, dengan tetapan parameter yang fleksibel. Walaupun ia mempunyai masalah lag EMA yang melekat, pengoptimuman dan penyempurnaan dapat meningkatkan lagi kestabilan dan keuntungan strategi.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy with Take Profit and Candle Highlighting", overlay=true)

// Define the EMAs
ema200 = ta.ema(close, 200)
ema50 = ta.ema(close, 50)
ema20 = ta.ema(close, 20)

// Plot the EMAs
plot(ema200, color=#c204898e, title="EMA 200", linewidth=2)
plot(ema50, color=color.blue, title="EMA 50", linewidth=2)
plot(ema20, color=color.orange, title="EMA 20", linewidth=2)

// Define Buy and Sell conditions based on EMA crossover
buySignal = ta.crossover(ema20, ema50)  // EMA 20 crosses above EMA 50 (Bullish)
sellSignal = ta.crossunder(ema20, ema50) // EMA 20 crosses below EMA 50 (Bearish)

// Define input values for Take Profit multipliers
tp1_multiplier = input.float(0.5, title="TP1 Multiplier", minval=0.1, maxval=5.0, step=0.1)
tp2_multiplier = input.float(1.0, title="TP2 Multiplier", minval=0.1, maxval=5.0, step=0.1)
tp3_multiplier = input.float(1.5, title="TP3 Multiplier", minval=0.1, maxval=5.0, step=0.1)
tp4_multiplier = input.float(2.0, title="TP4 Multiplier", minval=0.1, maxval=5.0, step=0.1)

// Define Take Profit Levels as float variables initialized with na
var float takeProfit1 = na
var float takeProfit2 = na
var float takeProfit3 = na
var float takeProfit4 = na

// Calculate take profit levels based on the multipliers
if buySignal
    takeProfit1 := high + (high - low) * tp1_multiplier  // TP1: Set TP at multiplier of previous range above the high
    takeProfit2 := high + (high - low) * tp2_multiplier  // TP2: Set TP at multiplier of previous range above the high
    takeProfit3 := high + (high - low) * tp3_multiplier  // TP3: Set TP at multiplier of previous range above the high
    takeProfit4 := high + (high - low) * tp4_multiplier  // TP4: Set TP at multiplier of previous range above the high

if sellSignal
    takeProfit1 := low - (high - low) * tp1_multiplier  // TP1: Set TP at multiplier of previous range below the low
    takeProfit2 := low - (high - low) * tp2_multiplier  // TP2: Set TP at multiplier of previous range below the low
    takeProfit3 := low - (high - low) * tp3_multiplier  // TP3: Set TP at multiplier of previous range below the low
    takeProfit4 := low - (high - low) * tp4_multiplier  // TP4: Set TP at multiplier of previous range below the low

// Plot Take Profit Levels on the chart
plot(takeProfit1, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 1")
plot(takeProfit2, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 2")
plot(takeProfit3, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 3")
plot(takeProfit4, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 4")

// Create buy and sell signals on the chart
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")

// Highlight the candles based on trend direction
uptrend = ta.crossover(ema20, ema50)  // EMA 20 crosses above EMA 50 (Bullish)
downtrend = ta.crossunder(ema20, ema50)  // EMA 20 crosses below EMA 50 (Bearish)

// Highlighting candles based on trend
bgcolor(color = ema20 > ema50 ? color.new(color.green, 80) : ema20 < ema50 ? color.new(color.red, 80) : na)

// Execute buy and sell orders on the chart
strategy.entry("Buy", strategy.long, when=buySignal)
strategy.entry("Sell", strategy.short, when=sellSignal)

// Exit conditions based on Take Profit levels
strategy.exit("Take Profit 1", "Buy", limit=takeProfit1)
strategy.exit("Take Profit 2", "Buy", limit=takeProfit2)
strategy.exit("Take Profit 3", "Buy", limit=takeProfit3)
strategy.exit("Take Profit 4", "Buy", limit=takeProfit4)

strategy.exit("Take Profit 1", "Sell", limit=takeProfit1)
strategy.exit("Take Profit 2", "Sell", limit=takeProfit2)
strategy.exit("Take Profit 3", "Sell", limit=takeProfit3)
strategy.exit("Take Profit 4", "Sell", limit=takeProfit4)

// Optionally, add a stop loss
stopLoss = 0.03  // Example: 3% stop loss
strategy.exit("Stop Loss", "Buy", stop=close * (1 - stopLoss))
strategy.exit("Stop Loss", "Sell", stop=close * (1 + stopLoss))


Berkaitan

Lebih lanjut