Стратегия фрактального прорыва

Автор:Чао Чжан, Дата: 2023-12-19 15:32:57
Тэги:

img

Обзор

Это стратегия отслеживания длинной линии, которая оценивает тренд на основе ценовых фракталов. Он решает открыть позиции на основе прорыва последней фрактальной точки. В то же время он оценивает направление тренда, рассчитывая среднюю цену последних N фрактальных точек и закрывает позиции при изменении тренда.

Принципы

  1. Вычислите фрактальные точки цен. Фрактальная точка определяется как самая высокая цена сегодня, которая выше, чем самые высокие цены предыдущих двух дней и следующих двух дней.

  2. Запишите цену последней фрактальной точки как сопротивление.

  3. Когда цена закрытия проходит через последнюю фрактальную точку, считается, что сопротивление было преодолено и установлена длинная позиция.

  4. Вычислите среднюю цену последних N фрактальных точек, чтобы определить тренд.

  5. Если средняя цена фрактальной точки падает во время длинной позиции, закрыть позицию.

Анализ преимуществ

Наибольшее преимущество этой стратегии оценки тренда на основе фракталов заключается в том, что она может эффективно фильтровать шум рынка и определять долгосрочные направления тренда.

Кроме того, критерии для открытия и закрытия позиций этой стратегии очень ясны, что позволяет избежать частой торговли, а также делает ее особенно подходящей для долгосрочных позиций.

Анализ рисков

Наибольший риск этой стратегии заключается в вероятностном характере самих фрактальных точек. Фракталы не могут полностью предсказать, действительно ли цены обратятся, то есть вероятность ошибочного суждения все еще существует.

Кроме того, промежуток времени для оценки фрактальных точек длинный и не может адаптироваться к высокочастотной торговле.

Руководство по оптимизации

Учитывая вероятность ошибочной оценки фрактальных точек, мы можем оптимизировать следующими способами:

  1. Комбинируйте с другими показателями, такими как полосы Боллинджера, скользящие средние и т. д., чтобы избежать ошибочных суждений, основанных исключительно на фрактальных точках.

  2. Настройка параметров фрактальных точек, таких как количество периодов до и после суждения, для оптимизации суждений о фрактальных точках.

  3. Добавьте стратегии стоп-лосса, чтобы остановить убытки, когда убытки увеличиваются в определенной степени.

Резюме

Стратегия фрактального прорыва очень подходит для оценки долгосрочных тенденций в целом и очень подходит для использования долгосрочными инвесторами. До тех пор, пока мы правильно корректируем параметры, добавляем другие фильтрующие индикаторы на основе обеспечения точности суждения, мы можем значительно оптимизировать эту стратегию и сделать ее важной частью количественного решения.


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

Больше