Стратегия прорыва полосы Боллинджера и фильтра волатильности


Дата создания: 2024-03-08 15:28:05 Последнее изменение: 2024-03-08 15:28:05
Копировать: 0 Количество просмотров: 692
1
Подписаться
1617
Подписчики

Стратегия прорыва полосы Боллинджера и фильтра волатильности

Обзор стратегии

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

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

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

Условия открытия позиции стратегии основаны на расположении цены закрытия относительно полосы полинга. Если торговое направление установлено на выигрыш ((tradeDirection> = 0), и цена закрытия падает вниз на определенную долю ((lower_breakout_pct), то открытие позиции открывается; если торговое направление установлено на убыток ((tradeDirection< = 0), и цена закрытия прорывается вверх на определенную долю ((upper_breakout_pct), то открытие позиции открывается.

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

В случае, если закрытие позиции с несколькими лидерами касается верхней области*long_win_pct), или закрытие пустой позиции, когда цена касается нижней полосы*short_win_pct), стратегия будет ликвидировать соответствующую позицию, чтобы получить прибыль. Кроме того, если плавающие убытки от хранения позиции превышают заданную максимальную долю вывода ((max_drawdown_percent), стратегия также будет ликвидировать убытки.

Стратегические преимущества

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

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

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

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

Стратегический риск

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

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

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

  4. Стратегия не устанавливает передвижные стопы или следит за стопами после открытия позиции, что может привести к частичному отклонению прибыли.

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

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

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

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

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

Подвести итог

Стратегия Bollinger Bands Breakthrough and Volatility Filtering использует чертежи Bollinger Bands относительно ценового положения и волатильности, чтобы построить двустороннюю торговую стратегию. Уникальность этой стратегии заключается в том, что волатильный фильтр избегает торговли на сильно волатильных рынках, в то же время устанавливая более простые условия стоп-стоп. В целом, стратегия более полно включает в себя логику открытия позиций и контроль риска, но есть еще место для дальнейшей оптимизации в ответ на изменения рынка, применимость параметров и эффективность стоп-убытков.

Исходный код стратегии
/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[Oppen Chow] Super BBS 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value =100, initial_capital=500, commission_type=strategy.commission.percent, commission_value=0.08, pyramiding=2 )

// Input parameters
length = 20
mult = 2
max_drawdown_percent = input(5.5, "Maximum Acceptable Drawdown") / 100
upper_breakout_pct = input(50, "Short Entry Breakout Percentage") / 100
lower_breakout_pct = input(25, "Long Entry Breakout Percentage") / 100
tradeDirection = input(1, title="Trade Direction")
Volatility = input(0.5, title="Volatility") / 100
long_win_pct = input(-0.15, title = "Long Settlement Rate Near Boll Upper Limit")
short_win_pct = input(0.4, title = "Short Settlement Rate Near Boll Lower Limit")

// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
area = upper - lower

// Calculate the rate of change for two consecutive candlesticks
var float change1 = na
var float change2 = na
change1 := change2
change2 := ((close - open) / open) 

// Check for two or more consecutive candlesticks with a change rate greater than 0.5%
var bool highVolatility = false
highVolatility := change2 > Volatility

// Trading logic
var float highestPriceSinceOpen = na
var float lowestPriceSinceOpen = na
var int profitableDrawbackCount = 1


// Entry logic - In the absence of high volatility
if not highVolatility and strategy.position_size == 0
    if (tradeDirection >= 0) and (close < lower - area * lower_breakout_pct)
        strategy.entry("Long", strategy.long)
        highestPriceSinceOpen := close
        profitableDrawbackCount := 0
    if (tradeDirection <= 0) and (close > upper + area * upper_breakout_pct)
        strategy.entry("Short", strategy.short)
        lowestPriceSinceOpen := close
        profitableDrawbackCount := 0


if strategy.position_size > 0 and close > upper - area * long_win_pct
    strategy.close("Long", comment = "Take Profit")
if strategy.position_size < 0 and close < lower + area * short_win_pct
    strategy.close("Short", comment = "Take Profit")

// Stop loss logic - Based on drawdown percentage
if strategy.position_size > 0
    if (strategy.position_avg_price - close)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Long", comment = "Drawdown Stop Loss")
else if strategy.position_size < 0
    if (close - strategy.position_avg_price)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Short", comment = "Drawdown Stop Loss")