
Moving average crossover adalah salah satu jenis sinyal trading yang umum. Strategi ini menggunakan crossover antara fast moving average dan slow moving average sebagai sinyal trading. Secara khusus, ketika fast moving average melintasi slow moving average dari bawah, lakukan over; ketika fast moving average melintasi slow moving average dari atas ke bawah, lakukan blank.
Strategi ini menggunakan rata-rata bergerak eksponensial 20 hari (EMA) sebagai rata-rata bergerak cepat, 50 hari EMA sebagai rata-rata bergerak cepat, dan 200 hari EMA sebagai rata-rata bergerak lambat. Lakukan lebih banyak ketika EMA 20 hari dan EMA 50 hari naik bersama-sama melalui EMA 200 hari; kosong ketika EMA 20 hari dan EMA 50 hari turun bersama-sama melalui EMA 200 hari. Ini dapat memfilter beberapa sinyal palsu.
Konsep strategi lintas rata-rata bergerak sederhana, mudah dikuasai, dan merupakan salah satu strategi dasar untuk perdagangan kuantitatif. Strategi ini memiliki nilai referensi yang bagus sebagai pembelajaran awal. Namun, dalam pertempuran nyata, parameter masih perlu dioptimalkan untuk varietas dan siklus, dan ditambah dengan indikator teknis lain yang lebih kompleks untuk menyaring sinyal, sehingga meningkatkan efektivitas strategi dalam pertempuran nyata.
/*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)