
Eine Moving Average Rebound Strategie ist eine Strategie, die darauf abzielt, dass der Preis den Moving Average durchbricht. Sie prüft, ob die Kurve von unterhalb des Moving Average zurückspringt. Wenn ja, ist dies ein Mehrkopfsignal.
Exponential Moving Average Bounce Strategy
Die Strategie basiert auf einem exponentiellen Moving Average. Es berechnet eine EMA-Linie in Echtzeit. Es wird dann überprüft, ob der Preis von der EMA-Linie oben oder unten zurückprallt:
Der Rückschlag ist das Einstiegssignal für die Strategie.
Die EMA-Rebellion-Strategie wird nur eingesetzt, wenn eine Preisumkehr festgestellt wurde, um zu verhindern, dass eine Gegenbewegung eingestellt wird.
Durch den Einsatz von Index-Moving-Averages, die die Preise wirksam ausgleichen und Marktlärm filtern können, ist der Rückzug der Strategie gering und die historischen Erträge besser.
Die EMA-Rebellion-Strategie basiert ausschließlich auf einem Moving Average und ist sehr einfach und unkompliziert und für Anfänger leicht verständlich. Die EMA-Periodenparameter können flexibel angepasst werden, um sie an verschiedene Sorten anzupassen.
In der Nähe der EMA-Linien gibt es oft intensive Falschbrechungen, die zu falschen Signalen führen können. Die EMA-Parameter müssen angepasst werden, um diese Geräusche zu filtern.
Die Strategie ist im Wesentlichen ein Schlüsselaktion. Es ist nicht möglich, die Preiswendepunkte vorherzusagen, sondern nur den Trend zu verfolgen. Dies könnte die beste Einstiegsmomente für eine zyklische Anpassung sein.
Der Stop-Loss-Level in der Nähe des Moving Averages wird manchmal durchbrochen, was zu einer Vergrößerung der Verluste führt. Dies erfordert eine flexiblere Stop-Methode.
Der RSI, der MACD und andere Indikatoren können dazu verwendet werden, um eine Preisumkehr zu bestätigen und falsche Signale zu filtern.
Es können flexiblere Stopps wie Zeit- und Erschütterungsstopp verwendet werden, um die Gefahr zu verringern, durchtrennt zu werden.
Die EMA-Zyklusparameter werden optimiert, um die optimale Kombination von Parametern zu finden. Die EMA-Parameter können auch dynamisch geändert werden, um die Marktzyklen zu verfolgen.
Die Moving Average Rebound Strategie ist eine einfache und praktische Trend-Tracking-Strategie. Sie ist schrittweise, mit kleinen Rückzügen und leicht zu verstehen. Es besteht jedoch ein gewisses Risiko für Falschsignale und Stop-Loss-Risiken.
/*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)