В любом бесплатном терминале нарисуют дивергенцию. Но кто объяснит, что она значит и стоит ли входить?

При выборе инструментов для анализа Order Flow быстро обнаруживается, что профессиональные терминалы (ATAS, VolFix, Tiger) стоят как хороший VPS, а в бесплатных версиях или задержка, или нет истории — только текущая свеча. Этого недостаточно для нормального анализа.

Ссылка на описание программы: Cumulative Volume Delta (CVD) Analyzer

Каждый, кто пробовал Order Flow, упирался в одну и ту же проблему: как именно считаются индикаторы? Что там вообще внутри? И если график вдруг начал показывать странные данные, непонятно, где искать причину — на уровне приёма данных, расчёта дельты или отрисовки.

Я немного изменил подход. Инструмент запрашивает готовые свечи с Binance через REST API и считает CVD (Cumulative Volume Delta) прямо в браузере. Никаких посредников, никаких скрытых преобразоваций. Данные обновляются при каждом запросе — вы всегда видите актуальную картину.

Расскажу, как всё работает: от получения свечей до готового графика с подсказками.

Почему не React и не сборщики

Рассматривался вариант с использованием современных фреймворков (Vite, React, Redux Toolkit), однако от него решено было отказаться. Основные причины: требование к мгновенному запуску без установки дополнительного ПО — инструмент должен открываться из локальной папки без подготовки окружения.

В итоге сделал просто HTML-файлы. Открываешь index.html — и погнали. Никаких npm install, никаких ошибок сборки.

Главная страница
Главная страница

Структура элементарная:

  • index.html — выбор пары и таймфрейма.

  • Cumulative Volume Delta (CVD).html — главный мозг. Там загружаются свечи с Binance, считается дельта и строятся индикаторы.

  • CVD charts.html — отдельный файл для детальной визуализации. Вынес его, чтобы отрисовка не мешала расчётам.

  • deepseek_analysis_CVD.html — болталка с ИИ, чтобы иногда подсвечивать странные моменты на графике.

Между файлами общаюсь через localStorage: основной модуль сохраняет результаты расчёта, а модуль визуализации подхватывает их при открытии. Костыльно? Да. Но для локальной программы, где нет бэкенда, это работает надёжнее любых стейт-менеджеров. Всё, что нужно для анализа, лежит прямо в браузере.

Статистика кирптовалюты
Статистика кирптовалюты

Главная боль: как определить, кто покупал, а кто продавал?

Биржа в свечном API не пишет «здесь пришёл покупатель». Она присылает готовые бары: время, цену открытия, максимум, минимум, закрытие и объём. И в каждом баре есть отдельное поле — объём покупок по рыночным ордерам (taker buy volume).

Направление я определяю просто: из общего объёма вычитаю объём покупок — получаю объём продаж. Разница между ними — это дельта для свечи. Такой подход используют все, кто не хочет платить за полный поток тиков.

На практике с этим подходом есть нюанс: если рынок замер в узком диапазоне и объёмы малы, дельта может быть шумной. Но для моих часовых свечей погрешность терпимая, а альтернатива — покупать дорогой поток данных с метками сторон, чего я и хотел избежать.

Считаем дельту и накопление

Вот основная логика. Без лишней красоты, просто то, что работает при загрузке свечей:

function computeIndicators(candles) {
  const delta = [];
  const cvd = [];
  let acc = 0;

  for (let i = 0; i < candles.length; i++) {
    const buyVol = candles.buyVol[i] || 0;
    const totalVol = candles.volume[i] || 0;
    const sellVol = totalVol - buyVol;
    const currentDelta = buyVol - sellVol;

    acc += currentDelta;
    delta.push(currentDelta);
    cvd.push(acc);
  }

  return { delta, cvd };
}

currentDelta — это разница между объёмом покупок и продаж внутри свечи. CVD накапливается с начала сессии и обнуляется в полночь по UTC, чтобы синхронизироваться с биржевым днём.

Таблица свечного анализа
Таблица свечного анализа

Сглаживание, чтобы глаза не ломались

Сначала я выводил сырую дельту. Это было просто ужасно: один крупный маркет-ордер на 100 BTC рисовал красный столб на весь экран, и весь график превращался в иголку.

Я добавил простое экспоненциальное сглаживание (EMA с альфой 0.2) исключительно для отображения гистограммы. Сам CVD при этом считается строго по сырым данным без сглаживания, чтобы не терять накопленный объём.

const alpha = 0.2;
smoothedDelta = previousSmoothed * (1 - alpha) + currentCandleDelta * alpha;

На графике теперь видны локальные всплески, но без «палок в потолок».

Табличный анализ CVD дивергенций
Табличный анализ CVD дивергенций
График с сигналом дивергенции
График с сигналом дивергенции

Зачем я прикрутил DeepSeek (и не жалею)

Идея родилась спонтанно. Вместе с графиком я решил выводить короткий текстовый комментарий к последним 15 свечам. Модуль анализирует последние 15 свечей и формирует JSON с изменениями цены, CVD и экстремумами дельты, после чего отправляет запрос в DeepSeek API. Модель возвращает краткий комментарий: например, фиксирует расхождение между движением цены и накопленным объёмом (классическая дивергенция), что помогает замечать странности без круглосуточного наблюдения.

Модуль собирает JSON с изменениями цены, CVD и максимумами дельты, шлёт в DeepSeek API, и модель возвращает 1–2 предложения.

Запрос к DeepSeek AI
Запрос к DeepSeek AI

Звучит как перебор? Возможно. Но на практике это помогает не пялиться в график 8 часов подряд — модель обращает внимание на аномалии. При этом я чётко написал в интерфейсе, что это не торговый сигнал, а вспомогательный комментарий.

Мини-ликбез для себя и коллег

Я добавил отдельную вкладку-шпаргалку (_Lesson.html), где расписал, что вообще означают эти разноцветные столбики на моём графике:

  • Дивергенция: цена обновила максимум, а CVD нет — жди коррекции.

  • Поглощение: дельта зелёная, а цена стоит на месте — значит, лимитники держат уровень.

  • Исчерпание: объёмы падают на сильном движении — возможно, это конец импульса.

Учебное пособие: Cumulative Volume Delta (CVD)
Учебное пособие: Cumulative Volume Delta (CVD)

Эта теория не новая, но когда она лежит прямо рядом с графиком и анимирована (отдельный файл с анимацией), новичкам проще вкатиться.

Что не так с моим решением

Это не замена ATAS:

  • Я не строю полноценный кластерный профиль (там объём по ценам), потому что не хочу тащить весь стакан на клиент.

  • Сброс CVD в ноль каждый день режет историю, и межсессионный анализ я не веду.

  • localStorage — не самый надёжный способ хранения при больших объёмах данных, но для этих задач хватает.

Но меня это устраивает. Инструмент получился лёгкий, и главное — я знаю каждый байт в его расчётах.
Видео опрограмме на Ютуб:

Комментарии (6)


  1. house2008
    18.06.2026 06:37

    Такое написать с ИИ не сложно, как на этом заработать ? Покажите PnL ваш или вы не торгуете ?


    1. ura-ch Автор
      18.06.2026 06:37

      Напишите мне такое несложное. А потом поговорим про PnL.


      1. house2008
        18.06.2026 06:37

        А что там писать, вы используете /fapi/v1/klines, там нет ничего сложного, с ИИ и школьник сделает. Думаю таких индикаторов на Trading View тысячи и они бесплатные.


        1. ura-ch Автор
          18.06.2026 06:37

          Давайте сделаем и покажем, или только дискуссия в комментариях?


          1. house2008
            18.06.2026 06:37

            Я уже писал такое, мне не интересно, слишком просто, рабочую стратегию на этих данных не простроишь, я бы добавил /fapi/v1/aggTrades и /fapi/v1/depth и уже поинтересней должна заиграть информация.


            1. ura-ch Автор
              18.06.2026 06:37

              Тогда в чём проблема? Если это так просто и вы школьник, тогда покажите, как вы с помощью aggTrades и depth построили рабочую стратегию. Я не против учиться у тех, кто действительно сделал лучше по цене и качеству! А пока вы только сотрясаете воздух.