
Ini ialah strategi mengikut arah aliran berdasarkan persilangan berbilang purata bergerak eksponen (EMA). Strategi ini menggunakan perhubungan silang EMA jangka pendek 10 tempoh, EMA jangka sederhana 50 dan EMA jangka panjang 200 untuk menangkap arah aliran pasaran dan memasuki dagangan panjang dan pendek apabila syarat dipenuhi. Idea teras strategi ini adalah untuk menapis bunyi pasaran melalui purata bergerak bagi pelbagai bingkai masa, mengenal pasti arah aliran utama, dan memperoleh keuntungan apabila aliran itu berterusan.
Strategi ini menggunakan sistem silang EMA tiga kali ganda sebagai mekanisme penjanaan isyarat dagangan. Secara khusus:
Strategi ini ialah sistem penjejakan arah aliran klasik Melalui penggunaan berbilang EMA yang diselaraskan, ia bukan sahaja memastikan pemahaman arah aliran utama, tetapi juga membolehkan henti rugi untung dan rugi tepat pada masanya. Walaupun terdapat lag tertentu, melalui tetapan parameter yang munasabah dan pengurusan risiko, pulangan yang stabil masih boleh diperolehi dalam pasaran trend. Terdapat banyak ruang untuk pengoptimuman strategi, dan prestasi boleh dipertingkatkan dengan memperkenalkan penunjuk teknikal lain dan menambah baik peraturan dagangan.
/*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")