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