Торговая стратегия Bollinger Bands Breakout Reentry

Автор:Чао Чжан, Дата: 2024-03-08 14:08:53
Тэги:

img

Обзор

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

Принципы стратегии

  1. Вычислите средние, верхние и нижние полосы полос Боллинджера. Средняя полоса - скользящая средняя, а верхние и нижние полосы - средняя полоса плюс или минус определенное количество стандартных отклонений.
  2. Определить, выходит ли цена из верхней или нижней полосы Боллинджера. Если цена закрытия превышает верхнюю полосу, она считается взлетом; если цена закрытия падает ниже нижней полосы, она считается взлетом вниз.
  3. Если произойдет взрыв вверх, запишите самую высокую цену этой свечи как пик. Если произойдет взрыв вниз, запишите самую низкую цену этой свечи как пик. Пик используется для определения, вошла ли цена позже.
  4. После того, как произойдет прорыв, ждите, пока цена снова войдет в полосы Боллинджера. Если цена закрытия находится между верхней и нижней полосами в это время, цена считается вошедшей.
  5. Когда цена вновь входит, если предыдущая свеча была восходящим прорывом (break_up[1] и внутренний), перейдите на длинный; если предыдущая свеча была нисходящим прорывом (break_down[1] и внутренний), перейдите на короткий.
  6. Управление позицией: если в длинной позиции цена закрытия пересекает средний диапазон, закрыть длинную позицию; если в короткой позиции цена закрытия пересекает средний диапазон, закрыть короткую позицию.

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

  1. Боллингерские полосы обладают сильной адаптивностью и могут динамически корректироваться в соответствии с колебаниями цен, что полезно для улавливания тенденций и волатильности.
  2. По сравнению с простой стратегией прорыва Bollinger Band, добавление условия повторного входа позволяет избежать преследования максимумов и продажи минимумов в определенной степени и улучшить качество входа.
  3. Условие выхода использует среднюю полосу в качестве отсчета, которая проста и проста в использовании и может относительно хорошо защищать прибыль.
  4. Параметры полос Боллинджера, такие как длина и множитель отклонений, могут быть настроены на индивидуальность, обеспечивая высокую гибкость.

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

  1. Неправильный выбор параметров полосы Боллинджера может привести к преждевременным или поздним входам, влияющим на эффективность стратегии.
  2. Когда цена колеблется вблизи полос Боллинджера, могут возникать частые открытия и закрытия позиций, что приводит к увеличению затрат на транзакции.
  3. Если тренд очень сильный и цена не возвращается в полосы Боллинджера в течение длительного времени, трендовые прибыли могут быть упущены.
  4. Использование индикатора полосы Боллинджера в одиночку может быть неэффективным для некоторых инструментов или рыночных условий, и его может потребоваться использовать совместно с другими сигналами.

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

  1. Например, прорыв может быть более надежным, если цена находится выше полос Боллинджера в течение определенного периода времени, или использовать индикаторы определения тренда, такие как угол MA и ADX для поддержки.
  2. Для колеблющихся рынков могут быть добавлены лимитные ордера и таймеры, чтобы избежать слепых записей.
  3. Для выходов ATR или скользящие средние могут быть дополнительно объединены для управления временем выхода.
  4. Проводить оптимизацию параметров и характеристический анализ для различных базовых активов и временных рамок для выбора подходящих целей и временных рамок торговли.
  5. Подумайте о добавлении управления позициями, например, увеличение размера позиции при сокращении волатильности и уменьшение размера позиции при увеличении волатильности.

Резюме

Bollinger Bands Breakout Reentry Trading Strategy - это простая и практичная количественная торговая стратегия. Она использует реакцию цен на экстремальные ситуации и конструирует условия входа и выхода через инструмент Bollinger Bands, который может до некоторой степени улавливать начало и конечные точки тренда и контролировать частую торговлю. В то же время эта стратегия также имеет такие проблемы, как выбор параметров, плохая производительность на колеблющихся рынках и недостаточное улавливание тренда.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-27 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="BB", title="Bollinger Bands", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(1.7, minval=0.001, maxval=50, title="StdDev")

ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

break_up = close > upper
break_down = close < lower
inside = close > lower and close < upper

sell_condition = break_up[1] and inside
buy_condition = break_down[1] and inside

// Conditions to close trades
close_sell_condition = close > basis
close_buy_condition = close < basis

trade_condition = sell_condition or buy_condition

// Tracking the high of the breakout candle
var float peak = na

if (not trade_condition)
    peak := close
if (break_up and peak < high)
    peak := high
if (break_down and peak > low)
    peak := low

// Entering positions
if (buy_condition)
    strategy.entry("Buy", strategy.long)
if (sell_condition)
    strategy.entry("Sell", strategy.short)

// Exiting positions when close crosses the basis
if (strategy.position_size > 0 and close_sell_condition) // If in a long position and close crosses above basis
    strategy.close("Buy")
if (strategy.position_size < 0 and close_buy_condition) // If in a short position and close crosses below basis
    strategy.close("Sell")

Больше