Der exponentielle gleitende Durchschnitt (EMA) Crossover ist ein häufiges Handelssignal. Diese Strategie verwendet das Crossover einer schnellen EMA und einer langsamen EMA, um Handelssignale zu generieren. Insbesondere, wenn die schnelle EMA über die langsame EMA überschreitet, wird eine Long-Position eingenommen; wenn die schnelle EMA unter die langsame EMA überschreitet, wird eine Short-Position eingenommen.
Diese Strategie verwendet die 20-Tage-EMA als schnelle EMA, die 50-Tage-EMA als mittlere EMA und die 200-Tage-EMA als langsame EMA. Wenn sowohl die 20-Tage-EMA als auch die 50-Tage-EMA über die 200-Tage-EMA gehen, wird eine Long-Position eingenommen; wenn beide unterhalb gehen, wird eine Short-Position eingenommen. Dies hilft, einige falsche Signale zu filtern.
Die gleitende Durchschnitts-Crossover-Strategie ist leicht zu verstehen und ist eine der grundlegenden quantitativen Handelsstrategien. Diese Implementierung dient gut als einleitendes Beispiel.
/*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)