
Strategi dagangan forks bergerak menghasilkan isyarat beli dan jual dengan mengira persilangan garis cepat EMA ((fastLength) dan garis perlahan EMA ((slowLength)). Apabila garis cepat melalui garis perlahan, ia menghasilkan isyarat beli; apabila garis cepat melalui garis perlahan, ia menghasilkan isyarat jual. Strategi ini mudah dan praktikal, sesuai untuk perdagangan garis pendek.
Strategi ini menggunakan dua purata bergerak, garis pantas dan garis perlahan. Parameter garis pantas EMAfastLength default 9 hari, parameter garis perlahan EMAAslowLength default 26 hari.
Isyarat perdagangan dan peraturan strategi adalah seperti berikut:
Jadi, strategi ini adalah strategi untuk melakukan perdagangan apabila terdapat dua purata bergerak iaitu garpu emas dan garpu mati.
Untuk risiko, parameter yang boleh dioptimumkan seperti kitaran purata bergerak, jenis perdagangan, nisbah stop loss dan sebagainya memerlukan banyak ujian untuk mengurangkan risiko.
Strategi ini mempunyai idea yang mudah dan boleh dioptimumkan dengan:
Ujian-ujian optimasi ini dapat meningkatkan keberkesanan dan kestabilan strategi secara besar-besaran.
Strategi penyambung rata-rata bergerak adalah strategi yang mudah, dan aplikasi sebenar memerlukan pengoptimuman yang berterusan. Strategi ini memberikan logik penjanaan isyarat perdagangan dan peraturan perdagangan asas, di mana ia boleh dioptimumkan secara besar-besaran, menjadikannya strategi kuantitatif yang boleh digunakan.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("EMA Cross by MarketAlpha", overlay=true)
EMAfastLength = input(defval = 9, minval = 2)
EMAslowLength = input(defval = 26, minval = 2)
Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05)
StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05)
profitpoints = close*Targetpercentage
stoplosspoints = close*StopLosspercentage
price = close
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2000)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
emafast = ema(price, EMAfastLength)
emaslow = sma(price, EMAslowLength)
plot(emafast,color=green)
plot(emaslow,color=red)
enterLong() => crossover(emafast, emaslow)
strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong())
strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints)
enterShort() => crossunder(emafast, emaslow)
strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort())
strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)