
Strategi ini adalah sistem perdagangan berdasarkan persilangan Purata Pergerakan Eksponen (EMA), digabungkan dengan Average True Range (ATR) untuk mencapai pengurusan risiko dinamik. Strategi ini menggunakan garisan EMA jangka pendek dan jangka panjang untuk menangkap perubahan momentum dalam aliran harga, dan menggunakan ATR untuk menetapkan kedudukan ambil untung dan henti rugi secara dinamik, mencapai kawalan tepat terhadap risiko dagangan.
Logik teras strategi adalah berdasarkan isyarat silang dua purata bergerak eksponen bagi tempoh yang berbeza (9 dan 21). Apabila EMA jangka pendek melintasi EMA jangka panjang ke atas, isyarat panjang dijana apabila EMA jangka pendek melintasi EMA jangka panjang ke bawah, isyarat pendek dijana. Untuk mengurus risiko dengan lebih baik, strategi ini memperkenalkan mekanisme henti untung dan henti rugi yang dinamik berdasarkan ATR 14 tempoh Tahap ambil untung ditetapkan kepada 2 kali ATR, dan tahap henti rugi ditetapkan kepada 1 kali ATR. Tetapan ini memastikan ruang keuntungan yang mencukupi, dan boleh mengawal risiko dalam masa.
Strategi ini merealisasikan sistem perdagangan yang agak lengkap dengan menggabungkan sistem silang EMA klasik dan pengurusan risiko ATR dinamik. Kelebihan utama strategi ini ialah keupayaan pengurusan risiko yang dinamik dan ciri-ciri mengikut arah aliran yang baik. Melalui arahan pengoptimuman yang dicadangkan, masih terdapat ruang untuk penambahbaikan strategi selanjutnya. Apabila digunakan dalam masa nyata, adalah disyorkan untuk menjalankan ujian belakang dan pengoptimuman parameter yang mencukupi, dan membuat pelarasan yang sesuai berdasarkan ciri pasaran tertentu.
/*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("Improved EMA Crossover Strategy", overlay=true)
// User-defined inputs for EMAs
shortTermLength = input(9, title="Short-Term EMA Length")
longTermLength = input(21, title="Long-Term EMA Length")
// Dynamic Take Profit and Stop Loss
atrLength = input(14, title="ATR Length")
atrMultiplierTP = input(2.0, title="ATR Multiplier for Take Profit")
atrMultiplierSL = input(1.0, title="ATR Multiplier for Stop Loss")
// Calculate EMAs and ATR
shortTermEMA = ta.ema(close, shortTermLength)
longTermEMA = ta.ema(close, longTermLength)
atr = ta.atr(atrLength)
// Plot the EMAs
plot(shortTermEMA, color=color.blue, title="Short-Term EMA")
plot(longTermEMA, color=color.red, title="Long-Term EMA")
// Generate Entry Conditions
longCondition = ta.crossover(shortTermEMA, longTermEMA)
shortCondition = ta.crossunder(shortTermEMA, longTermEMA)
// Optional Debugging: Print conditions (you can remove this later)
var label longLabel = na
var label shortLabel = na
if longCondition
longLabel := label.new(bar_index, high, "Buy Signal", color=color.green, style=label.style_label_down, textcolor=color.white)
if shortCondition
shortLabel := label.new(bar_index, low, "Sell Signal", color=color.red, style=label.style_label_up, textcolor=color.white)
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", limit=close + atr * atrMultiplierTP, stop=close - atr * atrMultiplierSL)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", limit=close - atr * atrMultiplierTP, stop=close + atr * atrMultiplierSL)