Die Ressourcen sind geladen. Beförderung...

Handelsstrategie für die Kombination von Mustererkennungsmodellen für mehrere Zeitrahmen

Schriftsteller:ChaoZhang, Datum: 2024-12-11 11:04:35
Tags:JSCCPTS

img

Übersicht

Diese Strategie ist ein automatisiertes Handelssystem, das auf der Erkennung von Kerzenmustern basiert. Sie integriert zehn klassische Kerzenmuster, darunter fünf bullische Muster (Hammer, Bullish Engulfing, Piercing Line, Morning Star und Three White Soldiers) und fünf bärische Muster (Hanging Man, Bearish Engulfing, Dark Cloud Cover, Evening Star und Three Black Crows).

Strategieprinzip

Der Kern der Strategie liegt in der programmatischen Implementierung einer präzisen Kerzenmustererkennung.

  1. Für einzelne Kerzenmuster (wie Hammer, Hanging Man) basiert das Urteil hauptsächlich auf dem Verhältnis zwischen Körper und Schatten
  2. Für zwei Kerzenmuster (wie Engulfing, Piercing Line) wird das Urteil durch Vergleich der relativen Positionen benachbarter Kerzenmaschinen mit offenen und schließenden Preisen getroffen.
  3. Für drei Kerzenmuster (wie drei weiße Soldaten, drei schwarze Krähen) müssen gleichzeitig mehrere Bedingungen hinsichtlich der Trendrichtung und der Positionsbeziehungen erfüllt sein. Die Strategie ermöglicht es den Benutzern, durch Parameter-Einstellungen die spezifische Mustererkennung flexibel zu aktivieren oder zu deaktivieren.

Strategische Vorteile

  1. Umfassendkeit: Deckt die zehn repräsentativsten Kerzenmuster ab, die in der Lage sind, verschiedene Arten von Marktumkehrsignalen zu erfassen.
  2. Flexibilität: Die Nutzer können frei nach Marktbedingungen und persönlichem Handelsstil Musterkombinationen wählen
  3. Visualisierung: Ein klares Kennzeichnungssystem bietet eine intuitive Anzeige von Musterorten und -typen
  4. Automatisierung: Ein vollständig programmierter Urteilsprozess beseitigt subjektive und emotionale menschliche Urteile
  5. Praxistauglichkeit: Eine klare Strategie-Logik erleichtert die Kombination mit anderen technischen Indikatoren oder Handelssystemen

Strategische Risiken

  1. Verzögerungsrisiko: Die Musterbestätigung erfordert das Warten auf das Schließen der Kerze, was möglicherweise zu leichten Eintrittsverzögerungen führt
  2. Falsches Signalrisiko: Wenn man sich ausschließlich auf Kerzenmuster verlässt, kann es in unruhigen Märkten zu zahlreichen falschen Signalen kommen.
  3. Abhängigkeit vom Marktumfeld: Die Strategie erwirkt sich besser auf Trending-Märkten, kann aber in anderen Märkten schlechter abschneiden
  4. Parameter-Setting-Risiko: Wenn zu viele Mustererkennungen aktiviert werden, kann dies zu überfüllten Signalen führen, die das Urteilsvermögen beeinträchtigen.
  5. Risikokontrolle von Stop-Loss: Die Strategie fehlt an integrierten umfassenden Stop-Loss-Mechanismen, die zusätzliche Risikokontrolle erfordern.

Strategieoptimierungsrichtlinien

  1. Implementieren Sie Trendfilterung: Kombinieren Sie mit gleitenden Durchschnitten oder Trendindikatoren, um Gegentrendsignale auszufiltern
  2. Volumenbestätigung hinzufügen: Validieren Sie die Effektivität des Musters durch Volumenänderungen
  3. Verbesserung der Risikokontrolle: Hinzufügen dynamischer Stop-Loss- und Gewinnziele
  4. Optimierung der Musterparameter: Anpassung der Mustererkennungsparameter für verschiedene Märkte und Zeitrahmen
  5. Hinzufügen von Mustergewichtung: Einrichtung verschiedener Signalgewichtungssysteme auf der Grundlage der Musterverlässlichkeit

Zusammenfassung

Dies ist eine gut konzipierte und logisch klare Candlestick-Mustererkennungs-Handelsstrategie. Sie implementiert die traditionellen technischen Analysen die am häufigsten verwendeten Candlestick-Musterurteile durch Programmierung und bietet den Händlern ein objektives und systematisches Handelswerkzeug. Obwohl sie einige inhärente Einschränkungen hat, kann diese Strategie durch angemessene Optimierung und Kombination mit anderen technischen Tools wertvolle Referenzsignale für Handelsentscheidungen liefern. Das modulare Design der Strategie bietet auch eine gute Grundlage für die anschließende funktionelle Expansion und Leistungsoptimierung.


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Author: Raymond Ngobeni
strategy('Candlestick Pattern Strategy [Ubaton]', 'Ubaton - Candlestick Pattern Strategy', overlay = true, max_labels_count = 500, max_lines_count = 500, max_boxes_count = 500)

// User Inputs: Enable/Disable Patterns
// Bullish Patterns
enableHammer = input.bool(true, "Show Hammer")
enableBullEngulfing = input.bool(true, "Show Bullish Engulfing")
enablePiercingLine = input.bool(true, "Show Piercing Line")
enableMorningStar = input.bool(true, "Show Morning Star")
enableThreeWhiteSoldiers = input.bool(true, "Show Three White Soldiers")

// Bearish Patterns
enableHangingMan = input.bool(true, "Show Hanging Man")
enableBearEngulfing = input.bool(true, "Show Bearish Engulfing")
enableDarkCloudCover = input.bool(true, "Show Dark Cloud Cover")
enableEveningStar = input.bool(true, "Show Evening Star")
enableThreeBlackCrows = input.bool(true, "Show Three Black Crows")

// Helper Functions
isHammer() =>
    bodySize = math.abs(open - close)
    shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na
    shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize

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

isPiercingLine() =>
    close[1] < open[1] and close > close[1] + (open[1] - close[1]) * 0.5 and close < open[1]

isMorningStar() =>
    close[2] < open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close > open

isThreeWhiteSoldiers() =>
    close > open and close[1] > open[1] and close[2] > open[2] and open > close[1] and open[1] > close[2]

isHangingMan() =>
    bodySize = math.abs(open - close)
    shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na
    shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize and close < open

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

isDarkCloudCover() =>
    close[1] > open[1] and open > close[1] and close < open[1] and close < close[1] + (open[1] - close[1]) * 0.5

isEveningStar() =>
    close[2] > open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close < open

isThreeBlackCrows() =>
    close < open and close[1] < open[1] and close[2] < open[2] and open < close[1] and open[1] < close[2]

// Detect Patterns
// Bullish
hammerDetected = enableHammer and isHammer()
bullEngulfDetected = enableBullEngulfing and isBullishEngulfing()
piercingDetected = enablePiercingLine and isPiercingLine()
morningStarDetected = enableMorningStar and isMorningStar()
threeWhiteDetected = enableThreeWhiteSoldiers and isThreeWhiteSoldiers()

// Bearish
hangingManDetected = enableHangingMan and isHangingMan()
bearEngulfDetected = enableBearEngulfing and isBearishEngulfing()
darkCloudDetected = enableDarkCloudCover and isDarkCloudCover()
eveningStarDetected = enableEveningStar and isEveningStar()
threeBlackDetected = enableThreeBlackCrows and isThreeBlackCrows()

// Plot Bullish Patterns
plotshape(enableHammer and hammerDetected, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer")
plotshape(enableBullEngulfing and bullEngulfDetected, title="Bullish Engulfing", location=location.belowbar, color=color.green, style=shape.labelup, text="Engulf")
plotshape(enablePiercingLine and piercingDetected, title="Piercing Line", location=location.belowbar, color=color.green, style=shape.labelup, text="Piercing")
plotshape(enableMorningStar and morningStarDetected, title="Morning Star", location=location.belowbar, color=color.green, style=shape.labelup, text="Morning")
plotshape(enableThreeWhiteSoldiers and threeWhiteDetected, title="Three White Soldiers", location=location.belowbar, color=color.green, style=shape.labelup, text="3 Soldiers")

// Plot Bearish Patterns
plotshape(enableHangingMan and hangingManDetected, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging")
plotshape(enableBearEngulfing and bearEngulfDetected, title="Bearish Engulfing", location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulf")
plotshape(enableDarkCloudCover and darkCloudDetected, title="Dark Cloud Cover", location=location.abovebar, color=color.red, style=shape.labeldown, text="Dark Cloud")
plotshape(enableEveningStar and eveningStarDetected, title="Evening Star", location=location.abovebar, color=color.red, style=shape.labeldown, text="Evening")
plotshape(enableThreeBlackCrows and threeBlackDetected, title="Three Black Crows", location=location.abovebar, color=color.red, style=shape.labeldown, text="3 Crows")

// Strategy Execution
if hammerDetected or bullEngulfDetected or piercingDetected or morningStarDetected or threeWhiteDetected
    strategy.entry("Bullish Entry", strategy.long)

if hangingManDetected or bearEngulfDetected or darkCloudDetected or eveningStarDetected or threeBlackDetected
    strategy.entry("Bearish Entry", strategy.short)

Verwandt

Mehr