Stratégie de rupture fractale

Auteur:ChaoZhang est là., Date: 2023-12-19 15:32:57 Je vous en prie.
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de suivi de ligne longue qui juge la tendance en fonction des fractales de prix. Il décide d'ouvrir des positions en fonction de la percée du dernier point fractal. En même temps, il juge la direction de la tendance en calculant le prix moyen des derniers N points fractal et ferme les positions lorsque la tendance change.

Principaux

  1. Calculez les points fractaux des prix. Le point fractal est défini comme le prix le plus élevé aujourd'hui qui est supérieur aux prix les plus élevés des deux jours précédents et des deux jours suivants.

  2. Enregistrez le prix du dernier point fractal comme résistance.

  3. Lorsque le prix de clôture franchit le dernier point fractal, on considère que la résistance a été brisée et qu'une position longue a été établie.

  4. Calculez le prix moyen des derniers N points fractaux pour déterminer la tendance. Quand le prix moyen augmente, c'est une tendance haussière, et quand il tombe, c'est une tendance baissière.

  5. Si le prix moyen du point fractal baisse pendant la position longue, fermez la position.

Analyse des avantages

L'avantage majeur de cette stratégie de jugement de tendance basée sur les fractals est qu'elle peut filtrer efficacement le bruit du marché et déterminer les orientations de tendance à plus long terme.

En outre, les critères d'ouverture et de clôture des positions de cette stratégie sont très clairs, ce qui évite une négociation fréquente.

Analyse des risques

Le plus grand risque de cette stratégie réside dans la nature probabiliste des points fractaux eux-mêmes. Les fractaux ne peuvent pas prédire complètement si les prix vont définitivement s'inverser, c'est-à-dire que la probabilité d'un mauvais jugement existe toujours.

En outre, la durée de jugement des points fractaux est longue et ne peut pas s'adapter au trading à haute fréquence.

Directions d'optimisation

Compte tenu de la probabilité d'erreur de jugement des points fractaux, nous pouvons optimiser de la manière suivante:

  1. Combinez avec d'autres indicateurs tels que les bandes de Bollinger, les moyennes mobiles, etc. pour éviter les erreurs de jugement basées uniquement sur des points fractaux.

  2. Ajustez les paramètres des points fractaux, tels que le nombre de périodes avant et après le jugement, pour optimiser les jugements des points fractaux.

  3. Ajoutez des stratégies de stop loss pour arrêter les pertes lorsque les pertes augmentent dans une certaine mesure.

Résumé

La stratégie de rupture fractale est très adaptée pour juger des tendances à long terme globalement et est très adaptée à l'utilisation par les investisseurs à long terme. Tant que nous ajustons correctement les paramètres de manière appropriée, ajoutons d'autres indicateurs de filtrage sur la base de l'assurance de l'exactitude du jugement, nous pouvons grandement optimiser cette stratégie et en faire une partie importante de la décision quantitative.


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

Plus de