
Strategi ini adalah sistem perdagangan berdasarkan sinyal silang multi-indeks moving average (EMA), yang menggabungkan indikator EMA dari periode yang berbeda dan mekanisme stop loss dinamis ATR. Strategi ini menggunakan 10 siklus, 39 siklus, 73 siklus EMA sebagai indikator sinyal utama, sementara memperkenalkan 143 siklus EMA periode waktu tinggi sebagai filter tren, dan mengatur stop loss dan profit target melalui indikator ATR.
Logika inti dari strategi ini didasarkan pada sinyal silang dan konfirmasi tren dari beberapa EMA. Sistem menghasilkan sinyal multitasking ketika EMA jangka pendek (siklus 10) melintasi EMA jangka menengah (siklus 39) dan harga berada di atas EMA jangka panjang (siklus 73) dan EMA jangka waktu yang lebih tinggi (siklus 143). Sebaliknya, ketika EMA jangka pendek melintasi EMA jangka menengah ke bawah dan harga berada di bawah EMA jangka panjang dan EMA jangka waktu yang lebih tinggi, sistem menghasilkan sinyal kosong.
Strategi ini menggunakan beberapa EMA silang yang menggabungkan stop loss dinamis ATR untuk membangun sistem perdagangan yang menggabungkan pelacakan tren dan manajemen risiko. Keuntungan utama dari strategi ini adalah mekanisme konfirmasi dan manajemen posisi dinamis dalam periode waktu yang berbeda, tetapi juga perlu memperhatikan risiko yang ditimbulkan oleh pasar lateral dan keterlambatan.
/*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")