Stratégie de rupture du drapeau


Date de création: 2024-02-22 16:41:04 Dernière modification: 2024-02-22 16:41:04
Copier: 0 Nombre de clics: 727
1
Suivre
1617
Abonnés

Stratégie de rupture du drapeau

Aperçu

La stratégie de rupture de drapeau est une stratégie d’analyse technique qui vise à capturer le début d’une tendance en identifiant le graphique de drapeau et en entrant dans le point de rupture. La stratégie utilise l’indicateur de la plage de fluctuation moyenne réelle (ATR) pour juger de la plage de drapeau après la barre de drapeau définie, afin de sélectionner les opportunités d’entrée.

Principe de stratégie

La stratégie est principalement composée de plusieurs étapes:

  1. Déterminer les piliers: répondre à l’innovation des prix et dépasser le canal ATR.
  2. Déterminer la hauteur du mât: mesurer la distance entre le sommet du mât et le SMA précédent.
  3. Déterminer la portée du drapeau: le point le plus bas du drapeau est 33% de la hauteur du mât, la portée minimale du drapeau.
  4. Déterminer le type de drapeau: déterminer si les 3 premières lignes K sont toutes dans la zone du drapeau.
  5. L’entrée: plus quand il y a des drapeaux
  6. Sortie: 6 lignes de K détenues en stock fixe.

Lors de la détermination du mât et du drapeau, la stratégie utilise habilement l’indicateur ATR pour déterminer les ruptures évidentes et limite strictement la hauteur du drapeau à 33% de la hauteur du mât, évitant ainsi les faux signaux excessifs. De plus, la détermination que 3 lignes K consécutives constituent un drapeau est plus fiable.

Analyse des avantages

Cette stratégie présente les principaux avantages suivants:

  1. La méthode classique de l’analyse technique consiste à détecter les tendances à l’aide de la structure de la bannière, qui a un taux de réussite plus élevé.
  2. L’indicateur ATR et les restrictions de portée strictes permettent d’éviter un grand nombre de faux signaux et d’améliorer la précision d’entrée.
  3. La sortie de 6 lignes K fixes permet de bloquer une partie des bénéfices et d’éviter le risque d’un renversement de tendance.
  4. Les règles de la stratégie sont claires, faciles à mettre en œuvre, à maîtriser et à suivre.
  5. Il est plus flexible et peut trouver des opportunités dans toutes sortes de situations.

Analyse des risques

Les principaux risques de cette stratégie sont:

  1. Il y a des cas où les drapeaux ne sont pas capables de juger de la tendance et d’autres où ils échouent.
  2. La ligne 6K est trop arbitraire et risque de se retirer trop tôt.
  3. Il est facile de se tromper de flagrant délit d’initié quand les choses sont trop trépidantes.
  4. Les pertes individuelles ne sont pas maîtrisées efficacement.

Pour ces risques, nous pouvons mettre en place une stratégie de stop loss ou un mécanisme d’optimisation des sorties, qui nous permet de réaliser des bénéfices en temps opportun lorsque le profit atteint un certain pourcentage. De plus, nous pouvons également filtrer en combinaison avec d’autres indicateurs, afin d’éviter de produire de faux signaux lorsque la situation est trop volatile.

Direction d’optimisation

Cette stratégie peut être optimisée dans les directions suivantes:

  1. La combinaison d’indicateurs tels que MACD, KD, etc. est utilisée pour éviter les faux signaux en cas de tremblement.
  2. Paramétriser les ATR en fonction des catégories de marché, des périodes de sortie, etc., rend la stratégie plus adaptative.
  3. Il est préférable de mettre en place un stop loss mobile ou de considérer un retrait de gain par rapport à une sortie dynamique.
  4. Pour déterminer la hauteur du drapeau, essayez de trouver des caractéristiques plus précises grâce à l’apprentissage automatique.
  5. Évaluer le taux de réussite et de perte réels et ajuster dynamiquement la taille de la position.

Résumer

Dans l’ensemble, la stratégie de rupture de bannière, qui utilise la tendance à la détection de la forme technique, est une méthode plus classique qui est vraiment rigoureuse dans la conception des règles d’entrée et qui filtre un grand nombre de faux signaux. Cependant, il y a encore de la place pour l’optimisation des mécanismes de contrôle du risque et de sortie, que nous pouvons considérer dans une perspective globale, afin que la stratégie puisse fonctionner de manière stable sur différents marchés.

Code source de la stratégie
/*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")