Die Ressourcen sind geladen. Beförderung...

Quantitative Handelsstrategie auf der Grundlage von Umkehrmustern bei Unterstützungs- und Widerstandsniveaus

Schriftsteller:ChaoZhang, Datum: 2024-06-07 16:45:09
Tags:

img

Übersicht

Diese Strategie basiert auf Umkehrmustern (Hammer, Engulfing und Doji) und Unterstützungs- und Widerstandsniveaus in der technischen Analyse, der auf einem 1-Stunden-Chart gehandelt wird.

Die Hauptidee der Strategie besteht darin, eine Long-Position einzugehen, wenn ein bullischer Umkehrmuster (z. B. ein Hammer, ein bullischer Engulfing oder ein Doji) in der Nähe eines Unterstützungsniveaus erscheint, und eine Short-Position einzugehen, wenn ein bearischer Umkehrmuster (z. B. ein Hammer, ein bearischer Engulfing oder ein Doji) in der Nähe eines Widerstandsniveaus erscheint.

Strategie Logik

  1. Berechnen Sie den niedrigsten Tiefstand und den höchsten Hochstand innerhalb des angegebenen Rückblickzeitraums mit den Funktionen ta.lowest() und ta.highest() zur Bestimmung von Unterstützungs- und Widerstandsniveaus.
  2. Überprüfen Sie, ob die aktuelle Kerze einen Hammer, ein verschlungenes Muster oder einen Doji bildet.
  3. Wenn ein bullischer Umkehrmuster in der Nähe eines Unterstützungsniveaus auftritt, treten Sie in eine Long-Position ein; wenn ein bärischer Umkehrmuster in der Nähe eines Widerstandsniveaus auftritt, treten Sie in eine Short-Position ein.
  4. Der Take-Profit-Preis muss 3% über dem Einstiegspreis liegen und der Stop-Loss-Preis 1% unter dem Einstiegspreis.
  5. Schließen Sie die Position, wenn der Preis die Gewinn- oder Stop-Loss-Level erreicht.

Strategische Vorteile

  1. Kombiniert Umkehrmuster und wichtige Unterstützungs- und Widerstandsniveaus, wodurch die Zuverlässigkeit der Handelssignale verbessert wird.
  2. Es legt klare Gewinn- und Stop-Loss-Niveaus fest und kontrolliert das Risiko effektiv.
  3. Für Trending- und Ranging-Märkte geeignet, um potenzielle Umkehrchancen zu erfassen.
  4. Einfacher und leicht verständlicher Code, der die Umsetzung erleichtert.

Strategische Risiken

  1. Auf den Märkten mit unterschiedlichen Märkten können häufige Umkehrsignale zu Überhandelungen und Provisionsverlusten führen.
  2. Die Identifizierung von Unterstützungs- und Widerstandsniveaus hängt von der Wahl des Rückblickzeitraums ab, und verschiedene Rückblickzeiten können zu unterschiedlichen Ergebnissen führen.
  3. Die Zuverlässigkeit von Umkehrmustern ist nicht absolut, und falsche Signale können zu Verlusten führen.

Lösungen:

  1. Anpassung der Parameter und Bestätigungsbedingungen der Umkehrmuster zur Verringerung falscher Signale.
  2. Einbeziehung anderer technischer Indikatoren oder Indikatoren für die Marktstimmung zur Verbesserung der Signalverlässlichkeit.
  3. Anpassungen der Gewinn- und Stop-Loss-Level entsprechend an die unterschiedlichen Marktbedingungen.

Strategieoptimierungsrichtlinien

  1. Einführung von Volumenindikatoren zur Bestätigung der Gültigkeit von Umkehrmustern Umkehrmuster mit hohem Handelsvolumen können zuverlässiger sein.
  2. Betrachten Sie Unterstützungs- und Widerstandsniveaus aus mehreren Zeitrahmen, um die Genauigkeit der Unterstützungs- und Widerstandsniveaus zu verbessern.
  3. Kombination von Trendindikatoren wie gleitenden Durchschnitten, um in Richtung des Trends zu handeln und gegen den Trend zu handeln.
  4. Optimierung der Gewinn- und Stop-Loss-Level durch dynamische Anpassung an die Marktvolatilität, um bessere Risiko-Rendite-Verhältnisse zu erreichen.

Zusammenfassung

Diese Strategie erfasst potenzielle Handelschancen, indem sie Umkehrmuster in der Nähe von Unterstützungs- und Widerstandsniveaus identifiziert. Sie ist einfach zu bedienen und anwendbar auf verschiedene Marktumgebungen. Der Erfolg der Strategie hängt jedoch von der genauen Identifizierung von Umkehrmustern und Unterstützungs- und Widerstandsniveaus ab. Durch die Optimierung der Bestätigungsbedingungen von Handelssignalen, die Einbeziehung anderer technischer Indikatoren und die dynamische Anpassung der Gewinn- und Stop-Loss-Niveaus kann die Leistung der Strategie weiter verbessert werden.


/*backtest
start: 2024-05-07 00:00:00
end: 2024-06-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Kingcoinmilioner

//@version=5
strategy("Reversal Patterns at Support and Resistance", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Parameters
support_resistance_lookback = input.int(50, title="Support/Resistance Lookback Period")
reversal_tolerance = input.float(0.01, title="Reversal Tolerance (percent)", step=0.01) / 100
take_profit_percent = input.float(3, title="Take Profit (%)") / 100
stop_loss_percent = input.float(1, title="Stop Loss (%)") / 100

// Functions to identify key support and resistance levels
findSupport() =>
    ta.lowest(low, support_resistance_lookback)

findResistance() =>
    ta.highest(high, support_resistance_lookback)

// Identify reversal patterns
isHammer() =>
    body = math.abs(close - open)
    lowerWick = open > close ? (low < close ? close - low : open - low) : (low < open ? open - low : close - low)
    upperWick = high - math.max(open, close)
    lowerWick > body * 2 and upperWick < body

isEngulfing() =>
    (close[1] < open[1] and close > open and close > open[1] and open < close[1]) 
    (close[1] > open[1] and close < open and close < open[1] and open > close[1])

isDoji() =>
    math.abs(open - close) <= (high - low) * 0.1

// Identify support and resistance levels
support = findSupport()
resistance = findResistance()

// Check for reversal patterns at support and resistance
hammerAtSupport = isHammer() and (low <= support * (1 + reversal_tolerance))
engulfingAtSupport = isEngulfing() and (low <= support * (1 + reversal_tolerance))
dojiAtSupport = isDoji() and (low <= support * (1 + reversal_tolerance))

hammerAtResistance = isHammer() and (high >= resistance * (1 - reversal_tolerance))
engulfingAtResistance = isEngulfing() and (high >= resistance * (1 - reversal_tolerance))
dojiAtResistance = isDoji() and (high >= resistance * (1 - reversal_tolerance))

// Trading logic
if (hammerAtSupport or engulfingAtSupport or dojiAtSupport)
    strategy.entry("Long", strategy.long)
    stop_level = low * (1 - stop_loss_percent)
    take_profit_level = close * (1 + take_profit_percent)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", stop=stop_level, limit=take_profit_level)

if (hammerAtResistance or engulfingAtResistance or dojiAtResistance)
    strategy.entry("Short", strategy.short)
    stop_level = high * (1 + stop_loss_percent)
    take_profit_level = close * (1 - take_profit_percent)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", stop=stop_level, limit=take_profit_level)

// Plot support and resistance levels for visualization
plot(support, color=color.green, linewidth=1, title="Support Level")
plot(resistance, color=color.red, linewidth=1, title="Resistance Level")

// Plot reversal patterns on the chart for visualization
plotshape(series=hammerAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer at Support")
plotshape(series=engulfingAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Engulfing at Support")
plotshape(series=dojiAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Doji at Support")

plotshape(series=hammerAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Hammer at Resistance")
plotshape(series=engulfingAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulfing at Resistance")
plotshape(series=dojiAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Doji at Resistance")


Mehr