Strategi perdagangan crossover rata-rata bergerak menghasilkan sinyal beli dan jual dengan menghitung persilangan EMA cepat (fastLength) dan EMA lambat (slowLength). Ketika garis cepat melintasi di atas garis lambat, sinyal beli dihasilkan. Ketika garis cepat melintasi di bawah garis lambat, sinyal jual dihasilkan. Strategi ini sederhana dan praktis, cocok untuk perdagangan jangka menengah dan pendek.
Strategi ini menggunakan dua garis rata-rata bergerak, garis cepat dan garis lambat. Parameter garis cepat EMAfastLength default ke garis 9 hari, dan parameter garis lambat EMAslowLength default ke garis 26 hari. Hitung persilangan kedua garis EMA untuk menentukan sinyal beli dan jual pasar:
Sinyal perdagangan khusus dan aturan strategi adalah sebagai berikut:
Jadi strategi ini diperdagangkan berdasarkan golden cross dan dead cross dari dua garis rata-rata bergerak.
Untuk mengatasi risiko, parameter yang dapat dioptimalkan termasuk siklus rata-rata bergerak, variasi perdagangan, rasio profit taking dan stop loss, dll. Pengujian ekstensif diperlukan untuk mengurangi risiko.
Ide crossover rata-rata bergerak dari strategi ini sederhana dan praktis.
Melalui uji optimalisasi ini, efek praktis dan stabilitas strategi dapat sangat ditingkatkan.
Ide strategi crossover moving average sederhana, tetapi penerapan praktis membutuhkan optimasi terus menerus. Strategi ini memberikan logika untuk menghasilkan sinyal perdagangan dan aturan dasar perdagangan. Atas dasar ini, dapat sangat dioptimalkan untuk menjadi strategi kuantitatif yang dapat digunakan. Aplikasi moving average juga memberi kita ide untuk strategi, berdasarkan yang dapat kita inovasi dan memperbaiki.
/*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)