Trendbruch - Strategie des langen Schattens

Schriftsteller:ChaoZhang, Datum: 2023-11-15 16:43:17
Tags:

img

Diese Strategie beurteilt die aktuelle Trendrichtung durch Berechnung des Verhältnisses von Bullish/Bearish-Schattenlänge und identifiziert den Trend mit dem ATR-Indikator.

Strategie Logik

Die Strategie beurteilt hauptsächlich den aktuellen Trend durch Berechnung des Bullish/Bearish Shadow Ratio.

Die spezifische Logik lautet:

  1. Berechnen Sie einen Bärenschatten: nahe - niedrig
  2. Berechnen Sie den bullischen Schatten: hoch - offen
  3. Nehmen Sie die maximale Schattenlänge von Bären und Bären als Schattenlänge.
  4. Berechnen Sie die Körperlänge der Kerze: hoch - niedrig
  5. Berechnung des Verhältnisses zwischen Schatten und Körperlänge
  6. Wenn das Verhältnis > 0,5 und das bearish > bullish ist, wird der Abwärtstrend und die Long Position beurteilt.
  7. Wenn das Verhältnis > 0,5 und bullish > bearish ist, wird der Aufwärtstrend und die Leerposition beurteilt
  8. Validieren Sie den Ausbruch mit Kerzenlänge > 0,75 * ATR
  9. Stop-Loss- und Take-Profit-Einstellungen nach dem Einstieg mit einem Verhältnis von 2:1

Das ist die grundlegende Handelslogik, bei der umgekehrte Breakout-Punkte mit Trenddetektion und Gewinnoptimierung mit Stop-Loss/Take-Profit identifiziert werden.

Vorteile

  1. Schattenverhältnis beurteilt den Trend genau
  2. ATR filtert falsche Ausbruchssignale aus.
  3. Stop-Loss und Take-Profit verwalten das Risiko
  4. Das Risiko-Rendite-Verhältnis 2:1 entspricht dem Quant-Trading-Standard
  5. Für den kurzfristigen Handel mit Aktien mit hoher Volatilität geeignet
  6. Einfache und klare Logik, leicht zu verstehen

Risiken

  1. Die Preisvolatilität kann den Stop-Loss und den Verlust erhöhen
  2. Die Leistung hängt stark von Parameter-Tuning ab
  3. Trendumkehr kann zu Verlusten führen
  4. Die Erhöhung der Stop-Loss-/Take-Profit-Regelung kann die Verlustwahrscheinlichkeit erhöhen.
  5. Ein fehlgeschlagener Ausbruch kann zu großen Verlusten führen.

Risiken können durch einen angemessenen Stop-Loss, eine Optimierung der Parameter und einen rechtzeitigen Positions-Exit verwaltet werden.

Erweiterung

Die Strategie kann wie folgt optimiert werden:

  1. Optimieren Sie den Schattenverhältnisparameter für den besten Wert
  2. Optimieren des ATR-Parameters für die beste Kerzenlänge
  3. Optimierung der Stop-Loss-/Take-Profit-Koeffizienten für eine optimale Risiko-Rendite
  4. Positionsgrößen wie schrittweise Positionserhöhung hinzufügen
  5. Hinzufügen von Trailing Stop Loss zum Gewinnschutz
  6. Hinzufügen anderer Indikatoren zu Filtersignalen
  7. Optimieren Sie die Zeitspanne für Backtests und testen Sie verschiedene Marktstufen

Mit facettenreichen Tests und Optimierungen kann die Strategieleistung maximiert werden.

Insgesamt profitiert diese Strategie von kurzfristigen Kursschwankungen durch Trendidentifizierung und Risikomanagement.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 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/
// © ondrej17

//@version=4
strategy("longWickstrategy", overlay=true )
 
// Inputs
st_yr_inp = input(defval=2020, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
sltp_inp = input(defval=0.8, title='N - % offset for N*SL and (2N)*TP')/100
 
// Dates
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
canTrade = time >= start and time <= end
// Indicators Setup


 
// Strategy Calcuations
lowerWick = (open > close) ? close-low : open - low
upperWick = (open > close) ? high-open : high-close
wickLength = max(lowerWick,upperWick)
candleLength = high-low
wickToCandleRatio = wickLength / candleLength
entryFilterCandleLength = candleLength > 0.75*atr(48)


// Entries and Exits
 
longCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick > upperWick and canTrade and strategy.position_size == 0
shortCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick < upperWick and canTrade and strategy.position_size == 0

strategy.entry("pendingLong", strategy.long, limit=low+wickLength/2, when = longCondition)
strategy.entry("pendingShort", strategy.short, limit=high-wickLength/2, when = shortCondition)

longStop = strategy.position_size > 0 ? strategy.position_avg_price*(1-sltp_inp) : na
longTP = strategy.position_size > 0 ? strategy.position_avg_price*(1+2*sltp_inp) : na
shortStop = strategy.position_size < 0 ? strategy.position_avg_price*(1+sltp_inp) : na
shortTP = strategy.position_size < 0 ? strategy.position_avg_price*(1-2*sltp_inp) : na

strategy.exit("longSLTP","pendingLong", stop=longStop, limit = longTP)
strategy.exit("shortSLTP","pendingShort", stop=shortStop, limit = shortTP)  
 

plot(longStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(shortStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(longTP, color=color.green, style=plot.style_linebr, linewidth=2)
plot(shortTP, color=color.green, style=plot.style_linebr, linewidth=2)

plotLongCondition = longCondition ? high+abs(open-close) : na
plot(plotLongCondition, style=plot.style_circles, linewidth=4, color=color.green)
plotShortCondition = shortCondition ? high+abs(open-close) : na
plot(plotShortCondition, style=plot.style_circles, linewidth=4, color=color.red)



Mehr