E9 Shark 32 Muster Quantitative Preisdurchbruchstrategie


Erstellungsdatum: 2024-11-12 14:51:17 zuletzt geändert: 2024-11-12 14:51:17
Kopie: 1 Klicks: 422
1
konzentrieren Sie sich auf
1617
Anhänger

E9 Shark 32 Muster Quantitative Preisdurchbruchstrategie

Überblick

Die Strategie ist ein quantitatives Handelssystem, das auf der Identifizierung von Preisformationen basiert, wobei der Kern darin besteht, eine spezielle K-Linie-Form, die “Schwanz 32”, zu identifizieren und zu nutzen. Die Strategie analysiert die kontinuierlichen Veränderungen von Höhen und Tiefen, setzt nach der Bestätigung der Formation kritische Preisniveaus und handelt, wenn diese Niveaus überschritten werden. Die Strategie kombiniert mehrere technische Analyseelemente wie Formation, Trendverfolgung und Preisdurchbrüche, um ein vollständiges Handelssystem zu schaffen.

Strategieprinzip

Der Kern der Strategie ist die Identifizierung der “Fisher 32” -Form, die folgende Bedingungen erfüllt: Die niedrigen Punkte der ersten beiden K-Linien sinken kontinuierlich, während die hohen Punkte steigen kontinuierlich. Nachdem die Form bestätigt wurde, wird die Strategie die Höhen und Tiefen der K-Linien der Anfangsform als wichtige Preisniveaus gesperrt. Das System eröffnet Positionen, wenn der Preis diese wichtigen Niveaus durchbricht: Wenn der Bilanzpreis die gesperrten Höhen durchbricht, macht er mehr, wenn die gesperrten Tiefen durchbrochen werden.

Strategische Vorteile

  1. Formenerkennung ist präzise: Formen werden durch strenge mathematische Definitionen erkannt, um subjektive Urteile zu vermeiden
  2. Gute Risikomanagement: Einführung von klaren Stop-Loss- und Gewinnzielen
  3. Klare visuelle Rückmeldung: Die Verwendung von unterschiedlich farbigen Linien und Hintergründen für Formen und Handelssignale
  4. Doppelsignal-Filter: Jede Form darf nur einmal ausgeführt werden, um Übertrading zu vermeiden
  5. Zielorientierung ist vernünftig: Gewinnziele basierend auf Formvariationen mit einem guten Risiko-Gewinn-Verhältnis

Strategisches Risiko

  1. Schwankungsrisiko: Häufige falsche Durchbruchsignale in schwankenden Märkten
  2. Rutschrisiko: Bei schnellen Fahrten kann es zu einem größeren Rutsch kommen.
  3. Monoform-Abhängigkeit: Übermäßige Abhängigkeit von Monoforms kann andere Handelschancen verpassen
  4. Parameter-Sensitivität: Die Einstellung von Parametern für Stop-Loss- und Gewinnziele hat einen großen Einfluss auf die Strategie-Performance

Richtung der Strategieoptimierung

  1. Hinzufügen von Transaktionsbestätigung: Transaktionsänderungen können kombiniert werden, um die Wirksamkeit des Durchbruchs zu bestätigen
  2. Einführung von Marktumfeld-Filtern: Erhöhung der Trendstärke-Indikatoren, um ungünstige Marktumstände zu filtern
  3. Optimierung der Stop-Loss-Methode: Erwägen Sie, dynamische Stop-Loss-Methoden zu verwenden, um die Anpassungsfähigkeit der Strategie zu verbessern
  4. Zeit-Filter hinzugefügt: Zeit-Filter hinzugefügt, um Schwankungen in bestimmten Zeiträumen zu vermeiden
  5. Verbesserung der Kapitalverwaltung: Erweiterung der Positionsverwaltungsmodule zur Optimierung der Kapitalverwertung

Zusammenfassen

Die Strategie ist ein strukturiertes, logisch klares Handelssystem. Durch strenge Formaldefinitionen und klare Handelsregeln wird eine handelbare Handelsstrategie aufgebaut. Das Risikomanagementsystem der Strategie ist ausgebaut, die visuelle Rückmeldung ist klar und den Händlern ist es leicht zu verstehen und auszuführen. Durch die empfohlene Optimierungsrichtung gibt es noch Raum für weitere Verbesserungen.

Strategiequellcode
/*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))