Strategi perdagangan crossover purata bergerak menghasilkan isyarat beli dan jual dengan mengira persilangan garis EMA pantas (fastLength) dan EMA perlahan (slowLength). Apabila garis pantas melintasi di atas garis perlahan, isyarat beli dihasilkan. Apabila garis pantas melintasi di bawah garis perlahan, isyarat jual dihasilkan. Strategi ini mudah dan praktikal, sesuai untuk perdagangan jangka sederhana dan pendek.
Strategi ini menggunakan dua garis purata bergerak, garisan pantas dan garis perlahan. Parameter garisan pantas EMAfastLength lalai ke garisan 9 hari, dan parameter garisan perlahan EMAslowLength lalai ke garisan 26 hari. Hitung persilangan kedua-dua garis EMA untuk menentukan isyarat beli dan jual pasaran:
Isyarat perdagangan dan peraturan strategi khusus adalah seperti berikut:
Jadi strategi ini berdagang berdasarkan salib emas dan salib mati dari dua garis purata bergerak.
Untuk menangani risiko, parameter yang boleh dioptimumkan termasuk kitaran purata bergerak, pelbagai dagangan, mengambil keuntungan dan nisbah hentian kerugian, dll. Ujian yang meluas diperlukan untuk mengurangkan risiko.
Idea persilangan purata bergerak strategi ini adalah mudah dan praktikal.
Melalui ujian pengoptimuman ini, kesan praktikal dan kestabilan strategi dapat ditingkatkan dengan ketara.
idea strategi crossover purata bergerak adalah mudah, tetapi penerapan praktikal memerlukan pengoptimuman berterusan. strategi ini memberikan logik menghasilkan isyarat perdagangan dan peraturan perdagangan asas. atas asas ini, ia boleh dioptimumkan dengan baik untuk menjadi strategi kuantitatif yang boleh digunakan. penerapan purata bergerak juga memberi kita idea untuk strategi, berdasarkan yang kita boleh berinovasi dan meningkatkan.
/*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)