Esta é uma estratégia de rastreamento de linha longa de tendência que julga a tendência com base em fractais de preço. Ele decide abrir posições com base na ruptura do último ponto fractal. Ao mesmo tempo, ele julga a direção da tendência calculando o preço médio dos últimos N pontos fractal e fecha posições quando a tendência muda.
Calcule os pontos fractais dos preços. O ponto fractal é definido como o preço mais alto hoje que é maior do que os preços mais altos dos dois dias anteriores e dos dois dias seguintes.
Gravar o preço do último ponto fractal como resistência.
Quando o preço de fechamento atravessa o último ponto fractal, considera-se que a resistência foi quebrada e uma posição longa foi estabelecida.
Calcule o preço médio dos últimos N pontos fractais para determinar a tendência. Quando o preço médio sobe, é uma tendência de alta, e quando cai, é uma tendência de baixa.
Se o preço médio do ponto fractal cair durante a posição longa, feche a posição.
A maior vantagem desta estratégia de julgamento de tendências baseada em fractal é que ela pode efetivamente filtrar o ruído do mercado e determinar direções de tendência de longo prazo.
Além disso, os critérios de abertura e de encerramento das posições desta estratégia são muito claros, o que evita negociações frequentes e a torna particularmente adequada para participações de longo prazo.
O maior risco desta estratégia reside na natureza probabilística dos próprios pontos fractais. Os fractals não podem prever completamente se os preços definitivamente reverterão, ou seja, a probabilidade de julgamento errado ainda existe.
Além disso, o intervalo de tempo para julgar pontos fractais é longo e não pode se adaptar à negociação de alta frequência.
Considerando a probabilidade de julgamento incorreto de pontos fractais, podemos otimizar das seguintes maneiras:
Combinar com outros indicadores, como Bandas de Bollinger, médias móveis, etc., para evitar erros de julgamento baseados apenas em pontos fractais.
Ajustar os parâmetros dos pontos fractais, como o número de períodos antes e depois do julgamento, para otimizar os julgamentos de pontos fractais.
Adicionar estratégias de stop loss para parar perdas quando as perdas se expandirem até certo ponto.
A estratégia de ruptura fractal é muito adequada para julgar tendências de longo prazo em geral e é muito adequada para uso por investidores de longo prazo.
/*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')