
Стратегия взлома предназначена для захвата цены взлома, вызванной увеличением волатильности рынка. Эта стратегия использует средний реальный диапазон колебаний (ATR) для измерения волатильности активов в течение определенного периода. Когда цена пересекает две верхние и нижние линии взлома, определенные ATR, генерируются сигналы о покупке и продаже.
Эта стратегия сначала рассчитывает ATR в течение заданного цикла. Затем, исходя из ATR, рассчитывается поход и поход. Когда цена закрытия прорывает поход, генерируется многозначный сигнал; когда цена закрытия падает поход, генерируется пустой сигнал.
Когда цена закрытия прорывается вверх и вниз, в направлении прорыва заполняется цвет пробелов. Эта функция помогает быстро идентифицировать направление текущего тренда.
При появлении сигнала “до” и отсутствии текущей позиции, стратегия открывает позицию “до”.
Параметр Length определяет длительность цикла, измеряющего волатильность. Более высокие значения Length означают, что цены будут колебаться дольше. Например, когда Length составляет 20, каждая сделка проходит через около 100 K-линий и содержит несколько колебаний.
Уменьшение значения Length позволяет сосредоточиться на более краткосрочных колебаниях цен, увеличивая частоту торгов. Нет строгой корреляции между значениями Length и средней длиной торгов, необходимо найти оптимальное значение Length путем проб и ошибок.
Эта стратегия использует принцип прорыва, чтобы уловить большую ситуацию, вызванную рыночными колебаниями. ATR динамически рассчитывает прорыв, избегая использования фиксированных параметров.
Используйте реальную K-линию для подтверждения сигнала, чтобы отфильтровать ложные прорывы. Заполните пробелы в цвете, чтобы интуитивно отобразить направление тенденции.
Параметры Length обеспечивают гибкость при изменении стратегии, позволяя оптимизировать параметры в зависимости от конкретных рыночных изменений.
Существует риск арбитража при прорыве сделки. Можно установить стоп-лосс, чтобы контролировать одиночные потери.
Прорыв сигналов может привести к ошибочным сообщениям, в результате которых может возникнуть сверхкороткая линия торгов.
Для оптимизации параметров необходимо накопить достаточную поддержку данных о транзакциях. Неправильный выбор первоначальных параметров может привести к плохой работе транзакций.
Буринская полоса может быть введена в течение цикла ATR в качестве нового метода расчета прорывных точек. Прорыв буринской полосы может снизить уровень ошибочных сообщений.
После прорыва можно продолжить отслеживание тренда, не останавливаясь сразу. Например, присоединиться к тренду с остановкой.
Можно подумать о том, чтобы использовать другие параметры или вообще не торговать на рынке во время колебаний, чтобы избежать сбоев.
Стратегия прорыва использует рыночную волатильность, чтобы войти в тренд, когда цена совершает крупный прорыв. Динамика ATR определяет точку прорыва, а физическая K-линия фильтрует ложный прорыв. Параметр Length предоставляет гибкость при корректировке цикла стратегии.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=5
strategy("Volatility Breakout Strategy [Angel Algo]", overlay = true)
// Inputs
length = input(title="Length", defval=20)
// Calculate the average true range (ATR)
atr = ta.atr(length)
// Plot the ATR on the chart
plot(atr, color=color.blue, linewidth=2, title="ATR")
// Calculate the upper and lower breakouts
upper_breakout = high + atr
lower_breakout = low - atr
// Plot the upper and lower breakouts on the chart
ul = plot(upper_breakout[1], color = color.new(color.green, 100), linewidth=2, title="Upper Breakout Level")
ll = plot(lower_breakout[1], color = color.new(color.red, 100), linewidth=2, title="Lower Breakout Level")
// Create the signals
long_entry = ta.crossover(close, upper_breakout[1]) and barstate.isconfirmed
short_entry = ta.crossunder(close, lower_breakout[1]) and barstate.isconfirmed
active_signal_color =ta.barssince(long_entry) < ta.barssince(short_entry) ?
color.new(color.green,85) : color.new(color.red,85)
// Plot the signals on the chart
plotshape(long_entry and ta.barssince(long_entry[1]) > ta.barssince(short_entry[1]), location=location.belowbar, style=shape.triangleup,
color=color.green, size=size.normal, text = "Bullish breakout", textcolor = color.green)
plotshape(short_entry and ta.barssince(long_entry[1]) < ta.barssince(short_entry[1]), location=location.abovebar, style=shape.triangledown,
color=color.red, size=size.normal,text = "Bearish breakout", textcolor = color.red)
// Fill the space between the upper and lower levels with the color that indicates the latest signal direction
fill(ul,ll, color=active_signal_color)
long_condition = long_entry and strategy.position_size <= 0 and barstate.isconfirmed
short_condition = short_entry and strategy.position_size >= 0 and barstate.isconfirmed
if long_condition
strategy.entry("Volatility Breakout Long", strategy.long)
if short_condition
strategy.entry("Volatility Breakout Short", strategy.short)