
Strategi ini adalah sistem perdagangan berdasarkan tanda silang EMA berganda, yang menggabungkan indikator EMA dan mekanisme berhenti dinamik ATR dari pelbagai kitaran. Strategi ini menggunakan EMA 10 kitaran, 39 kitaran, 73 kitaran sebagai indikator isyarat utama, sambil memperkenalkan 143 kitaran EMA masa tinggi sebagai penapis trend, dan menetapkan sasaran berhenti dan keuntungan melalui indikator ATR.
Logik teras strategi ini adalah berdasarkan tanda silang dan pengesahan trend EMA berganda. Sistem menghasilkan banyak isyarat apabila EMA jangka pendek (10 kitaran) melintasi EMA jangka menengah (39 kitaran) ke atas dan harga berada di atas EMA jangka panjang (73 kitaran) dan EMA jangka masa yang lebih tinggi (143 kitaran). Sebaliknya, apabila EMA jangka pendek melintasi EMA jangka menengah ke bawah dan harga berada di bawah EMA jangka panjang dan EMA jangka masa yang lebih tinggi, sistem menghasilkan isyarat kosong.
Strategi ini membina sistem perdagangan yang menggabungkan pemantauan trend dan pengurusan risiko dengan berhenti dinamik ATR melalui beberapa EMA silang. Kelebihan utama strategi ini adalah mekanisme pengesahan dan pengurusan kedudukan yang dinamik dalam pelbagai tempoh masa, tetapi juga perlu memperhatikan risiko yang dibawa oleh pasaran horizontal dan keterbelakangan.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced EMA Crossover Strategy", overlay=true)
// Define the EMA lengths
ema_short_length = 10
ema_long_length = 39
ema_filter_length = 73
ema_higher_tf_length = 143
// Calculate the EMAs
ema_short = ta.ema(close, ema_short_length)
ema_long = ta.ema(close, ema_long_length)
ema_filter = ta.ema(close, ema_filter_length)
ema_higher_tf = request.security(syminfo.tickerid, "D", ta.ema(close, ema_higher_tf_length))
// Calculate ATR for volatility-based stop loss and take profit
atr_length = 14
atr = ta.atr(atr_length)
// Plot the EMAs
plot(ema_short, title="EMA 10", color=color.blue)
plot(ema_long, title="EMA 35", color=color.red)
plot(ema_filter, title="EMA 75", color=color.orange)
plot(ema_higher_tf, title="EMA Higher TF", color=color.purple)
// EMA crossover conditions with EMA 75 and higher timeframe EMA filter
longCondition = ta.crossover(ema_short, ema_long) and close > ema_filter and close > ema_higher_tf
shortCondition = ta.crossunder(ema_short, ema_long) and close < ema_filter and close < ema_higher_tf
// Execute long trade with dynamic stop loss and take profit
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Long", limit=close + 2 * atr, stop=close - 1 * atr)
// Execute short trade with dynamic stop loss and take profit
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Short", limit=close - 2 * atr, stop=close + 1 * atr)
// Plot signals on the chart
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")