
Ini adalah strategi mengikuti tren berdasarkan pada beberapa persilangan rata-rata pergerakan eksponensial (EMA). Strategi ini menggunakan hubungan persilangan EMA jangka pendek 10 periode, EMA jangka menengah 50 periode, dan EMA jangka panjang 200 periode untuk menangkap tren pasar dan memasuki perdagangan panjang dan pendek ketika persyaratannya terpenuhi. Ide inti dari strategi ini adalah menyaring kebisingan pasar melalui rata-rata pergerakan beberapa kerangka waktu, mengidentifikasi arah tren utama, dan memperoleh keuntungan ketika tren berlanjut.
Strategi ini menggunakan sistem persilangan tiga EMA sebagai mekanisme pembangkitan sinyal perdagangan. Secara khusus:
Strategi ini adalah sistem pelacakan tren klasik. Melalui penggunaan beberapa EMA yang terkoordinasi, strategi ini tidak hanya memastikan pemahaman tren utama, tetapi juga memungkinkan penghentian kerugian dan laba yang tepat waktu. Meskipun ada jeda tertentu, melalui pengaturan parameter yang wajar dan manajemen risiko, pengembalian yang stabil masih dapat diperoleh di pasar yang sedang tren. Ada banyak ruang untuk pengoptimalan strategi, dan kinerja dapat ditingkatkan dengan memperkenalkan indikator teknis lainnya dan meningkatkan aturan perdagangan.
/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("EMA Crossover Strategy (Enhanced Debug)", overlay=true)
// Inputs for EMA periods
shortEMA = input.int(10, title="Short EMA Period")
mediumEMA = input.int(50, title="Medium EMA Period")
longEMA = input.int(200, title="Long EMA Period")
// Calculating EMAs
emaShort = ta.ema(close, shortEMA)
emaMedium = ta.ema(close, mediumEMA)
emaLong = ta.ema(close, longEMA)
// Plot EMAs
plot(emaShort, color=color.green, title="Short EMA")
plot(emaMedium, color=color.blue, title="Medium EMA")
plot(emaLong, color=color.red, title="Long EMA")
// Conditions for entry and exit
longCondition = close > emaLong and ta.crossover(emaShort, emaMedium) and emaMedium > emaLong
shortCondition = close < emaLong and ta.crossunder(emaShort, emaMedium) and emaMedium < emaLong
closeLongCondition = ta.crossunder(emaShort, emaMedium)
closeShortCondition = ta.crossover(emaShort, emaMedium)
// Debugging labels for unexpected behavior
if (ta.crossover(emaShort, emaLong) and not ta.crossover(emaShort, emaMedium))
label.new(bar_index, high, "Short > Long", style=label.style_circle, color=color.red, textcolor=color.white)
// Debugging EMA relationships
if (emaMedium <= emaLong)
label.new(bar_index, high, "Medium < Long", style=label.style_cross, color=color.orange, textcolor=color.white)
// Entry logic
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Exit logic
if (closeLongCondition)
strategy.close("Long")
if (closeShortCondition)
strategy.close("Short")
// Display labels for signals
plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Buy Signal")
plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Sell Signal")