
Strategi ini adalah sistem perdagangan trend-following yang menggabungkan indeks moving average (EMA) dan mekanisme stop loss berdasarkan amplitudo pergerakan sebenar (ATR). Strategi ini menggunakan EMA 9 dan 21 kitaran untuk mengenal pasti trend pasaran, sambil menggunakan ATR untuk menyesuaikan kedudukan stop loss secara dinamik, mewujudkan gabungan organik trend-following dan kawalan risiko.
Logik teras strategi ini merangkumi dua bahagian utama: penilaian trend dan kawalan risiko. Dalam penilaian trend, trend pasaran ditentukan dengan memantau persilangan EMA cepat (siklus 9) dan EMA perlahan (siklus 21). Apabila ia melintasi garis perlahan, ia akan mencetuskan isyarat ganda. Apabila ia melintasi garis perlahan, ia akan mencetuskan isyarat kosong.
Strategi ini membina satu sistem perdagangan trend yang lengkap dengan menggabungkan trend penilaian silang garis sejajar dan ATR yang dinamik. Keunggulan strategi ini adalah menilai objektif standard, fleksibiliti kawalan risiko, tetapi juga perlu berhati-hati dalam menangani risiko pasaran yang bergolak dan masalah keterlambatan isyarat.
/*backtest
start: 2024-02-20 00:00:00
end: 2024-05-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/
//@version=5
strategy("EMA 9/21 + ATR SL Strategy", shorttitle="EMA+ATR", overlay=true)
// ===== Input Parameters ===== //
emaFastLen = input.int(9, "Fast EMA")
emaSlowLen = input.int(21, "Slow EMA")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Multiplier")
// ===== EMA Calculation ===== //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
// ===== ATR Calculation ===== //
atrValue = ta.atr(atrLen)
// ===== Conditions for Entry ===== //
longCondition = ta.crossover(emaFast, emaSlow) // Long when 9 EMA crosses above 21 EMA
shortCondition = ta.crossunder(emaFast, emaSlow) // Short when 9 EMA crosses below 21 EMA
// ===== Entry Commands ===== //
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// ===== Set Stop-Loss Using ATR ===== //
//
// For LONG: stop-loss = entry price - (atrMult * ATR)
// For SHORT: stop-loss = entry price + (atrMult * ATR)
//
// Note: You can adjust the atrMult values based on market volatility
//
if strategy.position_size > 0
// If holding LONG, define stop-loss below the entry price
strategy.exit("Exit Long", "Long", stop = strategy.position_avg_price - atrMult * atrValue)
if strategy.position_size < 0
// If holding SHORT, define stop-loss above the entry price
strategy.exit("Exit Short", "Short", stop = strategy.position_avg_price + atrMult * atrValue)