Что такое полосы Боллинджера? Когда цены движутся, мы можем рассчитать скользящее среднее (среднее) вокруг них, чтобы лучше понять их положение относительно их среднего значения. Делая это, мы также можем рассчитать, где они находятся статистически. Но сначала нам нужно понять концепцию кривой нормального распределения, которая является сутью статистики и основой статистической теории.

Пример кривой нормального распределения. (Изображение автора)

Приведенная выше кривая показывает количество значений в пределах ряда стандартных отклонений. Например, область, заштрихованная красным цветом, представляет примерно 1,33-кратное стандартное отклонение от среднего значения нуля. Мы знаем, что если данные распределены нормально, то:

https://gitlab.com/gitlab-org/gitlab/-/issues/282834

https://gitlab.com/gitlab-org/gitlab/-/issues/282835

https://gitlab.com/gitlab-org/gitlab/-/issues/282836

https://gitlab.com/gitlab-org/gitlab/-/issues/282837

https://gitlab.com/gitlab-org/gitlab/-/issues/282849

https://gitlab.com/gitlab-org/gitlab/-/issues/282850

https://gitlab.com/gitlab-org/gitlab/-/issues/282851

https://gitlab.com/gitlab-org/gitlab/-/issues/282852

https://gitlab.com/gitlab-org/gitlab/-/issues/282853

https://gitlab.com/gitlab-org/gitlab/-/issues/282868

https://gitlab.com/gitlab-org/gitlab/-/issues/282869

https://gitlab.com/gitlab-org/gitlab/-/issues/282870

https://gitlab.com/gitlab-org/gitlab/-/issues/282871

https://gitlab.com/gitlab-org/gitlab/-/issues/282872

https://gitlab.com/gitlab-org/gitlab/-/issues/282946

https://gitlab.com/gitlab-org/gitlab/-/issues/282947

https://gitlab.com/gitlab-org/gitlab/-/issues/282948

https://gitlab.com/gitlab-org/gitlab/-/issues/282949

https://gitlab.com/gitlab-org/gitlab/-/issues/282950

https://gitlab.com/gitlab-org/gitlab/-/issues/282959

https://gitlab.com/gitlab-org/gitlab/-/issues/282960

https://gitlab.com/gitlab-org/gitlab/-/issues/282961

https://gitlab.com/gitlab-org/gitlab/-/issues/282963

https://gitlab.com/gitlab-org/gitlab/-/issues/282968

https://gitlab.com/gitlab-org/gitlab/-/issues/282969

https://gitlab.com/gitlab-org/gitlab/-/issues/282970

https://gitlab.com/gitlab-org/gitlab/-/issues/282971

https://gitlab.com/gitlab-org/gitlab/-/issues/282972

https://gitlab.com/gitlab-org/gitlab/-/issues/282975

https://gitlab.com/gitlab-org/gitlab/-/issues/282976

https://gitlab.com/gitlab-org/gitlab/-/issues/282977

https://gitlab.com/gitlab-org/gitlab/-/issues/282978

https://gitlab.com/gitlab-org/gitlab/-/issues/282979

https://gitlab.com/gitlab-org/gitlab/-/issues/282981

https://gitlab.com/gitlab-org/gitlab/-/issues/282982

https://gitlab.com/gitlab-org/gitlab/-/issues/282983

https://gitlab.com/gitlab-org/gitlab/-/issues/282984



  • Около 68 % данных находятся в пределах 1 стандартного отклонения от среднего.
  • Около 95 % данных находятся в пределах двух стандартных отклонений от среднего.
  • Около 99 % данных находятся в пределах трех стандартных отклонений от среднего.

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

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

GBPUSD (черный) с 20-периодными полосами Боллинджера. (Изображение автора)

Для расчета двух полос мы используем следующие относительно простые формулы:

Изображение автора.

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

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

Данные EURUSD M5 против 20-периодных полос Боллинджера по умолчанию. (Изображение автора)

Для этого мы можем создать функцию на Python, которая сделает это за нас:

def ma(Data, period, onwhat, where):
    
    for i in range(len(Data)):
            try:
                Data[i, where] = (Data[i - period + 1:i + 1, onwhat].mean())
        
            except IndexError:
                pass
    return Datadef BollingerBands(Data, boll_lookback, standard_distance, onwhat, where_ma, where_vol, where_up, where_down):
       
    # Calculating means
    ma(Data, boll_lookback, onwhat, where_ma)volatility(Data, boll_lookback, onwhat, where_vol)
    
    Data[:, where_up]   =  Data[:, where_ma] + (standard_distance * Data[:, where_vol])
    Data[:, where_down] =  Data[:, where_ma] - (standard_distance * Data[:, where_vol])
        
    return Data

Альтернативные полосы Боллинджера

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

  • Сглаженная скользящая средняя плюс скользящая волатильность ATR.
  • Экспоненциальная скользящая средняя плюс волатильность Pure Pupil.
  • Простая скользящая средняя плюс экспоненциальная скользящая волатильность ATR.

И список продолжается. Давайте попробуем простую идею объединения линейно-взвешенной скользящей средней с барьерами стандартного отклонения. Мы будем называть ее альтернативными полосами Боллинджера.

AUDUSD показывает разницу между полосами Боллинджера по умолчанию и альтернативными полосами Боллинджера. (Изображение автора)

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

Как кодировать различные типы скользящих средних в Python.

Программирование различных типов скользящих средних на Python.

Навстречу datascience.com

Вот напоминание о том, как рассчитать линейно-взвешенное скользящее среднее:

def lwma(Data, period):
    
    weighted = []
    for i in range(len(Data)):
            try:
                total = np.arange(1, period + 1, 1)
                
                matrix = Data[i - period + 1: i + 1, 3:4]
                matrix = np.ndarray.flatten(matrix)
                matrix = total * matrix
                wma = (matrix.sum()) / (total.sum())
                weighted = np.append(weighted, wma)except ValueError:
                pass
            
    return weighted

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

Результаты показали, что для стратегии "Альтернативные полосы Боллинджера" ожидание составило 0,39 доллара США на сделку с коэффициентом прибыли 1,16, тогда как для стратегии "Полосы Боллинджера по умолчанию" ожидание было $0,18 за сделку с коэффициентом прибыли 1,08.

Кривые капитала обеих стратегий. Синим цветом обозначена стратегия «Альтернативные полосы Боллинджера», а оранжевым — обычная стратегия «Полосы Боллинджера». (Изображение автора)

Вывод

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

Дневные значения EURUSD со 100-дневным альтернативным индикатором полос Боллинджера с использованием константы 3x. (Изображение автора)

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

Нормализованный индикатор Боллинджера. Еще один способ торговли в диапазоне. Бэк-тестирование на Python.

Копаем глубже и модифицируем полосы Боллинджера.

kaabar-sofien.medium.com

Фото автора Остин Дистель на Unsplash