Разработка системы Market Profile
Market Profile — методология анализа рынка, разработанная Питером Стейдлмайером в 1980-х для Chicago Board of Trade. В отличие от традиционных свечных графиков, Market Profile отображает распределение времени по ценовым уровням, формируя «профиль» торговой активности.
Концепция TPO (Time Price Opportunity)
Основа Market Profile — TPO-буква. Каждые 30 минут торговой сессии получают свою букву алфавита (A, B, C... до Z и дальше). На каждом ценовом уровне, где торговалась цена в данный период, ставится соответствующая буква. Колонка TPO-букв на каждом уровне формирует профиль.
Что это показывает: чем больше TPO-букв на ценовом уровне, тем дольше рынок торговался там. Уровни с максимальным количеством TPO — зоны «принятия стоимости», рынок считал эти цены справедливыми.
Ключевые структуры Market Profile
POC (Point of Control) — ценовой уровень с наибольшим количеством TPO-периодов. Аналогично Volume Profile POC, но на основе времени, а не объёма.
Value Area — диапазон, охватывающий 70% TPO-активности. Граница VA (VAH/VAL) — ключевые уровни.
Initial Balance (IB) — диапазон первых двух TPO-периодов (первый час торгов). Его ширина определяет ожидаемую волатильность дня: широкий IB → Range Day, узкий IB → возможен Trend Day.
TPO Count — общее количество TPO-букв в профиле. Показывает торговую активность дня.
Типы торговых дней
Классификация по форме профиля:
| Тип дня | Форма профиля | Торговая логика |
|---|---|---|
| Normal Day | Нормальное распределение (колокол) | Торговля внутри VA |
| Trend Day | Удлинённый профиль, нет явного POC | Следование за трендом |
| Double Distribution | Два отдельных POC | Смена режима, осторожность |
| Normal Variation | Широкий IB + тест диапазона | Торговля расширения |
| Neutral Day | IB посредине, расширение обоих направлений | Неопределённость |
Market Profile в контексте нескольких дней
Composite Profile — многодневный профиль, показывающий как накапливается структура за неделю/месяц. POC нескольких дней образуют «institutional price levels».
Naked POC — POC предыдущего дня, который не был протестирован в последующие дни. Рынок стремится вернуться к ненакрытым POC — это торговые цели.
VA Reference:
- Цена открывается внутри VA → 80% вероятность оставаться в VA
- Цена открывается за пределами VA и не может войти → тренд продолжается
- Цена открывается за VA и входит обратно → возврат к POC/противоположной VA границе
Алгоритмическая реализация
Входные данные: минутные OHLCV данные или tick-данные с агрегацией по 30-минутным периодам.
def build_market_profile(df_1m, session_start, session_end, tick_size=10):
letters = list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')
profile = {} # price -> set of letters
session = df_1m[(df_1m.index >= session_start) &
(df_1m.index < session_end)]
for period_idx, (period_start, group) in enumerate(
session.resample('30T')):
if period_idx >= len(letters):
break
letter = letters[period_idx]
period_low = group['low'].min()
period_high = group['high'].max()
# Квантизация по tick_size
low_tick = int(period_low / tick_size) * tick_size
high_tick = int(period_high / tick_size) * tick_size
for price in range(low_tick, high_tick + tick_size, tick_size):
profile.setdefault(price, set()).add(letter)
return profile
Initial Balance расчёт:
ib_high = max(session.resample('1H').first().iloc[0]['high'], ...)
ib_low = ... # первый час торгов
ib_range = ib_high - ib_low
Интеграция с современными инструментами
Market Profile традиционно используется для фьючерсных рынков с чёткими торговыми сессиями. Для крипторынка, работающего 24/7, сессии искусственно делятся по UTC-суткам или используются ключевые временные зоны (Азия, Европа, США).
Hybrid подход: комбинирование TPO Market Profile с Volume Profile для получения полной картины — время + объём на каждом уровне.
Технический стек
Backend: Python для расчёта TPO профилей, FastAPI для REST/WebSocket API, ClickHouse для хранения минутных данных и агрегированных профилей.
Хранение профилей: каждый дневной профиль сохраняется как JSON с TPO-буквами на каждом ценовом уровне. Для 30-дневного composite profile — агрегация на лету.
Визуализация: кастомный canvas-рендерер на React. TPO-буквы отображаются как цветные прямоугольники на ценовой оси. POC выделяется горизонтальной линией. VA — прямоугольник.
TradingView интеграция: Market Profile как кастомный indicator через Pine Script v5 или через Custom Charts API для профессиональных решений.
Разрабатываем полноценную систему Market Profile с дневными/недельными/composite профилями, Naked POC трекером, типизацией торговых дней и realtime обновлением текущей сессии.







