
Strategi ini adalah sistem perdagangan pelacakan tren yang didasarkan pada moving average multi-indeks (EMA) dan indikator amplitudo real (ATR). Strategi ini mengkonfirmasi arah tren dengan menilai pola alignment dari beberapa garis rata, mencari peluang untuk membeli kembali dalam tren naik, dan menggunakan ATR untuk mengatur stop loss dan profit target. Metode ini memastikan stabilitas pelacakan tren, dan melalui ATR untuk menyesuaikan diri dengan dinamika fluktuasi pasar.
Logika inti dari strategi ini mencakup elemen-elemen kunci berikut:
Ini adalah strategi pelacakan tren yang terstruktur dan logis. Kombinasi dari pengakuan tren dengan beberapa garis rata-rata, penarikan kembali dan manajemen risiko dinamis ATR, memastikan strategi yang stabil dan memiliki kemampuan adaptasi yang baik. Meskipun ada beberapa risiko yang melekat, strategi ini dapat ditingkatkan lebih lanjut dengan stabilitas dan profitabilitas melalui arah optimasi yang disarankan.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover and ATR Target Strategy", overlay=true)
// Input parameters
emaShortLength = 20
emaMidLength1 = 50
emaMidLength2 = 100
emaLongLength = 200
atrLength = 14
// Calculate EMAs
ema20 = ta.ema(close, emaShortLength)
ema50 = ta.ema(close, emaMidLength1)
ema100 = ta.ema(close, emaMidLength2)
ema200 = ta.ema(close, emaLongLength)
ema21 = ta.ema(close, 21)
// Calculate ATR
atr = ta.atr(atrLength)
// Conditions for the strategy
emaCondition = ema20 > ema50 and ema50 > ema100 and ema100 > ema200
pullbackCondition = close <= ema21 and close >= ema50 //and close >= ema21 * 0.99 // Near 21 EMA (within 1%)
// Initialize variables for stop loss and take profitss
var float stopLossLevel = na
var float takeProfitLevel = na
// Check conditions on each bar close
if (bar_index > 0) // Ensures there is data to check
if emaCondition and pullbackCondition and strategy.position_size == 0 // Only buy if no open position
stopLossLevel := close - (1.5 * atr) // Set stop loss based on ATR at buy price
takeProfitLevel := close + (3.5 * atr) // Set take profit based on ATR at buy price
strategy.entry("Buy", strategy.long)
// Set stop loss and take profit for the active trade
if strategy.position_size > 0
strategy.exit("Take Profit", from_entry="Buy", limit=takeProfitLevel, stop=stopLossLevel)
// Plot EMAs for visualizationn
plot(ema20, color=color.blue, title="20 EMA")
plot(ema50, color=color.red, title="50 EMA")
plot(ema100, color=color.green, title="100 EMA")
plot(ema200, color=color.orange, title="200 EMA")
plot(ema21, color=color.purple, title="21 EMA")