Стратегия Bollinger Bands Breakout with Volatility Filter - это торговая стратегия, основанная на индикаторе Bollinger Bands. Она использует Bollinger Bands для определения позиции и волатильности цены относительно скользящей средней, таким образом, решая о точках входа и выхода.
В основе стратегии лежит расчет индикатора полос Боллинджера. Полосы Боллинджера состоят из трех линий: средняя линия представляет собой простую скользящую среднюю, а верхняя и нижняя полосы устанавливаются на определенном стандартном отклонении выше и ниже средней линии соответственно.
Условия входа в стратегию основаны на позиции цены закрытия по отношению к полосам Боллинджера. Если направление торговли установлено на длинный (tradeDirection>=0) и цена закрытия прорывается ниже нижней полосы на определенный процент (lower_breakout_pct), открывается длинная позиция; если направление торговли установлено на короткий (tradeDirection<=0) и цена закрытия прорывается выше верхней полосы на определенный процент (upper_breakout_pct), открывается короткая позиция. Параметры процента прорыва позволяют цене слегка прорваться через полосы Боллинджера, прежде чем ввести позицию для подтверждения тренда.
С другой стороны, если скорость изменения двух последовательных свечей превышает установленный порог волатильности (Волатильность), текущая волатильность рынка считается высокой, и стратегия не откроет новых позиций.
Если цена закрытия длинной позиции достигнет верхней полосы (верхней зоны),long_win_pct), или цена закрытия короткой позиции достигает ближайшей нижней полосы (нижняя + область)Кроме того, если нереализованный убыток позиции превышает предопределенный максимальный процент вывода (max_drawdown_percent), стратегия также закрывает позицию для остановки убытков.
Болинджерские полосы - это зрелый и широко используемый технический индикатор, который включает в себя информацию о скользящих средних и волатильности цен.
Стратегия включает в себя как длинную, так и короткую логику входа, что позволяет гибко использовать возможности как на бычьих, так и на медвежьих рынках.
Фильтр волатильности позволяет избежать открытия позиций на чрезвычайно волатильных рынках, в определенной степени снижая риски, связанные с частой торговлей и использованием кредитного плеча.
Стратегия использует механизмы получения прибыли и остановки убытков для активного управления позициями и закрытия их, когда цены возвращаются на ключевые уровни.
По сути, полосы Боллинджера являются отстающим индикатором и имеют определенную задержку в реакции на рынок.
Настройки параметров стратегии могут не быть универсально применимы к различным рыночным условиям. Например, установка порога фильтра волатильности может потребоваться дифференцировать на трендовых и колеблющихся рынках. Фиксированные параметры могут привести к тому, что стратегия не сможет открывать позиции или открывается слишком часто в определенных рыночных условиях.
Хотя существуют меры стоп-лосса, когда на рынке есть пробелы, стратегия может не быть в состоянии выполняться по заданной цене, что приводит к большим потерям.
Стратегия не предусматривает остановки остановки потерь или остановки безубыточности после открытия позиций, что может привести к некоторому снижению прибыли.
В качестве фильтрующих условий для стратегии для улучшения качества и сроков поступления следует рассмотреть возможность введения более технических показателей или суждений о состоянии рынка, таких как ATR, индикаторы тенденций, индикаторы волатильности и т.д.
Для фильтра волатильности попробуйте использовать динамические пороговые значения, которые адаптируются к различным инструментам или временным рамкам для повышения эффективности фильтрации.
С точки зрения стоп-лосса и теч-профита, внедряйте механизмы стоп-стоп или стоп-стоп, позволяющие стратегии удерживать позиции, когда тенденция продолжается, а не закрывать позиции преждевременно.
Дальнейшее оптимизирование управления позициями путем динамической корректировки размера входа на основе силы тренда, волатильности, уровня риска и других показателей для контроля снижения.
Стратегия Bollinger Bands Breakout с фильтром волатильности использует характеристику ценовой позиции и волатильности 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")