
Strategi ini adalah sistem dagangan kuantitatif yang berasaskan persilangan rata-rata bergerak indeks ganda (EMA). Ia menggunakan persilangan EMA (14 kitaran) jangka pendek dan EMA (100 kitaran) jangka panjang untuk menangkap titik peralihan trend pasaran, untuk menentukan masa masuk dengan menilai kedudukan persilangan garis rata-rata jangka pendek dan garis rata-rata jangka panjang.
Logik teras strategi ini adalah berdasarkan pada perubahan dinamik trend harga. EMA jangka pendek lebih sensitif terhadap perubahan harga, sementara EMA jangka panjang lebih baik untuk menyaring bunyi pasaran dan mencerminkan trend utama. Apabila momentum harga jangka pendek melintasi garis purata jangka pendek, menunjukkan peningkatan momentum harga jangka pendek, pasaran mungkin mula memasuki trend menaik; apabila momentum jangka pendek melintasi garis purata jangka panjang, menunjukkan penurunan momentum jangka pendek, pasaran mungkin beralih ke trend menurun.
Strategi kuantitatif EMA adalah sistem pengesanan trend yang klasik dan praktikal. Dengan menggabungkan purata bergerak indeks jangka pendek dan jangka panjang, strategi ini dapat menangkap peluang penukaran trend pasaran dengan lebih baik. Walaupun terdapat risiko ketinggalan dan isyarat palsu, namun dengan pengoptimuman parameter yang sesuai dan langkah-langkah kawalan risiko, kesan perdagangan yang stabil masih dapat dicapai. Kesederhanaan dan skalabiliti strategi menjadikannya sebagai kerangka asas perdagangan kuantitatif yang baik.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover Strategy", overlay=true)
// Input for EMAs
shortEmaLength = input(14, title="Short EMA Length")
longEmaLength = input(100, title="Long EMA Length")
// Calculate EMAs
shortEma = ta.ema(close, shortEmaLength)
longEma = ta.ema(close, longEmaLength)
// Plot EMAs
plot(shortEma, color=color.blue, title="9 EMA")
plot(longEma, color=color.red, title="100 EMA")
// Historical Signal Tracking
var float lastBuyPrice = na
var float lastSellPrice = na
// Buy and Sell Signals
buySignal = ta.crossover(shortEma, longEma)
sellSignal = ta.crossunder(shortEma, longEma)
// Track last buy and sell prices
if (buySignal)
lastBuyPrice := close
if (sellSignal)
lastSellPrice := close
// Plot buy and sell signals on the chart
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Strategy Logic
if (buySignal)
strategy.entry("Buy", strategy.long)
if (sellSignal)
strategy.close("Buy")