Die exponentielle gleitende Durchschnitt (EMA) ist eine Strategie, die die Preisdurchbrüche der gleitenden Durchschnittslinie verfolgt. Sie überprüft, ob Kerzen von unterhalb der gleitenden Durchschnittslinie zurückspringen. Wenn ja, ist es ein bullisches Signal; wenn die Kerze von über der gleitenden Durchschnittslinie nach unten springt, ist es ein bärisches Signal.
Exponential Moving Average Bounce-Strategie
Diese Strategie basiert auf der exponentiellen gleitenden Durchschnittslinie (EMA). Es berechnet eine EMA-Linie in Echtzeit. Dann überprüft es, ob der Preis von der EMA-Linie zurückspringt:
Ein solcher Aufschwung ist das Einstiegssignal für die Strategie.
Die EMA-Bounce-Strategie wird erst eingeleitet, nachdem die Preisumkehr bestätigt wurde, was verhindert, dass man gegen den Trend handelt und gefangen bleibt.
Durch die Verwendung des exponentiellen gleitenden Durchschnitts kann die Strategie die Preisdaten effektiv glätten und Marktlärm filtern, was zu kleinen Rückzügen und guten historischen Renditen führt.
Die EMA-Bounce-Strategie stützt sich einfach auf gleitende Durchschnitte, die für Anfänger leicht zu verstehen sind.
Die EMA-Parameter müssen angepasst werden, um das Geräusch zu filtern.
Die Strategie handelt im Wesentlichen mit dem Trend. Sie ist nicht in der Lage, Preiswendepunkte vorherzusagen und kann nur dem Trend folgen. Dies kann die beste Eintrittsmöglichkeit während zyklischer Anpassungen verpassen.
Der Stop-Loss in der Nähe der gleitenden Durchschnittslinie wird manchmal getroffen, was zu vergrößerten Verlusten führt.
Indikatoren wie RSI und MACD können hinzugefügt werden, um die Preisumkehr zu bestätigen und falsche Signale auszufiltern.
Die Risikopositionen werden von den zuständigen Behörden der Mitgliedstaaten und der Kommission gemäß den Bestimmungen der Verordnung (EU) Nr. 575/2013 und der Verordnung (EU) Nr. 575/2013 ermittelt.
Optimieren Sie die EMA-Periodenparameter, um die besten Parameterkombinationen zu finden. Die EMA-Parameter können auch dynamisch gemacht werden, um Marktzyklen zu verfolgen.
Die EMA-Bounce-Strategie ist eine einfache und praktische Trend-Folge-Strategie. Sie hat kleine Drawdowns und ist leicht zu verstehen. Gleichzeitig birgt sie auch einige Risiken von falschen Signalen und wird gestoppt. Wir können die Strategie optimieren, indem wir bessere Indikatorenkombinationen, Stop-Loss-Methoden und Parameterwahl verwenden, um sie zu einer stabilen und zuverlässigen quantitativen Strategie zu machen.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 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/ // © tweakerID // Simple strategy that checks for price bounces over an Exponential Moving Average. If the CLOSE of the candle bounces // back from having it's LOW below the EMA, then it's a Bull Bounce. If the CLOSE of the candle bounces down from having it's // high above the EMA, then it's a Bear Bounce. This logic can be reverted. //@version=4 strategy("EMA Bounce", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, commission_value=0.04, calc_on_every_tick=false, slippage=0) direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1) strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long)) /////////////////////// STRATEGY INPUTS //////////////////////////////////////// title1=input(true, "-----------------Strategy Inputs-------------------") i_EMA=input(20, title="EMA Length") /////////////////////// BACKTESTER ///////////////////////////////////////////// title2=input(true, "-----------------General Inputs-------------------") // Backtester General Inputs i_SL=input(true, title="Use Swing Stop Loss and Take Profit") i_SPL=input(defval=10, title="Swing Point Loopback") i_PercIncrement=input(defval=.2, step=.1, title="Swing Point SL Perc Increment")*0.01 i_TPRRR = input(1.2, step=.1, title="Take Profit Risk Reward Ratio") // Bought and Sold Boolean Signal bought = strategy.position_size > strategy.position_size[1] or strategy.position_size < strategy.position_size[1] // Price Action Stop and Take Profit LL=(lowest(i_SPL))*(1-i_PercIncrement) HH=(highest(i_SPL))*(1+i_PercIncrement) LL_price = valuewhen(bought, LL, 0) HH_price = valuewhen(bought, HH, 0) entry_LL_price = strategy.position_size > 0 ? LL_price : na entry_HH_price = strategy.position_size < 0 ? HH_price : na tp=strategy.position_avg_price + (strategy.position_avg_price - entry_LL_price)*i_TPRRR stp=strategy.position_avg_price - (entry_HH_price - strategy.position_avg_price)*i_TPRRR /////////////////////// STRATEGY LOGIC ///////////////////////////////////////// EMA=ema(close, i_EMA) LowAboveEMA=low > EMA LowBelowEMA=low < EMA HighAboveEMA=high > EMA HighBelowEMA=high < EMA BullBounce=LowAboveEMA[1] and LowBelowEMA and close > EMA //and close > open BearBounce=HighBelowEMA[1] and HighAboveEMA and close < EMA //and close < open plot(EMA) BUY=BullBounce SELL=BearBounce //Inputs DPR=input(false, "Allow Direct Position Reverse") reverse=input(false, "Reverse Trades") // Entries if reverse if not DPR strategy.entry("long", strategy.long, when=SELL and strategy.position_size == 0) strategy.entry("short", strategy.short, when=BUY and strategy.position_size == 0) else strategy.entry("long", strategy.long, when=SELL) strategy.entry("short", strategy.short, when=BUY) else if not DPR strategy.entry("long", strategy.long, when=BUY and strategy.position_size == 0) strategy.entry("short", strategy.short, when=SELL and strategy.position_size == 0) else strategy.entry("long", strategy.long, when=BUY) strategy.entry("short", strategy.short, when=SELL) SL=entry_LL_price SSL=entry_HH_price TP=tp STP=stp strategy.exit("TP & SL", "long", limit=TP, stop=SL, when=i_SL) strategy.exit("TP & SL", "short", limit=STP, stop=SSL, when=i_SL) /////////////////////// PLOTS ////////////////////////////////////////////////// plot(strategy.position_size > 0 ? SL : na , title='SL', style=plot.style_cross, color=color.red) plot(strategy.position_size < 0 ? SSL : na , title='SSL', style=plot.style_cross, color=color.red) plot(strategy.position_size > 0 ? TP : na, title='TP', style=plot.style_cross, color=color.green) plot(strategy.position_size < 0 ? STP : na, title='STP', style=plot.style_cross, color=color.green) // Draw price action setup arrows plotshape(BUY ? 1 : na, style=shape.triangleup, location=location.belowbar, color=color.green, title="Bullish Setup", transp=80, size=size.auto) plotshape(SELL ? 1 : na, style=shape.triangledown, location=location.abovebar, color=color.red, title="Bearish Setup", transp=80, size=size.auto)