Triple EMA Pullback Breakout Handelsstrategie


Erstellungsdatum: 2023-09-12 15:12:56 zuletzt geändert: 2023-09-12 15:12:56
Kopie: 0 Klicks: 802
1
konzentrieren Sie sich auf
1617
Anhänger

Diese Strategie beurteilt die Trendbewegung, indem sie die Rückstellungsperformance des Preises auf die dreifache EMA beobachtet und einen Durchbruch am Ende der Rückstellung vornimmt. Die Strategie gehört zu den Strategien der Trendfolge-Klasse und zielt darauf ab, die Rückstellungschancen für die mittleren und langen Trends zu erfassen.

Die Strategie:

  1. Ein EMA mit drei Parametern, schnell, mittel und langsam, mit typischen Parametern 25, 100 und 200 Zyklen.

  2. Wenn die oberen Rückschritte die schnellste EMA erreichen, wird dies als mittlerer langfristiger mehrseitiger Kurs beurteilt, wenn die unteren Rückschritte die schnellste EMA erreichen, wird dies als leerer Kurs beurteilt.

  3. Wenn ein Rückschlag am oberen Ende der Rückkehr beginnt, machen Sie mehr, wenn Sie die schnellste EMA durchbrechen; wenn ein Rückschlag am unteren Ende der Rückschlag beginnt, machen Sie nichts, wenn Sie die schnellste EMA durchbrechen.

  4. Die Kauf- und Verkaufsabschnitte werden durch Farbmarkierungen visuell intuitiv gestaltet.

  5. Setzen Sie einen festen Stop-Loss-Risiko-Rendite-Verhältnis und führen Sie Risikomanagement durch.

Die Vorteile der Strategie:

  1. Rückrufgeschäfte haben eine hohe Erfolgsrate.

  2. Die drei EMAs beurteilen Trends und vermeiden, dass sie in die Irre geführt werden.

  3. Risikobeträge übersteigen die Kontrolle, um die Leistung zu steigern und die Nachhaltigkeit zu fördern.

Die Risiken dieser Strategie:

  1. Eine zu lange Rückrufzeit kann dazu führen, dass man die besten Eintrittsorte verpasst.

  2. Die EMA-Parameter müssen für verschiedene Perioden optimiert werden.

  3. Die Feststoppung ist möglicherweise zu mechanisch und erfordert eine vernünftige Einstellung.

Zusammenfassend lässt sich sagen, dass die Strategie mit einem Dreifach-EMA-Rückschlag einen Durchbruch erzielt, um die mittleren und langen Trends zu verfolgen. Die Risikokontrollmechanismen helfen, langfristige stabile Erträge zu erzielen, aber die Anleger müssen sich weiterhin auf die Optimierung der Parameter und die Rückschlagentscheidung konzentrieren.

Strategiequellcode
/*backtest
start: 2023-09-04 00:00:00
end: 2023-09-11 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Pullback", overlay=true, initial_capital=1000, slippage=25)

averageData = input.source(close, title="Source")
target_stop_ratio = input.float(title="Ratio Risk/Reward", defval=2, group="Money Management")
security = input.float(50, title='min of pips (00001.00) for each position', group="Money Management")
risk = input.float(2, title="Risk per Trade %", group="Money Management")

riskt = risk / 100 + 1

ema1V = input.int(25, title="Rapide", group="Ema Period")
ema2V = input.int(100, title="Moyenne", group="Ema Period")
ema3V = input.int(200, title="Lente", group="Ema Period")

ema1 = ta.ema(averageData, ema1V)
ema2 = ta.ema(averageData, ema2V)
ema3 = ta.ema(averageData, ema3V)

useDateFilter = input.bool(true, title="Filter Date Range of Backtest",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("5 June 2022"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")
backtestEndDate = input(timestamp("5 July 2022"),
     title="End Date", group="Backtest Time Period",
     tooltip="This end date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

inTradeWindow = true

float pricePullAboveEMA_maxClose = na
float pricePullBelowEMA_minClose = na

if ta.crossover(close, ema1)
    pricePullAboveEMA_maxClose := close
  
else
    pricePullAboveEMA_maxClose := pricePullAboveEMA_maxClose[1]

if close > pricePullAboveEMA_maxClose
    pricePullAboveEMA_maxClose := close

if ta.crossunder(close, ema1)
    pricePullBelowEMA_minClose := close
 
else
    pricePullBelowEMA_minClose := pricePullBelowEMA_minClose[1]

if close < pricePullBelowEMA_minClose
    pricePullBelowEMA_minClose := close

BuyZone = ema1 > ema2 and ema2 > ema3
SellZone = ema1 < ema2 and ema2 < ema3

longcondition = ta.crossover(close, ema1) and pricePullBelowEMA_minClose > ema3 and pricePullBelowEMA_minClose < ema1 
shortcondition = ta.crossunder(close , ema1) and pricePullAboveEMA_maxClose < ema3 and pricePullAboveEMA_maxClose > ema1

float risk_long = na
float risk_short = na
float stopLoss = na
float takeProfit = na
float entry_price = na

risk_long := risk_long[1]
risk_short := risk_short[1]

lotB = (strategy.equity*riskt-strategy.equity)/(close - ema2)
lotS = (strategy.equity*riskt-strategy.equity)/(ema2 - close)

if strategy.position_size == 0 and BuyZone and longcondition and inTradeWindow
    risk_long := (close - ema2) / close
    minp = close - ema2
    if minp > security
        strategy.entry("long", strategy.long, qty=lotB)
    
if strategy.position_size == 0 and SellZone and shortcondition and inTradeWindow
    risk_short := (ema2 - close) / close
    minp = ema2 - close
    if minp > security
        strategy.entry("short", strategy.short, qty=lotS)
    
if strategy.position_size > 0

    stopLoss := strategy.position_avg_price * (1 - risk_long)
    takeProfit := strategy.position_avg_price * (1 + target_stop_ratio * risk_long)
    entry_price := strategy.position_avg_price
    strategy.exit("long exit", "long", stop = stopLoss, limit = takeProfit)
    
if strategy.position_size < 0

    stopLoss := strategy.position_avg_price * (1 + risk_short)
    takeProfit := strategy.position_avg_price * (1 - target_stop_ratio * risk_short)
    entry_price := strategy.position_avg_price
    strategy.exit("short exit", "short", stop = stopLoss, limit = takeProfit)
    
plot(ema1, color=color.blue, linewidth=2, title="Ema Rapide")
plot(ema2, color=color.orange, linewidth=2, title="Ema Moyenne")
plot(ema3, color=color.white, linewidth=2, title="Ema Lente")
p_ep = plot(entry_price, color=color.new(color.white, 0), linewidth=2, style=plot.style_linebr, title='entry price')
p_sl = plot(stopLoss, color=color.new(color.red, 0), linewidth=2, style=plot.style_linebr, title='stopLoss')
p_tp = plot(takeProfit, color=color.new(color.green, 0), linewidth=2, style=plot.style_linebr, title='takeProfit')
fill(p_sl, p_ep, color.new(color.red, transp=85))
fill(p_tp, p_ep, color.new(color.green, transp=85))

bgcolor(BuyZone ? color.new(color.green, 95)  : na)
bgcolor(SellZone ? color.new(color.red, 95)  : na)