Привет, хабр!
Сегодня мы разберём полный цикл создания торговой системы на Python: от бэктеста стратегии до её запуска в реальном времени на бирже BingX. Статегия будет основа на индикаторах и математике, но они будут довольно неклассические и, думаю, что многим это будет интересно.
Я опишу логику стратегии, покажу код и объясню каждую часть шаг за шагом. Это не просто копипаст — это полноценный гайд, чтобы вы могли адаптировать систему под себя. Мы используем библиотеки вроде Pandas, NumPy, Matplotlib и API бирж (Binance для данных, BingX для торгов).
Предупреждение: Сейчас система находится в тесте около 2 недель. На данный момент профит составляет 5% к капиталу бота, но потеря капитала также возможна. Это не финансовый совет — тестируйте на демо-счёте. Я также постоянно подгоняю параметры, чтобы бот был актуален и периодически заменяю монетки в боте.
Все файлы этой торговой системы, а также pine script выложу на мой github.
Торговая система — это набор правил для входа/выхода из позиций, основанный на техническом анализе. Автоматизация позволяет:
На крипторынке есть редкий класс стратегий, где не нужно угадывать направление цены. Нет анализа свечей, индикаторов или прочей тяжелой математики.
Одна из таких стратегий — арбитраж ставок финансирования (funding rate arbitrage).
Этот материал — не обещание лёгких денег. Это разбор реальной рабочей системы, которую я сначала писал для себя, а позже обернул в Telegram-бота. Ниже я разберу:
как именно зарабатываются деньги на арбитраже ставок финансирования
почему ручной арбитраж не работает
как устроена архитектура алгоритмической системы
как код собирает данные, считает спреды и фильтрует мусор;
какие риски остаются и как их контролировать.
Автоматизированная торговая система может кратко упростить поиск грамотных связок между биржами и присылать уведомления. Я обернул эту систему в телеграм бота @Fandyng_Bot, логику которого мы сегодня и разберём — от получения данных с нескольких бирж, до обработки этой информации и практической значимости.
Цель этой статьи — максимально подробно и практично разобрать реальный Python‑проект автоматического трейдинга. Это не концепт, а рабочий бот, который: непрерывно анализирует рынок Binance Futures, ищет сигналы по открытому интересу (Open Interest), применяет набор защитных фильтров, работает с множеством пользователей одновременно, управляется через Telegram‑интерфейс и при необходимости открывает реальные сделки через API биржи BingX.
Далее я последовательно разберу всю логику и все функции основного файла main.py, объясняя, как и зачем они реализованы именно так.
Архитектурно проект разделён на два слоя: Управляющий слой — получение данных, расчёт сигналов, фильтры, Telegram‑интерфейс, логика пользователей и принятие решений. Исполнительный слой — работа с торговым API BingX: подпись запросов, установка плеча, открытие ордеров, трейлинг.
Ключевая идея — вся торговая логика должна быть независима от конкретной биржи. В main.py мы оперируем функции вроде place_market_order(), а не HTTP‑запросами. Клиент для биржи я написал самостоятельно и использую его во всех своих проектах и статьях. Ссылка на файла проекта, включая этот клиент: github
Рынок криптовалют характеризуется высокой волатильностью и большим количеством одновременно торгуемых инструментов. Для трейдера ключевой проблемой становится не столько поиск точки входа, сколько предварительный отбор активов, на которые вообще стоит обращать внимание. Ручной анализ десятков графиков требует значительных временных затрат и неизбежно приводит к субъективным ошибкам. Особенно актуально это стало на текущем крипторынке — в декабре, да и в целом во второй половина 2025 года, было огромное количество периодов с околонулевой волатильностью, что делает качественную торговлю невозможной.
Целью данной работы стало создание автоматизированного скрипта, который позволяет в реальном времени отбирать криптоактивы с признаками повышенного интереса со стороны участников рынка. В основе подхода лежит анализ динамики открытого интереса (Open Interest) и его соотношения с движением цены. В качестве платформы для оповещений я выбрал telegram — настроим бота, который будет присылать уведомления по необходимым активам.
Финансовые рынки редко движутся изолированно. Криптовалюты реагируют на фондовые индексы, золото реагирует на макроэкономику, а внутри крипторынка движение биткоина задаёт направление для альткоинов.
Гипотеза проекта:
Если агрегировать данные по разным классам активов (крипто, акции, золото), измерить их волатильность, тренд и взаимную корреляцию, можно получить осмысленную вероятностную оценку того, каким будет рынок в ближайшие 24 часа: рост, падение или консолидация.
Цель скрипта — не предсказать точную цену, а оценить состояние рынка в целом, получить вероятностный прогноз и использовать его как основу для торговых стратегий и автоматизированной торговли.
На логическом уровне скрипт состоит из пяти ключевых блоков:
Данные → Индикаторы → Агрегация → Корреляции → Вероятностный прогноз
Код выложен на github.
Используются разные рынки:
В классическом алготрейдинге рынок часто моделируется как временной ряд: индикаторы, скользящие средние, осцилляторы. Аукционная теория рассматривает рынок иначе — как процесс распределения объёма по ценовым уровням, где цена ищет баланс между спросом и предложением.
Ключевым элементом такого подхода является Volume Profile, а именно Point of Control (POC) — уровень цены, на котором за выбранный период был проторгован максимальный объём. В терминах аукционной теории POC соответствует зоне максимального согласия участников рынка.
В статье рассматривается создание алгоритмического торгового бота, основанного на реакции цены относительно:
POC
Value Area High (VAH)
Value Area Low (VAL)
В качестве основы используется Python‑скрипт back.py, предназначенный для параметрического бэктеста стратегии.
Все скрипты из статьи я выложил на github для вашего удобства.
Большинство торговых систем работают детерминированно: “если RSI пересёк X — покупай”.Но рынок — стохастическая система. Сигналы не бинарны, они вероятностны.
Это приводит к трём фундаментальным проблемам классических индикаторных систем:
И анализатор, который мы сегодня разберём, решает это, используя:
Алгоритмическая торговля на Московской бирже с помощью терминала QUIK остаётся популярным способом автоматизировать стратегии. В этой статье мы напишем грид-бота, который выставляет ордера сеткой вокруг текущей цены и зарабатывает на колебаниях.
Грид-бот (от англ. grid — сетка) — это торговый алгоритм, который выставляет ордера (лимитки) на покупку и продажу через равные интервалы цены.
Простейший сценарий:
Цена идёт вниз — бот набирает позицию по мере снижения.
Цена возвращается вверх — бот закрывает покупки продажами, фиксируя прибыль на каждом «шаге сетки».
Таким образом бот «ловит пилу», зарабатывая на флэте и колебаниях.
В коде ниже реализована версия с:
стопом/тейком для бота.
Пересчётом средней цены позиции.
Подсчётом реализованного и нереализованного PnL.
Чтобы Python «видел» терминал QUIK, нужен связующий слой. Есть несколько способов:
QUIK LUA scripts (QLua) — встроенные скрипты на Lua.
На крипто рынке у бессрочных фьючерсов существует специальный механизм: ставка финансирования (funding rate) — периодический платёж между держателями длинных (long) и коротких (short) позиций, который служит для выравнивания цены фьючерса с ценой спота.
Арбитраж по ставке финансирования — стратегия, цель которой не столько угадать движение цены, сколько извлечь выгоду из разницы в ставках финансирования на разных площадках или между контрактом и спотом.
Например: если фьючерс на актив торгуется с положительной ставкой +0.03 % за период, то держатели short получают оплату от long. Арбитражер может занять длинную позицию на споте и короткую на фьючерсе, тем самым оставаясь почти нейтральным к движению цены, и получать платёж по ставке. Или — если ставка отрицательная (short платят long) — можно действовать наоборот: short спот и long фьючерс.
Это стратегия с относительно низкой ориентированной на движение цены риском
Я давно занимаюсь алготрейдингом, периодически также работают боты для монет с низкой капитализацией. На многих биржах остаются монеты маленькой и средней капитализации — периодически их пампят. В хороший день 10-15 монет могут дать рост больше чем на 50%.
Первоначально бот не только уведомлял, но и открывал сделки.
Однако для безопасной публикации я убрал торговую логику, так как бот пока что находится в стадии тестирования. Можно, при желании, добавить филтьтры по объёму, росту на 24часа и прочее.
Я взял за основную цифру — 5% роста. Также при желании можно добавить и шорт-позиции, но пока что, в стадии теста, мне это неинтересно.
В результате получился лёгкий и автономный инструмент, который:
отслеживает все фьючерсные пары на BingX;
фильтрует токены по рыночной капитализации (через CoinMarketCap API);
каждые 5 минут проверяет изменение цены;
при росте выше заданного порога — шлёт уведомление в Telegram.
Весь код можно разбить на 4 основных блока: