Разработка индикатора дельты объемов

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка индикатора дельты объемов
Средний
~3-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

Разработка индикатора дельты объемов

Delta объёмов (Volume Delta) — разность между объёмом агрессивных покупок и агрессивных продаж за период. Positive delta — покупатели доминировали. Negative delta — продавцы агрессивнее. Это один из наиболее информативных индикаторов для понимания реального давления на рынке в отличие от просто объёма (который не различает сторону инициатора).

Принцип расчёта

Определение стороны сделки

Каждый трейд на бирже имеет aggressor side — кто был инициатором (пришёл с рыночным ордером):

def determine_trade_side(trade: dict) -> str:
    """
    Binance aggTrade: m=True означает buyer был maker (limit ордер).
    Значит seller был aggressor (пришёл с market sell).
    """
    if trade['m'] is True:
        return 'sell'   # агрессивная продажа
    else:
        return 'buy'    # агрессивная покупка

Расчёт delta за период (свечу)

from decimal import Decimal
from collections import defaultdict

class VolumeDeltaCalculator:
    def calculate_candle_delta(self, trades: list[dict]) -> CandleDelta:
        buy_volume = Decimal(0)
        sell_volume = Decimal(0)

        for trade in trades:
            qty = Decimal(str(trade['q']))
            if determine_trade_side(trade) == 'buy':
                buy_volume += qty
            else:
                sell_volume += qty

        delta = buy_volume - sell_volume
        total = buy_volume + sell_volume

        return CandleDelta(
            buy_volume=buy_volume,
            sell_volume=sell_volume,
            delta=delta,
            total_volume=total,
            delta_percent=float(delta / total * 100) if total > 0 else 0
        )

Типы delta индикаторов

Bar Delta

Delta за отдельную свечу. Отображается как гистограмма под price chart:

def calculate_bar_deltas(candles: list) -> list[BarDelta]:
    result = []
    for candle in candles:
        trades = fetch_trades_for_candle(candle)
        delta_data = calculator.calculate_candle_delta(trades)

        result.append(BarDelta(
            time=candle.open_time,
            delta=float(delta_data.delta),
            delta_percent=delta_data.delta_percent,
            color='green' if delta_data.delta > 0 else 'red'
        ))
    return result

Cumulative Delta (CVD)

Накопленная сумма delta с начала дня или выбранного периода:

def calculate_cvd(bar_deltas: list[BarDelta]) -> list[float]:
    cvd = []
    running = 0
    for bar in bar_deltas:
        running += bar.delta
        cvd.append(running)
    return cvd

CVD divergence — ключевой сигнал: цена растёт (новые highs), а CVD падает (продавцы накапливают) → потенциальная смена тренда.

Session Delta

Delta с начала торговой сессии (08:00 UTC для крипто или открытие NYSE для связанных активов). Показывает накопленный баланс сил за сессию.

Реализация как TradingView индикатор

Pine Script реализация

//@version=5
indicator("Volume Delta", overlay=false, format=format.volume)

// Параметры
show_cvd = input.bool(true, "Show CVD")
show_bar_delta = input.bool(true, "Show Bar Delta")

// Расчёт delta через close и volume
// Точный расчёт требует tick data; приближение через направление свечи:
candle_up = close >= open
delta_approx = candle_up ? volume : -volume

// Bar Delta гистограмма
if show_bar_delta
    hline(0, color=color.gray, linewidth=1)
    barcolor_delta = delta_approx >= 0 ? color.new(color.green, 40) : color.new(color.red, 40)
    plot(delta_approx, style=plot.style_columns, color=barcolor_delta, title="Bar Delta")

// CVD линия
cvd = ta.cum(delta_approx)
if show_cvd
    plot(cvd, color=color.yellow, linewidth=2, title="CVD")

Важное замечание: Pine Script не имеет доступа к tick data, поэтому приближение через направление свечи неточно. Для точного delta нужен кастомный datasource через TradingView Broker API или собственный индикатор.

Точный delta через собственный datasource

// Custom data series для Lightweight Charts
class DeltaDataProvider {
  private tradesCache: Map<string, CandleDelta> = new Map();

  async getDeltaForCandle(
    symbol: string,
    openTime: number,
    closeTime: number
  ): Promise<CandleDelta> {
    const cacheKey = `${symbol}_${openTime}`;
    if (this.tradesCache.has(cacheKey)) {
      return this.tradesCache.get(cacheKey)!;
    }

    const trades = await this.fetchTrades(symbol, openTime, closeTime);
    const delta = this.calculate(trades);
    this.tradesCache.set(cacheKey, delta);
    return delta;
  }

  private calculate(trades: Trade[]): CandleDelta {
    let buyVol = 0, sellVol = 0;
    for (const t of trades) {
      if (t.isBuyerMaker) {
        sellVol += t.quantity;  // seller был агрессором
      } else {
        buyVol += t.quantity;
      }
    }
    return { buyVol, sellVol, delta: buyVol - sellVol };
  }
}

Интерпретация сигналов

Ситуация Цена Delta Интерпретация
Бычье подтверждение Растёт Positive Покупки поддерживают рост
Медвежье подтверждение Падает Negative Продажи давят вниз
Бычья дивергенция Падает Positive Скрытые покупки — возможен разворот
Медвежья дивергенция Растёт Negative Скрытые продажи — слабость тренда
Absorption Не движется Extreme Крупный участник поглощает ордера

Delta — не standalone индикатор, а инструмент подтверждения. В связке с уровнями поддержки/сопротивления и объёмным профилем даёт значительно более точные сигналы.