
A estratégia é uma estratégia de acompanhamento de tendências de linha longa para determinar a tendência dos preços. Ela determina a posição por meio do cálculo dos pontos de divisão dos preços históricos e determina a ruptura do último ponto de divisão.
Esta estratégia baseada em pontos de divisão para determinar a tendência, a maior vantagem é que pode filtrar eficazmente o ruído do mercado e determinar a direção da tendência de uma linha mais longa. Em comparação com indicadores como a média móvel simples, ela é mais resistente a flutuações anormais súbitas.
Além disso, a estratégia julga os critérios de construção e manutenção de uma posição com muita clareza, sem problemas de negociação frequente. Isso também torna a estratégia especialmente adequada para a posse de linhas longas.
O maior risco dessa estratégia reside na probabilidade do próprio julgamento dos pontos de divisão. Os pontos de divisão não podem prever 100% de que o preço deve ser revertido, ou seja, a probabilidade de julgamento errado permanece. Quando ocorre um julgamento errado, o risco de perda será enfrentado.
Além disso, o tempo de julgamento de pontos de divisão é longo e não é adequado para negociações de alta frequência. Esta estratégia também não é adequada se você estiver buscando negociações de linha curta.
Tendo em conta a probabilidade de erro na determinação do ponto de separação, podemos otimizar o resultado da análise por meio dos seguintes métodos:
Combinando a confirmação com outros indicadores, como o canal de Brink’s Line, a média móvel, etc., evita erros de julgamento de ponto fracionado único.
Ajustar os parâmetros do ponto de divisão, como o número de ciclos antes e depois do julgamento, para otimizar o julgamento do ponto de divisão.
Aumentar a estratégia de parar perdas, parar perdas quando os prejuízos se expandem a um certo nível.
Esta estratégia de divisão de ruptura é muito adequada para avaliar tendências de longo prazo e para ser usada por investidores de longo prazo. Só precisamos ajustar os parâmetros adequadamente e adicionar outros indicadores de filtragem para garantir a precisão do julgamento.
/*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')