惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
T
ThreatConnect
SecWiki News
SecWiki News
F
Future of Privacy Forum
AWS News Blog
AWS News Blog
C
Cisco Blogs
A
Arctic Wolf
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Scott Helme
Scott Helme
V
V2EX
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
K
Kaspersky official blog
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Privacy International News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News | PayPal Newsroom
Schneier on Security
Schneier on Security
NISL@THU
NISL@THU
Microsoft Azure Blog
Microsoft Azure Blog
量子位
The Hacker News
The Hacker News
Stack Overflow Blog
Stack Overflow Blog
Security Latest
Security Latest
M
Microsoft Research Blog - Microsoft Research
Google Online Security Blog
Google Online Security Blog
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
InfoQ
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
The Cloudflare Blog
Microsoft Security Blog
Microsoft Security Blog
Martin Fowler
Martin Fowler
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Troy Hunt's Blog
F
Fox-IT International blog
S
Security @ Cisco Blogs
博客园 - 司徒正美
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Comments on: Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LINUX DO - 最新话题
GbyAI
GbyAI
Project Zero
Project Zero
腾讯CDC
T
Tailwind CSS Blog

Все публикации подряд на Хабре

@tanstack/vue-table: почему я почти отказался от этого… WHERE превращает ваш LEFT JOIN в INNER JOIN. И никто вам об этом не скажет Гравитация не существует. Вы задали 454 вопроса о времени. Вот ответы с уравнениями Эйнштейна Конец бесплатного кремния: как Google AI Studio превратилась из рая для инженеров в симулятор смены аккаунтов Свой AI-агент из почты, systemd и LLM MemForge2: загрузочная флешка, которая за минуту говорит — какую планку памяти менять Лицензии важны. Разбор ошибок авторов и пользователей программ От RAG-прототипа к агенту в продакшн: путь по метрикам, а не по моде Serial Terminal: кастомный веб-терминал для последовательного порта на Web Serial API Китайский стартап GigaAI обещает робота-домработника за 1 млн рублей уже в 2027 году — правда или PR? Open-source VPN клиент Tunguska Роман за 6 недель без идеи на старте: миф или реальность? ИИ построит ваш план действий за 10 секунд Security Week 2622: эффективность Claude Mythos по версии Cloudflare Reactive Forms vs Signal Forms: Эволюция сложных форм в Angular TorFlash — приложение для Linux: поиск торрентов, скачивание и копирование на флешку в одно нажатие Как я решил проблему русской диктовки для ИИ Оверинжиниринг, потопивший немецкую подлодку или некоторые «баги» не чинятся десятилетиями Как ставить цели и не забывать о них: пошаговая система с примерами в таск-менеджере Как настроить observability в Spring Boot 3 HackTheBox. Прохождение Mini Pro Lab Puppet Обзор серверного ускорителя NVIDIA Tesla V100 16 Gb в корпусе от RTX 4090: Часть 3 — Запуск локальных моделей ИИ Редактирование текста нейросетью: как сделать диплом и курсовую более человечными Самодельный ARM ноутбук, реально ли? Как 100+ авторов пишут 100+ процессов в 3 версиях и не путаются. Или как мы переехали с Wiki на Git Прошла AnalystDays – хорошие выступления и нетворкинг VSCode как IDE для embedded разработки Моделирование широкополосной антенны с двойной круговой поляризацией и высокой изоляцией Ваше прошлое физически существует прямо сейчас. И вы заморожены там навсегда От списка инструментов к technical output: как security engineer’у описывать hands-on опыт в CV и на интервью I just want an agent. Часть 1. Как я научил ИИ собирать ИИ-агентов за пользователей и выиграл конкурс I just want an agent. Часть 1. Как я научил ИИ собирать ИИ-агентов за пользователей и выиграл конкурс Вайбкодинг спас меня от подрядчиков. А потом я поняла, что сама стала подрядчиком для своих агентов Святой Августин и GAN: почему борьба добра и зла — это генеративная состязательная сеть В каждом QR-коде зашита половина лишней информации. Намеренно Я открываю автомат ключом, меняю рулон бумаги и зарабатываю 180 тысяч в месяц с точки Мастер восстановления. Культура достиженства и выгорание Недельный геймдев: #279 — 24 мая, 2026 Защита от дублирования кода агентами: семантические концепции Frontend Status: свежий дайджест фронтенда и AI — 25.05.2026 Где искать IT-работу кроме HH: подборка платформ 2026 Почему простые числа собираются в спирали? OCR для Data Lakehouse: от Apache Tika к собственному решению на базе Docling Jira — Тьюринг-полная Kubernetes-аудит после Wiz и Prisma: как живут без CNAPP в 2026 «Тестируем MVP в 4 раза быстрее»: как нейросети изменили жизнь предпринимателей На каком стеке и железе работает умное наблюдение в вашем городе: обзор технологий от разработчиков видеоаналитики Как мы ускорили согласования на двух заводах в 24 раза Heartbeat-мониторинг cron-job'ов: dead-man-switch на FastAPI [Перевод] Сегодня нет джуниоров, а в 2031 году не станет и синьоров Профайлер для PostgreSQL: от идеи до работающего MVP за сутки [Перевод] Ограничения размера cookie в ASP.NET Core в продакшене: причины и способы решения Проблема «божественного» Obsidian: почему я отказался от централизованного подхода в работе Лицензии GNU GPL: как пройти проверку Минцифры и заказчика для госзакупок и КИИ Хакатон Samsung IT Academy Hack 2026: как студенты оптимизировали поиск в корпоративном мессенджере Хакатон Samsung IT Academy Hack 2026: как студенты оптимизировали поиск в корпоративном мессенджере MTProxy jumper — делаем автоматическое переключение прокси-серверов Telegram Ты уже используешь агента. Просто не заметил Книжный салон. Послевкусие и благодарности Как отлаживать мини‑приложения в MAX и почему без DevTools это боль Cбор биометрических данных. Как защищается наша биометрия на практике Как запустить учет активов без цифровой свалки: первые 90 дней CGE: визуализация кравлера и скрытых связей между поддоменами Зачем банки тратят миллиарды на науку (спойлер: не благотворительности ради) Книга: «Современный Java Concurrency. Глубокое погружение в Virtual Threads, Structured Concurrency и Scoped Values» Как использовать подписку ChatGPT и Claude в Cursor без оплаты за API токены Специализированная ИСУП или модуль в универсальной платформе: вот в чем вопрос Обход белых списков через WebRTC на стероидах (с поддержкой iOS и десктопа) Регата INFOSTART CIO CAMP: когда команда проверяется не в переговорной, а на воде Пет-проект, который не умер: система бронирования устройств как полигон для AI-разработки Не надо встраивать ИИ в каждую корпоративную систему, это архитектурная ошибка Нейросети для дизайна интерьера: Выбираем лучший ИИ для генерации концептов и планировок квартиры Что там с Ил-114-300 Что такое DAS: как и зачем продукт-менеджеры саботируют запуск новых продуктов 8% компаний измеряют критическое мышление руководителей. Что делают остальные 92% CVE, Shell и побег из контейнера: испытываем возможности PT Cloud Application Firewall Как я научил Алису петь: генерация музыки по голосовой команде Восстановление данных с помощью бесплатной утилиты Easy Disk Checker Как мы построили сквозную аналитику в Power BI Год разработки iOS-игры, 266 тысяч показов и $33: как я делал Vault и почти ничего не заработал Ты прокрастинируешь потому, что избегаешь напрасных усилий, а не чрезмерных нагрузок Я построила диагностику «стоит ли это автоматизировать» — и она трижды говорила глупости. Разбор ошибок Как устроены world models, что показал Google на прошлой неделе и где это меняет gamedev и робототехнику Двухдневная рабочая неделя — будущий стандарт CPU не умер, он просто ждал. Китай строит двухэксафлопсный суперкомпьютер без единого GPU — прорыв, необходимость, фейк? 3Sound: поиск бесплатных звуков для игр больше не боль? 3 Тбит/с по-русски: почему DDoS в 2026 году стал угрозой для любого бизнеса 10 Гбит/с — зачем вам такая скорость передачи данных в облаке Ремонтируем аналоговый XY-самописец Endim 622 [Перевод] IPO компании SpaceX: хорошая попытка, но нет «Ща будет шрифт»: история одного русского embedded‑шрифта Как аквариум на подоконнике превратился в full-stack платформу с AI GiftsHub — из чат-бота в полноценный backend-продукт Пиратство, копирайт и DMCA: как Napster, The Pirate Bay и YouTube изменили закон. Часть II Как найти внутренние резервы для развития предприятия Как один французский чиновник от безысходности начал платил зарплаты картами и практически изобрёл банкноты RAG в энтерпрайзе: почему демо работает, а прод нет AI-агент для финансовых процессов: как мы научили ИИ считать числа из базе данных без галлюцинаций Автопостинг на 8 платформах: архитектура waterfall, custom publisher'ы и API-ловушки Кинетика против бронзы: Почему Голиаф был обречен в дуэли с Давидом
Архитектура крипто-сканера для биржи: Open Interest, Funding Rate, EMA и MACD в реальном времени
negrbluad · 2026-05-26 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение8 мин

Охват и читатели285

Обзор

На финансовых рынках, и в частности на крипторынке, с каждым годом ручной трейдинг становиться всё труднее, на смену ему приходит алготрейдинг. Современный алгоритмический трейдинг постепенно смещается в сторону анализа производных метрик: открытого интереса, 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 = 60
TIMEFRAME = "1h"

OI_THRESHOLD = 1_000_000.0
FUNDING_RATE_THRESHOLD = 0.0005

EMA_FAST = 9
EMA_SLOW = 21

MACD_FAST = 12
MACD_SLOW = 26
MACD_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_lag
macd_cross_up_lag

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

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

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

while True:

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

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

elapsed = time.time() - start_time
sleep_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.

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

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