wss://fstream.binance.com/ws/!forceOrder@arr и в реальном времени стримит все принудительно закрытые позиции (ликвидации) по всем торговым парам. Это позволяет оценивать рыночную панику и находить точки разворота тренда.Исходный код
В высокочастотной и количественной торговле (HFT) отслеживание ликвидаций — один из сильнейших индикаторов рыночного сентимента. Массовые принудительные закрытия позиций создают каскады ликвидности, которые часто приводят к локальным экстремумам. Для анализа исторических паттернов полезно изучить руководство Как извлечь исторические данные стакана L2 с Tardis.dev в Python pandas, а для работы в реальном времени мы настроим WebSocket-стрим.
Ниже представлен готовый асинхронный скрипт на Python, который подключается к API Binance Futures, получает поток ликвидаций, фильтрует их и выводит ключевую информацию в консоль.
import asyncio
import json
import websockets
from datetime import datetime
async def track_liquidations():
# URL для получения ликвидаций по всем символам (USD-M Futures)
url = 'wss://fstream.binance.com/ws/!forceOrder@arr'
print('Подключение к Binance Liquidation Stream...')
async with websockets.connect(url) as websocket:
print('Успешно подключено. Ожидание ликвидаций...')
while True:
try:
message = await websocket.recv()
data = json.loads(message)
# Извлекаем объект ордера
order = data.get('o', {})
symbol = order.get('s') # Торговая пара
side = order.get('S') # Направление (BUY/SELL)
price = float(order.get('p', 0)) # Цена ликвидации
qty = float(order.get('q', 0)) # Объем в базовой валюте
usd_volume = price * qty # Объем в USD
# Фильтруем только крупные ликвидации (например, от $10,000)
if usd_volume >= 10000:
time_str = datetime.now().strftime('%H:%M:%S')
print(f'[{time_str}] 🚨 ЛИКВИДАЦИЯ | {symbol} | {side} | Цена: {price:.2f} | Объем: ${usd_volume:,.2f}')
except websockets.exceptions.ConnectionClosed:
print('Соединение закрыто. Попытка переподключения через 5 секунд...')
await asyncio.sleep(5)
break
except Exception as e:
print(f'Ошибка: {e}')
await asyncio.sleep(1)
if __name__ == '__main__':
try:
asyncio.run(track_liquidations())
except KeyboardInterrupt:
print('Мониторинг остановлен пользователем.') Разбор параметров
Приходящее от WebSocket-сервера Binance сообщение содержит JSON-структуру с метаданными события. Наиболее важные параметры находятся внутри объекта o (order):
s(Symbol): Торговая пара, на которой произошла ликвидация (например, BTCUSDT).S(Side): Направление ордера. Если значениеSELL— ликвидирован лонг (рыночные продажи). ЕслиBUY— ликвидирован шорт (рыночные покупки).p(Price): Цена, по которой был исполнен принудительный ордер.q(Quantity): Объем ликвидированной позиции в базовом активе (например, в BTC).usd_volume: Вычисляемый параметр (произведение цены на объем), отражающий реальный масштаб ликвидации в долларовом эквиваленте.
Как запустить
Для запуска скрипта вам понадобится интерпретатор Python версии 3.8 или выше и библиотека websockets.
1. Установите необходимую зависимость в терминале:
pip install websockets 2. Сохраните код скрипта в файл liquidations.py и запустите его:
python liquidations.py Для безопасной отладки торговых стратегий перед выходом в продакшн рекомендуется использовать тестовые среды. Подробнее об этом читайте в статье Работа с Testnet API криптобирж в Python CCXT: Настройка.
Также ликвидационные каскады тесно связаны с изменением ставок финансирования. Чтобы получить полную картину рынка, вы можете совместить отслеживание ликвидаций с решением из статьи Асинхронный сбор Funding Rate с Binance, Bybit и OKX на Python.




