Архитектура крипто-сканера для биржи: Open Interest, Funding Rate, EMA и MACD в реальном времени

от автора

На финансовых рынках, и в частности на крипторынке, с каждым годом ручной трейдинг становиться всё труднее, на смену ему приходит алготрейдинг. Современный алгоритмический трейдинг постепенно смещается в сторону анализа производных метрик: открытого интереса, funding rate, структуры ликвидности, кластеров объёмов и поведения участников рынка в деривативах. Простая оценка цены уже не даёт достаточного преимущества. Основное внимание переходит к тому, как именно формируется движение.

В этой статье разберём архитектуру полноценного фьючерсного сканера для биржи BingX, построенного на Python. Система анализирует десятки и сотни торговых инструментов в реальном времени, фильтрует активы по Open Interest и Funding Rate, рассчитывает технические индикаторы EMA и MACD, а затем формирует торговые сигналы на основе синхронизации нескольких независимых факторов.

Речь пойдёт не о полноценной архитектуре рыночного анализатора, пригодного для дальнейшего масштабирования: подключения Telegram-уведомлений, машинного обучения, кластерного анализа, order flow и полностью автоматической торговли через API.

Все файлы загружены на GITHUB. В статье описываю в основном логическую часть и ньюансы. Так что крайне советую к параллельному изучению самого скрипта и кода.


Почему Open Interest и Funding Rate важнее цены

Большинство розничных трейдеров анализируют только свечной график. Однако цена — это лишь финальный результат взаимодействия ликвидности, агрессии участников и накопления позиций.

Гораздо более важной становится информация о том:

  • растёт ли объём открытых позиций;

  • доминируют ли лонги или шорты;

  • происходит ли накопление перед импульсом;

  • поддерживается ли движение капиталом.

Именно поэтому Open Interest и Funding Rate являются критически важными параметрами.

Open Interest показывает суммарный объём открытых контрактов по инструменту. Если OI резко растёт одновременно с движением цены, это означает приток капитала и участие новых позиций. Когда же цена растёт, а OI падает — движение часто оказывается обычным short squeeze или закрытием позиций.

Funding Rate позволяет определить перекос рынка. Если funding становится экстремально положительным, это означает перегрев лонгового направления. Если отрицательным — рынок перегружен шортами.

Комбинация этих параметров позволяет находить инструменты, где действительно начинается движение, а не просто появляется случайная волатильность.

Общая архитектура системы

Ниже представлена логическая схема работы сканера.

Конфигурационный уровень системы

Первый важный компонент — слой конфигурации. В профессиональных торговых системах параметры никогда не должны быть «зашиты» глубоко в код.

В сканере используется централизованный конфигурационный блок:

SCAN_INTERVAL_SECONDS = 60TIMEFRAME = "1h"OI_THRESHOLD = 1_000_000.0FUNDING_RATE_THRESHOLD = 0.0005EMA_FAST = 9EMA_SLOW = 21MACD_FAST = 12MACD_SLOW = 26MACD_SIGNAL = 9

Такой подход позволяет:

  • быстро оптимизировать систему;

  • переключать таймфреймы;

  • тестировать разные фильтры;

  • адаптировать сканер под разные рынки;

  • подключать автоматическую оптимизацию параметров.

На практике именно конфигурационный уровень определяет гибкость торговой инфраструктуры. Но это не её основа — не будем заниматься подгонкой параметров, так как это делает систему актуальной лишь в определённый период. А наша цель больше — создать полноценный рабочий сканер сигналов.


Система накопления Open Interest

Одной из ключевых проблем при работе с OI становится отсутствие исторических данных в удобном виде. Многие биржи не предоставляют длинную историю Open Interest через API либо делают это крайне неудобно.

Поэтому в системе реализован собственный механизм накопления истории OI в памяти.

class OIHistoryTracker:

Компонент выполняет сразу несколько задач:

  • хранение исторических значений OI;

  • очистка устаревших данных;

  • вычисление процентного изменения;

  • контроль временного окна;

  • оценка полноты накопленной истории.

Структура хранения реализована в формате:

{    symbol: [(timestamp, oi_value)]}

Фактически система строит собственную мини-базу временных рядов.

Особенно важно, что механизм автоматически очищает старые записи:

cutoff = now - max_age_seconds * 1.5

Это предотвращает бесконтрольный рост потребления памяти при длительной работе сканера.

Почему анализ OI через проценты лучше абсолютных значений

Абсолютный Open Interest далеко не всегда информативен.

Например:

  • BTC может иметь OI в миллиарды долларов;

  • малокапитализированный альткоин — всего несколько миллионов.

Сравнивать их напрямую бессмысленно. Поэтому более важным параметром становится изменение OI.

Формула вычисления:

OI_{change}=\frac{OI_{current}-OI_{historical}}{OI_{historical}}\times100%

Если Open Interest растёт на 20–30% за короткий промежуток времени, это часто указывает на появление крупного участника рынка и возможную подготовку к импульсу.

Именно поэтому система поддерживает два режима:


Оптимизация API-запросов

При работе с биржами одна из главных проблем — rate limits.

Большинство начинающих разработчиков делают критическую ошибку: отправляют десятки последовательных запросов без предварительной фильтрации. В рассматриваемой архитектуре используется многоуровневая оптимизация.

Сначала выполняется bulk-запрос:

premium_indices = client.get_premium_index()

Этот запрос сразу возвращает:

  • funding rate;

  • mark price;

  • index price.

После этого система фильтрует инструменты по funding rate ещё до запроса Open Interest.

Это крайне важно.

Вместо опроса сотен инструментов система обращается к OI API только для заранее отобранных активов.

Фактически архитектура работает как каскад фильтров:

ALL SYMBOLS    ↓Funding Filter    ↓OI Filter    ↓Technical Analysis    ↓Signal Generation

Такой подход радикально снижает нагрузку на API и позволяет масштабировать систему.

Все функции и код для работы с биржей я беру из моего готового bingX_client, его уже не раз скидывал в своих статьях. Там уже прописаны абсолютно все функции для работы с API. Загрузил его на гитхаб вместе с проектом.


Механизм технического анализа

После прохождения фундаментальных фильтров актив передаётся в блок технического анализа.

Здесь используются:

  • EMA;

  • MACD Histogram;

  • логика подтверждения тренда;

  • поиск пересечений.

Расчёт EMA выполняется через pandas:

ema_fast = df['close'].ewm(span=EMA_FAST).mean()ema_slow = df['close'].ewm(span=EMA_SLOW).mean()

Экспоненциальная скользящая средняя имеет вид:

EMA_t=\alpha\cdot Price_t+(1-\alpha)\cdot EMA_{t-1}

Главное преимущество EMA — повышенная чувствительность к последним данным.

Реализация MACD

MACD используется как фильтр импульса.

Формула:

MACD=EMA_{12}-EMA_{26}

Дополнительно рассчитывается сигнальная линия и гистограмма:

macd_hist = macd_line - macd_signal

Гистограмма позволяет определить усиление импульса и ослабление движения, а также потенциальный разворот.

Почему анализ идёт только по закрытым свечам

Это один из важнейших элементов системы.

Большинство начинающих алгоритмических трейдеров совершают фундаментальную ошибку: анализируют текущую незакрытую свечу.

В результате сигналы исчезают, а стратегия не будет валидной в полном её понимании.

В данной архитектуре используются только закрытые свечи:

val_fast_curr = ema_fast.iloc[-2]

Именно индекс -2 означает последнюю полностью завершённую свечу.

Текущая свеча (-1) игнорируется полностью.

Логика генерации сигнала

Система не использует отдельный индикатор как источник входа.

Сигнал формируется только при согласовании нескольких независимых условий.

Для BUY:

is_buy = (    ema_bullish and    macd_bullish and    (        ema_cross_up or        macd_cross_up    ))

Это означает:

  1. EMA Fast выше EMA Slow;

  2. MACD Histogram выше нуля;

  3. произошло пересечение хотя бы одного индикатора.

Таким образом система избегает торговли против тренда и случайных импульсов.

Обработка лагов пересечения

Интересная особенность реализации — поддержка лаговых пересечений.

Система анализирует:

  • текущую закрытую свечу;

  • предыдущую;

  • позапрошлую.

Это позволяет находить сигналы, которые появились 1 свечу назад, но всё ещё актуальны.

Логика:

ema_cross_up_lagmacd_cross_up_lag

Подобный подход существенно снижает вероятность пропуска движения.

Архитектура бесконечного цикла

В основе сканера лежит непрерывный цикл:

while True:

Однако внутри реализовано полноценное управление временем исполнения.

После завершения анализа система вычисляет фактическое время работы:

elapsed = time.time() - start_timesleep_time = max(1.0, SCAN_INTERVAL_SECONDS - elapsed)

Это гарантирует фиксированный интервал между циклами независимо от нагрузки. Подобная архитектура особенно важна для синхронизации свечей и предсказуемости работы.

Отказоустойчивость

Система содержит несколько уровней защиты:

try:    ...except Exception as e:

Обработка исключений реализована на уровне API запросов, анализа символом и внутри главного цикла, а также при расчёте индикаторов.

Это критически важно для долгоживущих торговых систем. Без обработки ошибок любой временный сбой API способен полностью остановить инфраструктуру.

Как может выглядеть промышленная версия системы

Production-архитектура подобного сканера обычно включает:

┌──────────────┐│ WebSocket API│└──────┬───────┘       │       ▼┌──────────────┐│ Data Router  │└──────┬───────┘       ▼┌──────────────┐│ Redis Queue  │└──────┬───────┘       ▼┌──────────────┐│ Signal Engine│└──────┬───────┘       ▼┌──────────────┐│ Risk Manager │└──────┬───────┘       ▼┌──────────────┐│ Execution API│└──────────────┘

Фактически сканер становится полноценной торговой платформой. Наша же цель — получить интересные для нас токены, торговать которые мы будем уже руками. Этот сканер даёт нам сильное преимущество в выборе монет. А на рынке это самое преимущество крайне важно, ведь даже будучи базовым трейдером выше уже обгоните остальных по доходности.

Итоговые результаты системы

Прогон системы по текущим выглядит так:

📊 Настройки индикаторов: Таймфрейм = 1h, Свечей для расчёта = 150📈 Параметры EMA: Fast = 9, Slow = 21📉 Параметры MACD: Fast = 12, Slow = 26, Signal = 9⚙️ Режим фильтрации: AND💰 Порог ставки финансирования: 0.0500%💎 Порог Open Interest: >= 1,000,000.0 USDT (абсолютное значение)======================================================================[2026-05-26 00:44:57] Запуск нового цикла сканирования...[2026-05-26 00:44:57] Получены рыночные данные для 692 фьючерсных пар.[2026-05-26 00:44:57] Фильтр ставки финансирования (>= 0.0500%) прошли 49 пар.[2026-05-26 00:44:57] Первичную фильтрацию (AND) успешно прошли 11 пар.==================================================[2026-05-26 00:44:57] СИГНАЛ: BUY (LONG) для SUPER-USDT   Цена маркировки: 0.12580   Open Interest: 2,780,026.87 USDT (Абсолютный порог)   Funding Rate: -0.1479% (8h)   EMA(9) > EMA(21): 0.12420 / > / 0.12349   MACD гистограмма: 0.00004 (пересечение MACD вверх)====================================================================================================[2026-05-26 00:44:57] СИГНАЛ: BUY (LONG) для BARD-USDT   Цена маркировки: 0.22090   Open Interest: 5,537,673.57 USDT (Абсолютный порог)   Funding Rate: -0.0532% (8h)   EMA(9) > EMA(21): 0.21823 / > / 0.21812   MACD гистограмма: 0.00016 (пересечение EMA вверх)====================================================================================================[2026-05-26 00:44:57] СИГНАЛ: SELL (SHORT) для BSB-USDT   Цена маркировки: 0.70017   Open Interest: 24,248,318.46 USDT (Абсолютный порог)   Funding Rate: +0.1072% (8h)   EMA(9) > EMA(21): 0.83631 / < / 0.90082   MACD гистограмма: -0.01179 (пересечение MACD вниз)==================================================[2026-05-26 00:44:57] Сканирование завершено за 50.48 сек. Сон 9.52 сек...[2026-05-26 00:45:57] Запуск нового цикла сканирования...[2026-05-26 00:45:57] Получены рыночные данные для 692 фьючерсных пар.[2026-05-26 00:45:57] Фильтр ставки финансирования (>= 0.0500%) прошли 46 пар.

Сейчас актуальные несколько монет на шорт и лонг, с которыми стоит поработать. SUPER, BARD, BSB. Можете проверить их после выхода статьи — проверим результат вместе!

Ранее при помощи этой системы на протяжении двух недель удавалось подбирать немаленькое количество прибыльных сигналов.

Заключение

Современный алгоритмический трейдинг постепенно уходит от примитивного анализа свечных паттернов. На первый план выходят:

  • Open Interest;

  • Funding Rate;

  • поток ликвидности;

  • поведение деривативных рынков;

  • скорость появления капитала.

Рассмотренная архитектура показывает, как можно построить полноценную систему анализа фьючерсного рынка с использованием Python, pandas и API биржи BingX.

Ключевая особенность такого подхода — многослойная фильтрация рынка. Сначала анализируются производные метрики, затем технические подтверждения, и только после этого формируется сигнал.

Именно подобные архитектуры лежат в основе современных высокочастотных и полуавтоматических торговых систем, где важна не только точность сигнала, но и способность обрабатывать рынок в реальном времени с минимальной задержкой.

ссылка на оригинал статьи https://habr.com/ru/articles/1039310/