Die Ressourcen sind geladen. Beförderung...

E9 Shark-32 Muster Quantitative Preis-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-11-12 14:51:17
Tags:

img

Übersicht

Diese Strategie ist ein quantitatives Handelssystem, das auf Mustererkennung basiert und sich auf die Identifizierung und den Handel mit dem Shark-32 Kerzenmuster konzentriert. Die Strategie analysiert kontinuierliche Veränderungen in Höhen und Tiefen, setzt nach der Musterbestätigung wichtige Preisniveaus fest und führt Trades bei Ausbrüchen dieser Niveaus aus. Sie kombiniert Mustererkennung, Trendverfolgung und Preisbreakout-Elemente, um ein vollständiges Handelssystem zu schaffen.

Strategieprinzipien

Das Kernprinzip besteht darin, das Shark-32-Muster zu identifizieren, das in den beiden vorherigen Kerzen aufeinanderfolgende niedrigere Tiefststände und höhere Höchststände erfordert. Nach Bestätigung des Musters sperrt die Strategie das Hoch und das Tief der ursprünglichen Musterkerze als Schlüsselpreisniveaus. Das System tritt in Positionen ein, wenn der Preis diese Schlüsselniveaus durchbricht: lange Einträge bei Pausen über dem gesperrten Höchststand und kurze Einträge bei Pausen unter dem gesperrten Tiefstand. Die Strategie verwendet projizierte Ziellinien für Gewinnziele und prozentuale Parameter für flexible Stop-Loss-Platzierung.

Strategische Vorteile

  1. Genaue Mustererkennung: Verwendet strenge mathematische Definitionen, um Muster zu identifizieren und vermeidet subjektives Urteilen
  2. Umfassendes Risikomanagement: Einbeziehung klarer Stop-Loss- und Gewinnziele
  3. Klares visuelles Feedback: Verwendet verschiedene farbige Linien und Hintergründe, um Muster und Handelssignale zu markieren
  4. Gefilterte Wiederholungssignale: Ermöglicht nur einen Handel pro Muster und verhindert Überhandelungen
  5. Rationale Zielsetzung: Festlegung von Gewinnzielen auf der Grundlage der Musteramplitude und Gewährleistung eines guten Risiko-Renditeverhältnisses

Strategische Risiken

  1. Das Risiko eines unsicheren Marktes: Kann häufige falsche Ausbruchssignale in verschiedenen Märkten erzeugen
  2. Schwankungsrisiko: Auf schnelllebigen Märkten kann ein erheblicher Schwankungsrisiko auftreten.
  3. Abhängigkeit von einem einzigen Muster: Übermäßige Abhängigkeit von einem Muster kann andere Handelsmöglichkeiten verpassen
  4. Parameterempfindlichkeit: Die Strategieleistung hängt stark von den Einstellungen der Zielparameter Stop-Loss und Gewinn ab.

Strategieoptimierungsrichtlinien

  1. Volumenbestätigung hinzufügen: Volumenänderungen hinzufügen, um die Breakout-Gültigkeit zu bestätigen
  2. Einführung von Filtern für das Marktumfeld: Hinzufügen von Indikatoren für die Trendstärke, um ungünstige Marktbedingungen zu filtern
  3. Optimierung der Stop-Loss-Methoden: Dynamische Stop-Loss-Methoden zur Verbesserung der Anpassungsfähigkeit der Strategie
  4. Hinzufügen von Zeitfiltern: Einbeziehen von Handelssitzungsfiltern, um spezifische volatile Perioden zu vermeiden
  5. Verbesserung des Geldmanagements: Hinzufügen eines Positionsgrößenmoduls zur Optimierung der Kapitalleistung

Zusammenfassung

Die E9 Shark-32 Pattern Quantitative Price Breakout Strategy ist ein gut strukturiertes Handelssystem mit klarer Logik. Es baut eine quantifizierbare Handelsstrategie durch strenge Musterdefinitionen und klare Handelsregeln auf. Die Strategie verfügt über ein umfassendes Risikomanagementsystem und ein klares visuelles Feedback, das es Händlern leicht macht, zu verstehen und auszuführen. Durch die vorgeschlagenen Optimierungsrichtungen gibt es Raum für weitere Verbesserungen. Diese Strategie eignet sich für Anleger, die systematische Handelsansätze suchen, muss jedoch auf die Anpassungsfähigkeit des Marktumfelds und die Optimierung von Parametern geachtet werden.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
//║                                                                                                             ║
//║ ░▒▓████████▓▒░▒▓███████▓▒░ ░▒▓██████▓▒░░▒▓███████▓▒░░▒▓████████▓▒░▒▓███████▓▒░   ░▒▓████████▓▒░▒▓██████▓▒░  ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒   ░▒▓█▓▒░     ░▒▓█▓▒░░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒.  ░▒▓█▓▒░     ░▒▓█▓▒░░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓███████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓██████▓▒░ ░▒▓███████▓▒░.  ░▒▓██████▓▒░ ░▒▓███████▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒.  ░▒▓█▓▒░            ░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒.  ░▒▓█▓▒░            ░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒.  ░▒▓████████▓▒░▒▓██████▓▒░  ║
//║                                                                                                             ║
//╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════╝

//@version=5
strategy("E9 Shark-32 Pattern Strategy with Target Lines", shorttitle="E9 Shark-32 Strategy", overlay=true)

// Inputs for background color settings
bgcolorEnabled = input(true, title="Enable Background Color")
bgcolorColor = input.color(color.new(color.blue, 90), title="Background Color")

// Inputs for bar color settings
barcolorEnabled = input(true, title="Enable Bar Color")
barcolorColor = input.color(color.rgb(240, 241, 154), title="Bar Color")

// Inputs for target lines settings
targetLinesEnabled = input(true, title="Enable Target Lines")
targetLineColor = input.color(color.white, title="Target Line Color")
targetLineThickness = input.int(1, title="Target Line Thickness", minval=1, maxval=5)

// Define Shark-32 Pattern
shark32 = low[2] < low[1] and low[1] < low and high[2] > high[1] and high[1] > high

// Initialize color variables for bars
var color barColorCurrent = na
var color barColor1 = na
var color barColor2 = na

// Update color variables based on Shark-32 pattern
barColorCurrent := barcolorEnabled and (shark32 or shark32[1] or shark32[2]) ? barcolorColor : na
barColor1 := barcolorEnabled and (shark32[1] or shark32[2]) ? barcolorColor : na
barColor2 := barcolorEnabled and shark32[2] ? barcolorColor : na

// Apply the bar colors to the chart
barcolor(barColorCurrent, offset=-2, title="Shark-32 Confirmed Current")
barcolor(barColor1, offset=-3, title="Shark-32 Confirmed Previous Bar 1")
barcolor(barColor2, offset=-4, title="Shark-32 Confirmed Previous Bar 2")

// Variables for locking the high and low of confirmed Shark-32
var float patternHigh = na
var float patternLow = na
var float upperTarget = na
var float lowerTarget = na

// Once Shark-32 pattern is confirmed, lock the patternHigh, patternLow, and target lines
if shark32
    patternHigh := high[2]  // The high of the first bar in Shark-32 pattern
    patternLow := low[2]    // The low of the first bar in Shark-32 pattern

    // Calculate the upper and lower white target lines
    upperTarget := patternHigh + (patternHigh - patternLow)  // Dotted white line above
    lowerTarget := patternLow - (patternHigh - patternLow)   // Dotted white line below

// Initialize variables for the lines
var line greenLine = na
var line redLine = na
var line upperTargetLine = na
var line lowerTargetLine = na

// Draw the lines based on the locked patternHigh, patternLow, and target lines
// if shark32
//     future_bar_index_lines = bar_index + 10

//     // Draw lines based on locked patternHigh and patternLow
//     greenLine := line.new(x1=bar_index[2], y1=patternHigh, x2=future_bar_index_lines, y2=patternHigh, color=color.green, width=2, extend=extend.none)
//     redLine := line.new(x1=bar_index[2], y1=patternLow, x2=future_bar_index_lines, y2=patternLow, color=color.red, width=2, extend=extend.none)

//     // Draw dotted white lines if targetLinesEnabled is true
//     if targetLinesEnabled
//         upperTargetLine := line.new(x1=bar_index[2], y1=upperTarget, x2=future_bar_index_lines, y2=upperTarget, color=targetLineColor, width=targetLineThickness, style=line.style_dotted, extend=extend.none)
//         lowerTargetLine := line.new(x1=bar_index[2], y1=lowerTarget, x2=future_bar_index_lines, y2=lowerTarget, color=targetLineColor, width=targetLineThickness, style=line.style_dotted, extend=extend.none)

//     // Create a box to fill the background between the red and green lines
//     if bgcolorEnabled
//         box.new(left=bar_index[2], top=patternHigh, right=future_bar_index_lines, bottom=patternLow, bgcolor=bgcolorColor)

// -------------------------------------------------------------------------
// Strategy Entry and Exit Parameters
// -------------------------------------------------------------------------

// Input parameters for stop loss
longStopLoss = input.float(1.0, title="Long Stop Loss (%)", minval=0.1)  // Percentage-based stop loss for long
shortStopLoss = input.float(1.0, title="Short Stop Loss (%)", minval=0.1)  // Percentage-based stop loss for short

// Variable to track if a trade has been taken
var bool tradeTaken = false

// Reset the flag when a new Shark-32 pattern is confirmed
if shark32
    tradeTaken := false

// Entry conditions only trigger after the Shark-32 is confirmed
longCondition = ta.crossover(close, patternHigh) and not tradeTaken  // Long entry when close crosses above locked patternHigh
shortCondition = ta.crossunder(close, patternLow) and not tradeTaken  // Short entry when close crosses below locked patternLow

// Trigger long and short trades based on the crossover conditions
if (longCondition)
    label.new(bar_index, high, "Long Trigger", style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)
    strategy.entry("Shark-32 Long", strategy.long)
    tradeTaken := true  // Set the flag to true after a trade is taken

if (shortCondition)
    label.new(bar_index, low, "Short Trigger", style=label.style_label_up, color=color.red, textcolor=color.white, size=size.small)
    strategy.entry("Shark-32 Short", strategy.short)
    tradeTaken := true  // Set the flag to true after a trade is taken

// Exit long trade based on the upper target line (upper white dotted line) as take profit
if strategy.position_size > 0
    strategy.exit("Take Profit Long", "Shark-32 Long", limit=upperTarget, stop=close * (1 - longStopLoss / 100))

// Exit short trade based on the lower target line (lower white dotted line) as take profit
if strategy.position_size < 0
    strategy.exit("Take Profit Short", "Shark-32 Short", limit=lowerTarget, stop=close * (1 + shortStopLoss / 100))


Mehr