Разработка системы анализа профиля объёма (Volume Profile)
Мы разрабатываем систему анализа профиля объёма для криптовалютных бирж и торговых платформ. Наши инженеры имеют 7-летний опыт в создании высоконагруженных торговых систем и выполнили более 30 успешных внедрений для проп-трейдинговых фирм и бирж. Компания специализируется на криптоинструментах более 5 лет, реализовав 50+ проектов.
В отличие от стандартного индикатора объёма, который показывает активность по свечам, профиль объёма (VP) распределяет объём по ценовым уровням. Это позволяет трейдерам видеть, где сосредоточена ликвидность, и строить торговые стратегии на основе реальных зон спроса и предложения. Для одного из клиентов мы внедрили Composite VP с расчётом за 30 дней на 1-минутных данных, что сократило ложные сигналы на 25% и повысило точность входа на 35%.
Как рассчитывается Volume Profile?
POC (Point of Control) — ценовой уровень с максимальным объёмом за выбранный период. Цена имеет тенденцию возвращаться к POC, особенно в флэте. Value Area (VA) — диапазон цен, в котором было совершено 70% всего торгового объёма.
Стандартное правило 70% пришло из Market Profile (TPO метод) Питера Стейдлмайера.
VAH — верхняя граница VA, VAL — нижняя.
HVN (High Volume Node) — ценовые зоны с высоким объёмом. Служат поддержкой/сопротивлением: цена проводит в них много времени. LVN (Low Volume Node) — зоны с низким объёмом. Цена проходит их быстро — это «воздушные карманы», где движение может ускоряться.
Расчёт Volume Profile: три шага
- Определяем ценовой диапазон за период и разбиваем его на N равных бинов (обычно 200).
- Распределяем объём каждой свечи по бинам пропорционально времени или диапазону.
- Находим бин с максимальным объёмом (POC) и расширяем от него в обе стороны до накопления 70% общего объёма (Value Area).
def calculate_volume_profile(df, n_bins=200): price_min = df['low'].min() price_max = df['high'].max() bin_size = (price_max - price_min) / n_bins profile = np.zeros(n_bins) for _, row in df.iterrows(): candle_low_bin = int((row['low'] - price_min) / bin_size) candle_high_bin = int((row['high'] - price_min) / bin_size) bins_covered = candle_high_bin - candle_low_bin + 1 vol_per_bin = row['volume'] / bins_covered profile[candle_low_bin:candle_high_bin+1] += vol_per_bin return profile, price_min, bin_size def find_poc_and_va(profile, target_pct=0.7): poc_idx = np.argmax(profile) total_volume = np.sum(profile) target_volume = total_volume * target_pct va_volume = profile[poc_idx] upper, lower = poc_idx, poc_idx while va_volume < target_volume: expand_up = profile[upper + 1] if upper + 1 < len(profile) else 0 expand_down = profile[lower - 1] if lower > 0 else 0 if expand_up >= expand_down: upper += 1 va_volume += expand_up else: lower -= 1 va_volume += expand_down return poc_idx, lower, upper Почему VP эффективнее обычного объёма?
Обычный объём показывает, сколько торговалось за временной интервал, но не говорит, по какой цене. VP ликвидирует этот пробел. По сравнению с Market Profile, VP проще в визуализации и расчёте, что делает его более доступным для массового трейдера. В наших проектах профиль объёма показал прирост точности определения уровней на 30–40% по сравнению с классическими индикаторами. При обработке данных со 100+ биржевых пар и 10 млн сделок в день наш стек (Python/NumPy, ClickHouse, Redis) обеспечивает лаг менее 10 мс.
Типы Volume Profile
| Тип | Период | Применение |
|---|---|---|
| Session VP | Одна сессия (24h для крипты) | Внутридневная торговля |
| Composite VP | Несколько дней/недель | Среднесрочный анализ |
| Anchored VP | От события (ATH, хард-форк) | Анализ реакции рынка |
| Visible Range VP | Видимый диапазон графика | Динамический анализ |
| Fixed Range | Пользовательский интервал | Ручная настройка |
Торговые применения
VA Rule: цена, входящая в VA снизу, стремится к POC и VAH. Пробой VA с объёмом подтверждает тренд. POC как магнит: в боковике цена постоянно возвращается к POC. LVN как скоростные зоны: вход в LVN по тренду обеспечивает быстрое движение.
Архитектура системы
- Данные: полные тиковые данные или агрегированные OHLCV. Биржи: Binance, Coinbase Advanced Trade, Kraken. Хранение — ClickHouse.
- Расчёт: Python/NumPy, Composite VP за 30 дней занимает 2–5 секунд.
- Визуализация: горизонтальная гистограмма (React + D3.js) или индикатор TradingView (Pine Script v5).
- Realtime: обновление по каждой сделке, кэш Redis.
Сравнение источников данных
| Тип данных | Скорость расчёта | Точность профиля | Нагрузка на API |
|---|---|---|---|
| Тиковые | Медленно (секунды на день) | Высокая | Высокая |
| OHLCV 1мин | Быстро (миллисекунды) | Средняя | Низкая |
| OHLCV 5мин | Очень быстро | Низкая | Минимальная |
Что входит в работу
- Архитектура системы данных (тики, агрегация) и модуль расчёта VP
- Готовые индикаторы для TradingView (Pine Script)
- Веб-дашборд с графиками (React, D3.js)
- REST и WebSocket API для интеграции с существующей платформой
- Документация по развёртыванию и использованию
- Обучение команды трейдеров и разработчиков
- Поддержка и доработки в течение 3 месяцев
Ориентировочные сроки и стоимость
- Базовый VP (Session + Composite): от 2 недель, стоимость от $8,000
- Полный набор (все типы + realtime + дашборд): от 4 до 6 недель, стоимость до $25,000
Экономия на разработке по сравнению с наймом штатной команды составляет до 30%. Свяжитесь с нами, чтобы обсудить ваш проект и получить консультацию по интеграции Volume Profile. Закажите демонстрацию системы на ваших данных — мы покажем, как VP повышает точность анализа.







