
Strategi ini adalah sistem pengesanan trend berdasarkan tanda silang EMA pelbagai indeks bergerak. Dengan menggabungkan EMA 20, 50 dan 150 kitaran, ia membina rangka kerja pengiktirafan trend dan pelaksanaan perdagangan yang lengkap. Strategi ini menggunakan hubungan silang antara EMA kitaran yang berbeza untuk menentukan perubahan trend pasaran dan masa perdagangan tertentu.
Strategi ini menggunakan rata-rata bergerak indeks tiga kitaran yang berbeza: EMA20 untuk trend jangka pendek, EMA50 untuk trend jangka menengah, EMA150 untuk trend jangka panjang. Apabila EMA50 melintasi EMA150 membentuk persimpangan emas, menunjukkan pembentukan trend naik jangka panjang; apabila EMA50 melintasi EMA150 membentuk persimpangan mati, menunjukkan pembentukan trend menurun jangka panjang. Isyarat perdagangan tertentu dihasilkan oleh persimpangan EMA20 dan EMA50: apabila EMA20 melintasi EMA50 menghasilkan isyarat beli, apabila EMA20 melintasi EMA50 menghasilkan isyarat jual.
Strategi ini membina sistem perdagangan trend yang lengkap dengan penggunaan gabungan rata-rata bergerak pelbagai indeks. Logik strategi jelas, pelaksanaan mudah, dan skalabiliti yang baik. Dengan arah pengoptimuman yang dicadangkan, kestabilan dan kesesuaian strategi dapat ditingkatkan lagi.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-01-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("EMA2050150 Crossover Strategy#ganges", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)
// EMAs
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema150 = ta.ema(close, 150)
// Cross conditions
longCondition = ta.crossover(ema20, ema50)
flatCondition = ta.crossunder(ema20, ema50)
deathCross = ta.crossunder(ema50, ema150)
goldenCross = ta.crossover(ema50, ema150)
// // Trade execution
// if longCondition and time >= startDate and time <= endDate and strategy.position_size == 0
// strategy.entry("Long", strategy.long)
// if flatCondition and time >= startDate and time <= endDate and strategy.position_size > 0
// strategy.close("Long")
// Plot EMAs
plot(ema20, title="EMA 20", color=color.blue)
plot(ema50, title="EMA 50", color=color.orange)
plot(ema150, title="EMA 150", color=color.red)
// Plot cross signals
plotshape(series=goldenCross, location=location.belowbar, color=color.green, style=shape.labelup, title="Golden Cross", size=size.small, text="Golden Cross")
plotshape(series=deathCross, location=location.abovebar, color=color.red, style=shape.labeldown, title="Death Cross", size=size.small, text="Death Cross")
// Plot buy and sell signals
plotshape(series=longCondition, location=location.belowbar, color=color.blue, style=shape.triangleup, title="Buy Signal", size=size.small, text="Buy")
plotshape(series=flatCondition, location=location.abovebar, color=color.orange, style=shape.triangledown, title="Sell Signal", size=size.small, text="Sell")
// Trade execution
if longCondition and strategy.position_size == 0
strategy.entry("Long", strategy.long)
if flatCondition and strategy.position_size > 0
strategy.close("Long")