Diese Strategie beobachtet die Kursbewegung um dreifache EMAs, um Trends und Trades Breakouts nach Pullbacks zu bestimmen.
Strategie Logik:
Einrichtung von schnellen, mittleren und langsamen EMAs, typischerweise 25, 100, 200 Perioden.
Der Preis, der den schnellsten EMA während des Aufwärts-/Abwärts-Pullbacks erreicht, deutet auf einen Zwischenbull/Bär.
Der Kurs wird bei einem Anstieg des Kursumstiegs über die schnellste EMA getragen.
Farbcodierte Kauf-/Verkaufszonen für die visuelle Intuition.
Für das Risikomanagement werden festgelegte Stop-Loss- und Risiko/Rendite-Verhältnisse verwendet.
Vorteile:
Pullback-Handel genießt eine höhere Gewinnrate.
Dreifache EMAs erkennen Trends und vermeiden Whipsaws.
Das Risiko-Rendite-Verhältnis erhöht die Nachhaltigkeit der Leistung.
Risiken:
Verlängerte Rückzüge können den besten Einstiegszeitpunkt verpassen.
Die EMA-Ausrichtung sollte unterschiedlichen Perioden entsprechen.
Feststehende Haltestellen können zu mechanisch sein und müssen kalibriert werden.
Zusammenfassend lässt sich sagen, dass diese Strategie Pullback-Breakouts mit dreifachen EMAs verhandelt, um breitere Trends zu verfolgen.
/*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)