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

Автор:Чао Чжан, Дата: 2023-11-07 15:08:36
Тэги:

img

Обзор

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

Не стесняйтесь менять параметры и проверять эту стратегию.

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

Логика стратегии

Эта стратегия использует полосы Боллинджера и пропускную способность для определения входов и выходов.

Боллингерские полосы включают в себя верхнюю полосу, среднюю полосу и нижнюю полосу. Средняя полоса представляет собой простую скользящую среднюю за n периодов, по умолчанию n = 16. Верхняя полоса представляет собой среднюю полосу + k * стандартное отклонение, нижняя полоса представляет собой среднюю полосу - k * стандартное отклонение, по умолчанию k = 3. Когда цена приближается к верхней полосе, это указывает на переоценку или перекупку. Когда цена приближается к нижней полосе, это указывает на переоценку или перепродажу.

Индикатор пропускной способности показывает волатильность цены относительно средней полосы. Он рассчитывается как (верхняя полоса - нижняя полоса) /средняя полоса * 1000. Когда пропускная способность ниже 20, это указывает на низкую волатильность или консолидацию. Когда пропускная способность превышает 50, это представляет собой повышенную волатильность.

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

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

Преимущества этой стратегии включают:

  1. Болинджерские полосы измеряют направление тренда, снижая риски ложных прорывов

  2. Сигнал пропускной способности точно определяет действия в диапазоне, избегая больших потерь от больших колебаний

  3. Бакт-тест показывает почти 80% рентабельность за 1 год, чрезвычайно высокое соотношение риск-вознаграждение

  4. Максимальное привлечение менее 5%, эффективно контролирует риск и поддерживает стабильный рост портфеля

  5. Простая и понятная логика, легкая для понимания и реализации, широко применимая к различным активам

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

Риски этой стратегии включают:

  1. Плохие настройки параметров Боллинджера могут лишить хороших торговых возможностей

  2. Низкая частота торговли на бычьих или медвежьих рынках, снижение рентабельности

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

  4. Стоп-лосс может быть выбран во время экстремальных движений, что приводит к большим потерям.

  5. Высокие затраты на транзакции также снижают фактическую прибыль

Решения:

  1. Оптимизировать параметры и корректировать период Боллинджера на основе рынка

  2. Внедрение дополнительных показателей для борьбы с аномальными рыночными условиями

  3. Собирать достаточные данные и проводить обратные тесты на различных рынках для проверки стабильности

  4. Соответствующее регулирование стоп-лосса для предотвращения больших потерь от экстремальных движений

  5. Выбирать торговые платформы с низкими комиссионными для снижения затрат на транзакции

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

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

  1. Добавить подтверждение объема для предотвращения ложных вырывов

  2. Сочетание с индикаторами тренда для определения направления тренда

  3. Использование машинного обучения для автоматической настройки параметров и адаптации к рынку

  4. Добавить корреляционный фильтр для предотвращения торговли несвязанными активами

  5. Оптимизировать получение прибыли/остановку убытков для получения большего количества прибыли во время восходящего тренда

  6. Введите больше фильтров условий для увеличения показателя победы

  7. Испытать комбинации с несколькими временными рамками для получения выгоды от нескольких циклов

  8. Создать индексированный портфель для расширения риска

  9. Используйте машинное обучение для автоматического создания и проверки новых стратегий

Заключение

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


/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger Bands BAT/USDT 30min", overlay=true )

/// Indicators
///Bollinger Bands
source = close
length = input(16, minval=1)
mult = input(3, step=0.1, minval=0.001, maxval=50)
basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.red)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

//Bollinger bands width
bbw = (upper-lower)/basis*1000
//plot(bbw, color=color.blue)

upper_bbw_input = input(title="BBW Upper Threshold", step=1, minval=0, defval=50)
lower_bbw_input = input(title="BBW Lower Threshold", step=1, minval=0, defval=20)


// Backtesting Period
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

// Take Profit
tp_inp = input(8, title='Take Profit %', step=0.1)/100
take_level = strategy.position_avg_price * (1 + tp_inp)

//Entry Strategy
entry_long = crossover(source, lower) and (bbw < upper_bbw_input) and (bbw > lower_bbw_input)
exit_long = cross(high,upper) or close < lower

if testPeriod()

    strategy.entry(id="LongBB", long=true, comment="LongBB", when=entry_long)
    strategy.exit("Take Profit Long","LongBB",limit=take_level)
    strategy.close(id="LongBB", when=exit_long )



Больше