Разработка системы Market Profile

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка системы Market Profile
Сложный
~5 дней
Часто задаваемые вопросы

Направления блокчейн-разработки

Этапы блокчейн-разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1122
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    859

Разработка системы 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 обновлением текущей сессии.