Strategi ini adalah sistem dagangan berdasarkan persimpangan purata bergerak eksponen (EMA), digabungkan dengan Julat Benar Purata (ATR) untuk pengurusan risiko dinamik. Strategi ini menggunakan garis EMA jangka pendek dan jangka panjang untuk menangkap perubahan momentum dalam trend harga, sambil menggunakan ATR untuk menetapkan tahap mengambil keuntungan dan stop-loss secara dinamik, mencapai kawalan yang tepat terhadap risiko dagangan.
Logik teras strategi ini adalah berdasarkan isyarat silang antara dua EMA dari tempoh yang berbeza (9 dan 21). Isyarat beli dihasilkan apabila EMA jangka pendek melintasi di atas EMA jangka panjang, sementara isyarat jual dihasilkan apabila EMA jangka pendek melintasi di bawah EMA jangka panjang. Untuk menguruskan risiko dengan lebih baik, strategi ini menggabungkan mekanisme mengambil keuntungan dan menghentikan kerugian dinamik berdasarkan ATR 14 tempoh, dengan tahap mengambil keuntungan ditetapkan pada 2x ATR dan tahap berhenti kerugian pada 1x ATR, memastikan potensi keuntungan yang mencukupi sambil mengekalkan kawalan risiko yang tepat pada masanya.
Strategi ini mewujudkan sistem perdagangan yang komprehensif dengan menggabungkan sistem silang EMA klasik dengan pengurusan risiko ATR dinamik. Kekuatannya utama terletak pada keupayaan pengurusan risiko dinamik dan ciri-ciri trend yang berkesan. Melalui arah pengoptimuman yang dicadangkan, terdapat ruang untuk penambahbaikan lanjut. Untuk pelaksanaan perdagangan langsung, disyorkan untuk menjalankan pengujian balik dan pengoptimuman parameter yang menyeluruh, dengan penyesuaian 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)