BMP (Balance of Market Power) — Баланс рыночной силы

Balance-of-Market-Power-BMP
Баланс рыночной силы (BMP) — это технический индикатор, призванный определить соотношение сил между покупателями и продавцами на рынке в конкретный момент времени или за указанный период. Разработан Игорем Лившиным, представлен в 2001 году в журнале Technical Analysis of Stocks & Commodities. Индикатор оценивает, какая сторона доминирует — быки (покупатели) или медведи (продавцы) — и может использоваться для подтверждения тренда, выявления возможных разворотов и оценки силы ценового движения. BMP часто применяется в торговых стратегиях как вспомогательный осциллятор: положительные значения указывают на преимущество покупателей, отрицательные — на преимущество продавцов. Индикатор может строиться как в абсолютных единицах, так и в нормализованном виде (например, в процентах или в диапазоне [-1, +1] или [0,100]).

Индикатор BMP — Баланс рыночной силы относится к категории *осцилляторов* (momentum/strength oscillators) и индикаторов рыночного давления/баланса (market pressure / market sentiment indicators).

Как он используется в торговле?
▪ Определите силу ценовых тенденций, анализируя баланс между давлением покупки и продажи.
▪ Сигнальный потенциал меняется на противоположный тренд, когда происходят значительные изменения значений BMP.
▪ Подтвердите существующие тенденции, согласовав движения индикатора баланса мощности с направлением цен.


Формула расчёта индикатора Balance of Market Power

Существует несколько вариантов построения BMP. Один из распространённых концептуальных подходов — сравнение «силы» быков и медведей через компоненты бара (свечи): диапазон вверх (up movement), диапазон вниз (down movement), объём и/или разницу между закрытием и открытием. Ниже приведены несколько реализаций — от простых до более сложных.

Вариант A — простая разница вверх/вниз (без учёта объёма)
▪ Для каждого бара i вычисляем:
up_i = max(0, close_i — open_i) — «вклад» быков (положительная разница)
down_i = max(0, open_i — close_i) — «вклад» медведей (положительная разница)
▪ За N периодов:
Bulls = sum_{k=0..N-1} up_{i-k}
Bears = sum_{k=0..N-1} down_{i-k}
BMP (абсолютный) = Bulls — Bears
▪ Нормализованный вариант (чтобы получить в диапазоне [-1, +1] или [0,100]):
BMP_norm = (Bulls — Bears) / (Bulls + Bears) → диапазон (-1, +1), при Bulls+Bears>0
— Или в процентах: BMP_pct = 100 * (Bulls — Bears) / (Bulls + Bears)

Пояснение:
— BMP_norm > 0 → преимущество покупателей;
— BMP_norm < 0 → преимущество продавцов; - BMP_norm = 0 → равновесие. Вариант B — с учётом размера баров (range-weighted)
▪ Вместо разницы close-open можно использовать максимальный «вклад» хода цены:
up_i = max(0, high_i — open_i) или max(0, close_i — low_i) — выбирают по смыслу
down_i = max(0, open_i — low_i) или max(0, high_i — close_i)
▪ Дальше аналогично суммируют и нормализуют.

Вариант C — с учётом объёма (volume-weighted BMP)
▪ Учитывают объём V_i, чтобы сильные движения при больших объёмах давали больший вклад:
up_i = V_i * max(0, close_i — open_i)
down_i = V_i * max(0, open_i — close_i)
▪ Далее:
Bulls = sum up_i (за N периодов)
Bears = sum down_i (за N периодов)
BMP_norm = (Bulls — Bears) / (Bulls + Bears)

Вариант D — «скользящая» версия (с EMA/SMA)
▪ Вместо простых сумм используют скользящие средние (SMA или EMA) от up и down:
Bulls = MA_N(up)
Bears = MA_N(down)
BMP = (Bulls — Bears) / (Bulls + Bears)

Вариант E
▪ Вычисление BMP для каждой отдельной свечи:
Сырой BMP = ((Цена закрытия — Цена открытия) / (Максимум — Минимум)) * Объем
В случае, если (Максимум — Минимум) равен нулю, сырой BMP принимается равным нулю.

▪Сглаживание BMP с помощью простого скользящего среднего (SMA):
BMP = SMA(Сырой BMP, Length)
где:
— Цена закрытия — цена закрытия текущей свечи.
— Цена открытия — цена открытия текущей свечи.
— Максимум — максимальная цена текущей свечи.
— Минимум — минимальная цена текущей свечи.
— Объем — объем торгов за период текущей свечи.
— Length — выбранный период сглаживания.

Пример (псевдокод):

for each bar i:
  up[i]   = max(0, close[i] - open[i])
  down[i] = max(0, open[i] - close[i])

Bulls = sum_{k=0..N-1} up[i-k]
Bears = sum_{k=0..N-1} down[i-k]

if (Bulls + Bears) > 0:
  BMP_norm = (Bulls - Bears) / (Bulls + Bears)   // диапазон (-1, +1)
else:
  BMP_norm = 0

Замечания:
— Выбор N (периода) влияет на чувствительность: малый N — более шумный и быстрый индикатор; большой N — сглаженный, медленнее реагирующий.
— Нормализация важна для сравнения значений между разными инструментами и таймфреймами.
— Учет объёма делает индикатор ближе к реальной «рыночной силе», поскольку большие объёмы усиливают сигналы.


Торговля с индикатором BMP (Balance of Market Power)

Balance-of-Market-Power-BMP-пример
▪ Положительные значения BMP указывают на доминирование покупателей (быков) на рынке.
▪ Отрицательные значения BMP указывают на доминирование продавцов (медведей) на рынке.
▪ Пересечение нулевой линии может рассматриваться как сигнал смены тренда.
▪ Экстремальные значения (выше или ниже определенных уровней) могут указывать на перекупленность или перепроданность рынка.
▪ Дивергенции между BMP и ценой могут сигнализировать о потенциальном развороте тренда.