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


Дата создания: 2023-12-19 15:32:57 Последнее изменение: 2023-12-19 15:32:57
Копировать: 2 Количество просмотров: 885
1
Подписаться
1621
Подписчики

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

Обзор

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

Стратегический принцип

  1. Разделительная точка для расчета цены. Разделительная точка определяется как наивысшая цена в день, превышающая наивысшую цену в предыдущие два дня и последующие два дня.
  2. Запишите цену последней деформации в качестве сопротивления.
  3. Когда цена закрытия пробивает последнюю точку деформации, считается, что сопротивление было пробито, и создается позиция.
  4. Для определения тенденции рассчитывается средняя цена последних N точек, когда средняя цена повышается, она является тенденцией к повышению, а когда она снижается, она является тенденцией к снижению.
  5. Если при многоположении средняя цена в точке превращается в падение, то позиция будет равномерной.

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

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

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

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

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

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

Направление оптимизации

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

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