EMA (Exponential Moving Average) crossover adalah sinyal trading yang umum digunakan. Strategi ini menggunakan crossover EMA cepat dan EMA lambat untuk menghasilkan sinyal trading. Secara khusus, ketika EMA cepat melintasi EMA lambat, posisi panjang diambil; ketika EMA cepat melintasi di bawah EMA lambat, posisi pendek diambil.
Strategi ini menggunakan EMA 20 hari sebagai EMA cepat, EMA 50 hari sebagai EMA menengah, dan EMA 200 hari sebagai EMA lambat. Ketika EMA 20 hari dan EMA 50 hari melintasi di atas EMA 200 hari, posisi panjang diambil; ketika keduanya melintasi di bawah, posisi pendek diambil. Ini membantu menyaring beberapa sinyal palsu.
Strategi crossover rata-rata bergerak mudah dipahami dan merupakan salah satu strategi perdagangan kuantitatif mendasar. implementasi ini berfungsi dengan baik sebagai contoh pengantar. tetapi dalam perdagangan langsung, parameter akan membutuhkan optimasi, dan indikator teknis yang lebih maju harus ditambahkan untuk menyaring sinyal dan meningkatkan kinerja.
/*backtest start: 2023-01-05 00:00:00 end: 2024-01-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © rt-maax //@version=5 strategy(title = "rt maax EMA cross strategy", shorttitle = "rt maax ema ", overlay = true, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 100000, currency = currency.USD, default_qty_type = strategy.cash, default_qty_value = 100000, commission_type = "percent", commission_value = 0.27) fastema = ta.ema (close , 50) fema=ta.ema(close,20) slowema= ta.ema(close,200) price = close // === INPUT BACKTEST RANGE === fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12) fromDay = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31) fromYear = input.int(defval = 2021, title = "From Year", minval = 1970) thruMonth = input.int(defval = 10, title = "Thru Month", minval = 1, maxval = 12) thruDay = input.int(defval = 25, title = "Thru Day", minval = 1, maxval = 31) thruYear = input.int(defval = 2112, title = "Thru Year", minval = 1970) // === INPUT SHOW PLOT === showDate = input(defval = true, title = "Show Date Range") // === FUNCTION EXAMPLE === longCondition1= ta.crossover (fema , fastema) longcondition2= fema> slowema longcondition3=fastema>slowema if (longCondition1 and longcondition2 and longcondition3 ) stoploss=low*0.97 takeprofit=high*1.12 strategy.entry("Long Entry", strategy.long) strategy.exit ("exit","long",stop=stoploss,limit=takeprofit) shortCondition1 = ta.crossunder (fema , fastema ) shortcondition2= fastema< slowema shortcondition3= fema< slowema if (shortCondition1 and shortcondition2 and shortcondition3 ) stoploss=low*0.97 takeprofit=high*1.5 strategy.entry("Short Entry", strategy.short) strategy.exit("exit","short",stop=stoploss,limit=takeprofit)