Strategie zur Ausbrechung der Stierflagge

Schriftsteller:ChaoZhang, Datum: 2024-02-22 16:41:04
Tags:

img

Übersicht

Die Bull Flag Breakout-Strategie ist eine technische Analyse-Strategie, die Phasen des Bull Flag Charts identifiziert und am Breakout-Punkt eingeht, um den Beginn eines Trends zu erfassen.

Strategie Logik

Die wichtigsten Schritte dieser Strategie sind:

  1. Bestimmung des Flaggenpfosten: Erfordert ein neues Höchstpreis und Ausbruch des ATR-Kanals.
  2. Bestimmung der Stanghöhe: Abstand zwischen der Stangspitze und der vorherigen SMA.
  3. Bestimmung des Flaggenbereichs: Der Flaggenboden beträgt 33% der Stangenhöhe als Mindestbereich.
  4. Identifizieren Sie das Flaggenmuster: Beurteilen Sie, ob die letzten 3 Barren alle innerhalb des Flaggenbereichs liegen.
  5. Eintritt: Länge gehen, wenn das Flaggenmuster erscheint.
  6. Ausgang: Schließposition nach Festsetzung von 6 Stäben.

Bei der Beurteilung von Flaggenpfahl und Flagge verwendet die Strategie klug den ATR-Indikator, um signifikante Ausbrüche zu bestimmen, und begrenzt die Flaggenhöhe streng auf 33% der Pfahlhöhe, um übermäßige falsche Signale zu vermeiden.

Analyse der Vorteile

Zu den Hauptvorteilen dieser Strategie gehören:

  1. Die Verwendung von Flaggenmustern zur Bestimmung von Trendstarts ist eine klassische technische Analysemethode mit hoher Erfolgsrate.
  2. ATR und strikte Reichweitenbeschränkungen vermeiden viele falsche Signale und verbessern die Eingangsgenauigkeit.
  3. Festgesetzt 6 Bar Ausgangssperren in einigen Gewinnen und vermeidet Umkehrrisiken.
  4. Klare Regeln, die leicht umzusetzen, zu verstehen und zu befolgen sind.
  5. Möglichkeiten in verschiedenen Marktbedingungen finden, flexibel.

Risikoanalyse

Die wichtigsten Risiken dieser Strategie sind:

  1. Flags können Trends nicht vollständig bestimmen, Fehler bestehen immer noch.
  2. 6 bar Ausgang kann vorzeitig sein und zu früh ausgehen.
  3. Ein unruhiger Markt kann leicht falsche Flaggen erzeugen.
  4. Nicht in der Lage, den Betrag der einzelnen Verluste wirksam zu kontrollieren.

Um die oben genannten Risiken zu beheben, können wir Stop-Losses einstellen, Exit-Mechanismen optimieren, um Gewinne zu erzielen, wenn wir ein bestimmtes Gewinnverhältnis erreichen.

Optimierungsrichtlinien

Einige Richtungen zur Optimierung der Strategie:

  1. Kombinieren Sie Indikatoren wie MACD, KD, um falsche Signale in unruhigen Märkten zu vermeiden.
  2. Parametrierung des ATR-Multiplikators, Ausstiegszeitraum basierend auf dem Marktsystem zur Verbesserung der Anpassungsfähigkeit.
  3. Einrichtung von Trailing Stop Loss oder Berücksichtigung der Gewinnrückführungsquote für dynamische Exits.
  4. Versuchen Sie maschinelles Lernen, um bessere Merkmale für die Flaggenhöhe zu finden.
  5. Beurteilen Sie die tatsächliche Gewinnrate und die Gewinnquote, passen Sie die Positionsgröße dynamisch an.

Schlussfolgerung

In der Schlussfolgerung, die Bullen-Flagge Breakout-Strategie verwendet technische Muster, um Trendstarts zu bestimmen, eine eher klassische Methode, und die Eintrittsregeln sind in der Tat strikt entworfen, um viele falsche Signale auszufiltern.


/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © smith26
//This strategy enters on a bull flag and closes position 6 bars later.  Average true range is used instead of a moving average.
//The reason for ATR instead of MA is because with volatile securities, the flagpole must stand up a noticable "distance" above the trading range---which you can't determine with a MA alone.
//This is broken up into multiple parts: Defining a flagpole, defining the pole height, and defining the flag, which will be constrained to the top third (33%) of the pole height to be considered a flag.
//@version=4
strategy("Bull Flag v1.00", overlay=true)

ATR = atr(10) //Average True Range over last 10 bars.

upperATR = ohlc4[1] + ATR[1]  //Open + High + Low + Close divided by 4, + prior ATR.  Just used here for visually plotting the ATR upper channel.
lowerATR = ohlc4[1] - ATR[1] //Open + High + Low + Close divided by 4, - prior ATR.  Just used here for visually plotting the ATR lower channel.

//uncomment these two lines to see ATR channels
plot(upperATR, color=color.orange)
plot (lowerATR, color=color.orange)

//Current close higher than previous close, and current close minus current open is greater than 3 times the previous ATR.  "3x ATR" is chosen because any less was not a noticeable distance above the trading range.
flagpole1 = close>close[1] and (close-open) > (ATR[1] * 3)
plotshape(flagpole1, text="flagpole1", style=shape.arrowdown, size=size.huge) //Plots an arrow for flagpole1 for QA testing

//Two consecutive close higer than their previous close, and current close minus PREVIOUS open is greater than 3 times the previous ATR.
flagpole2 = close>close[1] and close[1]>close[2] and (close-open[1]) > (ATR[1] * 3)
plotshape(flagpole2, text="flagpole2", style=shape.arrowdown, size=size.huge, color=color.yellow) //Plots an arrow for flagpole2 for QA testing

//Three consecutive close higer than their previous close, and current close minus open from 2 bars ago is greater than 3 times the previous ATR.
flagpole3 = close>close[1] and close[1]>close[2] and close[2]>close[3] and (close-open[2]) > (ATR[1] * 3)
plotshape(flagpole3, text="flagpole3", style=shape.arrowdown, size=size.huge, color=color.white) //Plots an arrow for flagpole3 for QA testing

//A flagpole can be any of the three definitions of flagpole.
flagpole = flagpole1 or flagpole2 or flagpole3

//This will return the number of bars since "flagpole" was true.  Not being used, but could be useful.
//since_flagpole = barssince(flagpole)

after_pole_1 = flagpole[1] //This marks the bar directly after a flagpole.  
//plotshape(after_pole_1, text="after_pole_1", style=shape.cross, size=size.large, color=color.white) //Plots a cross for after_pole_1 for QA testing
after_pole_2 = flagpole[2] //This marks the bar two bars after a flagpole.  
after_pole_3 = flagpole[3] //This marks the bar three bars after a flagpole.  

//This returns the price at the "top" of the flagpole (using close price) at the most recent occurence, 0.
pole_top = valuewhen(flagpole, close, 0)
//plot(pole_top, trackprice=true)  //plots a horizontal line at the most recent pole_top

//Measures the distance between last pole top and the previous SMA.
pole_height = pole_top - sma(close, 10)[1] 
//plot(pole_height)

//This marks 33% below the pole_top, which will be the lowest point a flag can be.
flag_bottom = pole_top - (.33 * pole_height)
//plot(flag_bottom)

//The first, second, and third bars after the pole are considered part of a flag when open and close are between the pole_top and flag_bottom
flag1 = after_pole_1 and (open >= flag_bottom) and (open <= pole_top) and (close >= flag_bottom) and (close <= pole_top)
//plotshape(flag1, text="flag1", style=shape.flag, size=size.large, color=color.teal)
flag2 = after_pole_2 and (open >= flag_bottom) and (open <= pole_top) and (close >= flag_bottom) and (close <= pole_top)
//plotshape(flag2, text="flag2", style=shape.flag, size=size.large, color=color.teal)
flag3 = after_pole_3 and (open >= flag_bottom) and (open <= pole_top) and (close >= flag_bottom) and (close <= pole_top)
//plotshape(flag3, text="flag3", style=shape.flag, size=size.large, color=color.teal)

//When all three bars after a flagpole are a flag, the criteria are met and we have a "bull_flag"
//Specifically, when current bar is flag3, previous bar is flag2, and 2 bars ago is flag1, we have a bull_flag.
bull_flag = flag3 and flag2[1] and flag1[2]
plotshape(bull_flag, text="bull_flag", style=shape.flag, size=size.large, color=color.white) //Plots a flag for bull_flag for QA testing


if (bull_flag)
    strategy.entry("Long", strategy.long)

if barssince(bull_flag) == 6 //close 6 bars after entry.
    strategy.close("Long")

Mehr