Moving Average Bounce-Strategie


Erstellungsdatum: 2023-12-08 16:47:39 zuletzt geändert: 2023-12-08 16:47:39
Kopie: 0 Klicks: 925
1
konzentrieren Sie sich auf
1621
Anhänger

Moving Average Bounce-Strategie

Strategieübersicht

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.

Bezeichnung der Strategie

Exponential Moving Average Bounce Strategy

Strategieprinzip

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:

  • Wenn der Preis zuerst unter die EMA-Linie fällt und dann wieder über die EMA-Linie aufsteigt, ist dies ein Mehrkopfsignal
  • Wenn der Preis zuerst die EMA-Linie durchbricht und dann wieder nach unten fällt und unter der EMA-Linie schließt, ist das ein Hohlkopfsignal

Der Rückschlag ist das Einstiegssignal für die Strategie.

Strategische Stärkenanalyse

Schritt für Schritt, um nicht in die Falle zu geraten

Die EMA-Rebellion-Strategie wird nur eingesetzt, wenn eine Preisumkehr festgestellt wurde, um zu verhindern, dass eine Gegenbewegung eingestellt wird.

Kleine Rücknahmen, gute historische Erträge

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.

Einfach zu verstehen und flexibel anpassen

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.

Risikoanalyse

Leicht zu falschen Signalen

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.

Der Trend ist unvorhersehbar.

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.

Die Stop-Loss-Position ist leicht zu durchbrechen.

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.

Optimierungsrichtung

Filtersignale in Kombination mit anderen Indikatoren

Der RSI, der MACD und andere Indikatoren können dazu verwendet werden, um eine Preisumkehr zu bestätigen und falsche Signale zu filtern.

Optimierung der Stop-Loss-Methode

Es können flexiblere Stopps wie Zeit- und Erschütterungsstopp verwendet werden, um die Gefahr zu verringern, durchtrennt zu werden.

Parameteroptimierung

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.

Zusammenfassen

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.

Strategiequellcode
/*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)