
Persaingan purata bergerak adalah isyarat perdagangan yang biasa. Strategi ini menggunakan persilangan purata bergerak cepat dan purata bergerak perlahan sebagai isyarat perdagangan. Khususnya, apabila purata bergerak cepat melintasi purata bergerak perlahan dari bawah, lakukan lebih banyak; apabila purata bergerak cepat melintasi purata bergerak perlahan dari atas ke bawah, lakukan kosong.
Strategi ini menggunakan EMA 20 hari sebagai purata bergerak cepat, EMA 50 hari sebagai purata bergerak sederhana, dan EMA 200 hari sebagai purata bergerak perlahan. Apabila EMA 20 hari dan EMA 50 hari naik bersama-sama melalui EMA 200 hari, lakukan lebih banyak; apabila EMA 20 hari dan EMA 50 hari bersama-sama melalui EMA 200 hari, lakukan kosong. Ini dapat menyaring beberapa isyarat palsu.
Konsep strategi silang rata-rata bergerak adalah mudah dan mudah dipelajari, dan merupakan salah satu strategi asas untuk perdagangan kuantitatif. Strategi ini mempunyai nilai rujukan yang baik sebagai pembelajaran permulaan. Tetapi dalam pertempuran sebenar, parameter masih perlu dioptimumkan untuk varieti dan kitaran, dan ditambah dengan petunjuk teknikal yang lebih kompleks untuk menapis isyarat, sehingga meningkatkan keberkesanan strategi dalam pertempuran sebenar.
/*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)