Stratégie de Breakout Fractal


Date de création: 2023-12-19 15:32:57 Dernière modification: 2023-12-19 15:32:57
Copier: 2 Nombre de clics: 531
1
Suivre
1176
Abonnés

Stratégie de Breakout Fractal

Aperçu

La stratégie est une stratégie de suivi de tendance en longues lignes qui détermine la tendance des prix. Elle décide de la position en calculant les fractions du prix historique, en déterminant la rupture du dernier point de fraction.

Principe de stratégie

  1. Le point de fractionnement est défini comme étant le prix le plus élevé du jour supérieur au prix le plus élevé des deux jours précédents et des deux jours suivants.
  2. Enregistrez le prix du dernier point de rupture comme résistance.
  3. Lorsque le prix de clôture franchit le dernier point de fracture, considérez que la résistance a été franchie et établissez une position en plus.
  4. Le calcul de la moyenne des N derniers points de fraction permet de déterminer la tendance. La hausse est une tendance haussière, la baisse est une tendance baissière.
  5. Si le prix moyen du point de fracture est inversé par une baisse lors d’une position multiple, alors la position est nulle.

Analyse des avantages

Cette stratégie basée sur des courbes de fractionnement a pour principal avantage de filtrer efficacement le bruit du marché et de déterminer la direction de la tendance sur des lignes plus longues. Par rapport à des indicateurs tels que les moyennes mobiles simples, elle est plus résistante aux fluctuations anormales soudaines.

De plus, la stratégie est très claire sur les critères de placement et de négociation, ce qui ne pose pas de problème de fréquence des transactions.

Analyse des risques

Le plus grand risque de cette stratégie réside dans la probabilité de la décision de la fraction elle-même. La fraction ne peut pas prédire à 100% que le prix va inévitablement se retourner, ce qui signifie que la probabilité d’une erreur de jugement est toujours présente.

De plus, le temps de jugement des points de déformation est plus long et ne convient pas aux transactions à haute fréquence. Cette stratégie n’est pas très appropriée si vous recherchez des transactions à courte durée.

Direction d’optimisation

En tenant compte de la probabilité d’erreur dans le jugement de la fraction, nous pouvons l’optimiser de la manière suivante:

  1. En combinaison avec d’autres indicateurs de confirmation, tels que le canal de la ligne de Brill, la moyenne mobile, etc., il est possible d’éviter les erreurs de jugement en un seul point de fraction.

  2. Adapter les paramètres du point de déformation, tels que le nombre de cycles avant et après le jugement, pour optimiser le jugement du point de déformation.

  3. Augmenter les stratégies de stop-loss et les arrêter lorsque les pertes se développent à un certain niveau.

Résumer

Cette stratégie de déformation de rupture est parfaitement adaptée à l’ensemble des tendances de la ligne longue et est parfaitement adaptée aux investisseurs de la ligne longue. Nous n’avons qu’à ajuster les paramètres et ajouter d’autres indicateurs de filtrage pour optimiser considérablement cette stratégie et en faire une partie importante de la décision quantitative.

Code source de la stratégie
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Fractal Breakout Strategy (by ChartArt)", shorttitle="CA_-_Fractal_Breakout_Strat", overlay=true)

// ChartArt's Fractal Breakout Strategy
//
// Version 1.0
// Idea by ChartArt on April 24, 2016.
//
// This long only strategy determines the last fractal top
// and enters a trade when the price breaks above the last
// fractal top. The strategy also calculates the average
// price of the last 2 (or 3) fractal tops to get the trend.
//
// The strategy exits the long trade when the average of the
// fractal tops is falling (when the trend is lower highs).
// And the user can manually set a delay of this exit.
//
// In addition the fractals tops can be colored in blue
// and a line can be drawn based on the fractal tops.
// This fractal top line is colored by the fractal trend.
//
// List of my work: 
// https://www.tradingview.com/u/ChartArt/
// 
//  __             __  ___       __  ___ 
// /  ` |__|  /\  |__)  |   /\  |__)  |  
// \__, |  | /~~\ |  \  |  /~~\ |  \  |  
// 
// 


// input

n_time = input(title='Always exit each trade after this amount of bars later (Most important strategy setting)', defval=3)
price = input(hl2,title='Price type to determine the last fractal top and the fractal breakout, the default is (high+low)/2')


// fractal calculation

fractal_top = high[2] > high[3] and high[2] > high[4] and high[2] > high[1] and high[2] > high[0]
fractal_price = valuewhen(fractal_top, price, 1)
use_longer_average = input(true,title='Use Fractal price average of the last 3 fractals instead of the last 2 fractals?')
fractal_average = use_longer_average?(fractal_price[1] + fractal_price[2] + fractal_price[3] ) / 3 : (fractal_price[1] + fractal_price[2]) / 2
fractal_trend = fractal_average[0] > fractal_average[1]
no_repainting = input(true,title='Use the price of the last bar to prevent repainting?')
fractal_breakout = no_repainting?price[1] > fractal_price[0]:price[0] > fractal_price[0]


// highlight fractal tops

show_highlight = input(true,title='Highlight fractal tops in blue and color all other bars in gray?')
highlight = fractal_top?blue:silver
barcolor(show_highlight?highlight:na,offset=-2)
show_fractal_top_line = input(true,title='Draw a colored line based on the fractal tops?')
fractal_top_line = change(fractal_top) != 0 ? price : na
fractal_top_line_color = change(fractal_price) > 0 and fractal_breakout == true ? green : change(fractal_price) < 0 and fractal_breakout == false ? red : blue
plot(show_fractal_top_line?fractal_top_line:na,offset=-2,color=fractal_top_line_color,linewidth=4)


// strategy

trade_entry = fractal_trend and fractal_breakout
trade_exit = fractal_trend[n_time] and fractal_trend == false 
 
if (trade_entry)
    strategy.entry('Long', strategy.long)
 
if (trade_exit)
    strategy.close('Long')