- PVSM.RU - https://www.pvsm.ru -
Механика биржевой торговли в криптовалютах нередко воспринимается как нейтральная инфраструктура: вы выставляете лимитный ордер, он попадает в стакан, и дальше всё решает рынок. На практике это не совсем так.
Ретейл-участник видит лишь результат исполнения, в то время как большинство решений принимаются до фактической сделки — на уровне реакции на сам факт появления вашего ордера. Эти реакции происходят за миллисекунды, и инициируют их не люди, а торговые боты, встроенные в инфраструктуру самой платформы или подключённые к ней через публичные API.
В этой статье мы разберём, как устроен order book на биржах типа Binance, OKX и Bybit, и какие манипуляционные паттерны можно наблюдать в реальном времени. Мы изучим:
как работают стратегии spoofing, layering и фронт-ран;
как с технической точки зрения реализуются эти механики через API/WebSocket;
какие данные можно собрать для анализа подозрительного поведения;
и какие ошибки допускает большинство частных трейдеров, глядя на «стены» в стакане.
При этом фокус будет не на финансовых последствиях, а на техническом аспекте — алгоритмах, скорости реакции, структуре сообщений и особенностях взаимодействия с биржевыми серверами.
Если вы когда-либо ставили лимитный ордер и замечали, что крупные заявки перед вами исчезают в момент исполнения — это не случайность. Это — сигнал, который можно распознать, если понимать, как работает стакан на самом деле, а не по теории из пользовательского интерфейса.
⚠️ Предупреждение: цель статьи — технический разбор. Здесь не будет советов по инвестициям, «скрытых стратегий» и магических индикаторов. Только факты, алгоритмы и реальные данные.
Продолжим с базового — разберём, как на самом деле работает книга ордеров на уровне сети, какие типы ордеров туда попадают, и чем отличаются заявки, предназначенные для трейдинга — и для воздействия на поведение других участников.

Книга ордеров — это не просто таблица заявок, отображаемая в терминале. Это стриминг-система реального времени, построенная на изменениях состояния (event-driven), где каждая новая заявка, отмена или исполнение — это событие, влияющее на поведение других участников.
На уровне публичных API — например, WebSocket-интерфейса Binance или Bybit — стакан представляет собой последовательность snapshot + updates:
Содержит пары цен и объёмов на стороне покупки (BID) и продажи (ASK) — как правило, 20–100 уровней глубины.
{
"lastUpdateId": 1027024,
"bids": [["50000.00", "0.003"], ["49900.00", "1.200"]],
"asks": [["50100.00", "0.300"], ["50200.00", "2.000"]]
}
Этот срез — не живой, это начальная точка. Вся актуальность — в разнице между этим срезом и последующими изменениями, которые приходят через WebSocket.
Каждое обновление содержит изменение в уровне ордера:
Изменение количества
Появление/удаление уровня
Смещение внутри книги (если идёт активная агрессия маркет-ордерами)
Эти обновления приходят с интервалом в десятки миллисекунд, и часто с задержкой даже при подписке на самый быстрый stream.
{
"u": 1027025,
"b": [["50000.00", "0.000"]], // удалён уровень
"a": [["50150.00", "0.800"]] // добавлен уровень
}
Пользовательский UI (терминал, график стакана, стек ордеров) отображает агрегированные и часто задержанные данные. Интерфейс не отражает реальную очередность исполнения, времени появления ордера и тем более его происхождение (бот / человек / тестовая заявка).
Большинство решений принимается до визуализации, то есть:
вы видите стену в стакане,
она исчезает в момент, когда вы нажимаете кнопку,
вы считаете это совпадением.
На практике:
ордер отменён по алгоритму,
ваше действие было спровоцировано,
сделка с вами — не цель, а средство анализа реакции.
Важно понимать: в стакан попадают только лимитные ордера, т.е. заявки с указанием цены. Это могут быть:
Ручные заявки розничных трейдеров;
Алгоритмические ордера от ботов (чаще всего);
Псевдо-объём, размещённый не для исполнения, а для воздействия на поведение других участников.
Терминалы и биржи вроде Binance, OKX, Bybit не раскрывают данных о происхождении ордера. Но это не значит, что отличить их невозможно.
Обнаружить неестественные паттерны можно по:
скорости появления/удаления уровней,
регулярности размещения на определённом расстоянии от mid-price,
резкому появлению и исчезновению крупных ордеров (≥50 BTC) без исполнения.
Любой WebSocket-клиент (Python/Go/Node.js) может слушать изменения в стакане
import websockets
import asyncio
import json
async def listen_depth():
uri = "wss://stream.binance.com:9443/ws/btcusdt@depth"
async with websockets.connect(uri) as websocket:
while True:
msg = await websocket.recv()
data = json.loads(msg)
print(data["b"], data["a"]) # bids / asks
asyncio.run [1](listen_depth())
Достаточно 5–10 минут сбора, чтобы увидеть первые аномалии:
«прыгающие» уровни в одном ценовом диапазоне;
ордера-«стены», исчезающие при попытке выставить маркет-ордер;
повторяющиеся паттерны, свойственные алгоритмам.
Order Book — это динамичная, реактивная среда, где каждый ордер не просто стоит, а влияет. И если вы видите на определённой цене 100 BTC, это не значит, что кто-то действительно хочет купить по этой цене. Это может быть:
проверка вашей реакции,
настройка уровней ликвидности для бота,
или подготовка к инверсии движения цены.
В следующих главах мы подробно разберём, как именно эти заявки используются для манипуляций, и какие техники при этом применяются на уровне алгоритма.
Когда говорят «манипуляции на рынке», чаще всего представляют себе сговор, инсайдерскую торговлю или pump & dump. На деле наиболее эффективные манипуляции — это те, которые происходят в пределах правил самой биржи.

Сейчас мы рассмотрим три механики, которые применяются ежедневно, тысячами ботов, на любой крупной площадке с публичным Order Book.
Что это: выставление крупных лимитных ордеров, которые не планируется исполнять — цель которых создать иллюзию интереса к уровню.
Принцип действия:
Алгоритм выставляет большую заявку (например, 150 BTC) в BID на 2 тика ниже текущей цены.
Другие участники видят «стену» и считают это уровнем поддержки.
Они выставляют свои ордера выше «стены», чтобы успеть раньше.
Spoofer снимает заявку за миллисекунды до касания — часто до того, как пользовательский интерфейс вообще успевает её показать.
Почему работает: большинство трейдеров интерпретируют размер заявки как намерение. Это ошибка: на бирже намерение — это исполнение, не размещение.
Технический аспект:
Такие ордера имеют TTL (time-to-live) в 100–200 мс.
Боты используют WebSocket-мониторинг depth и собственные latency-оптимизированные API-запросы (в т.ч. через colocation).
Пример кода: логика spoof-бота (упрощённо):
if price_near_support():
place_limit_order(price=X, amount=150)
sleep(0.15)
cancel_order()
🧠 Примечание: spoofing запрещён на регулируемых рынках (например, NYSE), но в крипте его почти невозможно доказать — API не раскрывает намерения, только факт размещения.
Что это: выставление серии небольших заявок, равномерно распределённых по стакану, чтобы создать эффект давления или поддержки.
Цель: не напугать «стеной», а создать структурный тренд в изменении глубины книги.
Принцип:
Разместить 5–10 заявок, например, от 100 USDT до 0.01 BTC, через каждые 2 тика вниз.
Имитация реального объёма, разбитого по уровням.
Заявки «дышат»: часть отменяется, добавляются новые — это создаёт ощущение «живой ликвидности».
Чем отличается от spoofing:
Spoof — единичный большой ордер.
Layering — распределённая серия мелких заявок, которые сложнее идентифицировать как манипуляцию.
Реализация:
Бот получает mid-price.
Выставляет каскад лимиток от mid-3% до mid-0.5%.
Отменяет при попытке пробоя снизу.
Почему эффективно:
Строит визуальный контекст: трейдеры начинают «видеть тренд» и принимают решения на его основе.
Что это: резкое движение ценой до уровней, где размещено скопление стоп-ордеров, с целью вызвать волну ликвидаций или принудительных продаж.
Пример сценария:
Цена «висит» возле ключевого уровня поддержки (допустим, $89,100 по BTC).
Алгоритм продаёт крупный объём по рынку, пробивает уровень.
Срабатывают стопы и ликвидации на фьючерсах → каскад продаж.
Бот выкупает ликвидность на $88,600 — и цена возвращается вверх.
Где используются:
На маржинальных рынках (Binance Futures, Bybit).
В парах с высокой волатильностью.
Технически:
Используется публичный Order Book + funding rates + открытый интерес.
Анализ зоны ликвидаций и массовых стопов — по внешним источникам или историческим данным.
Инструменты анализа:
TensorCharts (отображение стопов).
Coinalyze (open interest).
Собственные боты через WebSocket + исторический dump ордеров.
За 30 минут наблюдения через WebSocket можно зафиксировать десятки событий:
заявка > 50 BTC появляется и исчезает за 150 мс;
каскад BID-заявок идёт по восходящему тренду с плотностью 1 тик;
после пробоя уровня на фьючерсах всплеск в объёмах и возврат на ±0.5%.
Если логировать все изменения стакана (например, в Pandas), можно визуализировать «спуфинг-сигнатуру» — это когда:
крупная заявка появляется и исчезает не один раз,
в момент её присутствия цена идёт в её сторону,
а исполнение не происходит ни разу.
Манипуляции стаканом — это не фантазия и не теория заговора. Это легальные (или почти легальные) техники, которые используют алгоритмы, чтобы повлиять на толпу. Не обманывая напрямую, а формируя контекст, на основе которого большинство трейдеров делают выводы.
Кто за этим стоит: как устроены боты, манипулирующие ордербуком
Если вы думаете, что за спуфингом и layer'ингом стоит человек в терминале с горячими клавишами, который вручную отменяет заявки — это уже давно не так. Все описанные выше действия — продукт алгоритмов. Причём не всегда агрессивных, зачастую — нейтральных и даже рыночных по логике.
Разберём, как устроены эти алгоритмы, на уровне архитектуры, стека и типов решений.
Упрощённо, инфраструктура “стаканного” бота состоит из трёх слоёв:
Подключение к потокам:
Order Book (depth updates)
Trades stream (исполненные сделки)
Funding, liquidation feed (если фьючерсы)
Обычно это WebSocket или low-latency UDP (у некоторых платформ: BitMEX, Kraken).
Требование: latency < 100 мс, желательно < 10 мс.
Это ядро логики, принимающее решения:
Где разместить лимитный ордер.
Когда отменить.
Как сместить слой ордеров при изменении тренда.
Часто построен на правилах (все укрощено, прошу понять):
if spread < threshold and imbalance_ratio > 1.5:
place_spoof_bid(price = mid - 3 ticks, amount = 80 BTC)
Или даже на reinforcement learning: агентов обучают “ловить” реакции толпы.
Отвечает за:
Отмену ордеров (по TTL или по сигналу).
Защиту от частого размещения / банов со стороны API.
Логгирование событий (для бэктеста и разбора).
Язык: Python (быстрый прототип), Go или C++ (прод), Java (в банках).
Data layer: Redis / Kafka / TimescaleDB (для стриминга цен).
Execution: REST+WS API биржи (для исполнения) + отдельный latency-sensitive слой для реакции.
Сценарий в реальном времени:
Вы размещаете лимитный ордер на покупку.
Бот видит через WS stream появление новой заявки.
Проверяет: не улучшает ли она BID. Если да — отменяет свою выше неё.
Если вы отменяете заявку — он возвращает свою.
Вы не замечаете этого визуально, но для системы вы — “сигнал”.
Эти действия возможны, потому что API WS-стримов публикуют заявки в открытом виде, а биржи не ограничивают частоту подписки и обработки сообщений.
Обычное интернет-соединение:
Ping до Binance = ~80–100 мс
Время между событием и реакцией — ~300–500 мс
У HFT-инфраструктуры:
Co-location или edge-серверы (Amazon SG, Binance AWS-hosted)
Задержка ~5–15 мс, full round-trip execution < 30 мс
Даже разница в 100 мс может позволить ботам “увидеть” вашу заявку, отреагировать, изменить поведение, а вы — даже не поймёте, что стали частью теста.
|
Время (UTC) |
BID@49950 |
ASK@49960 |
Событие |
|
12:00:00.001 |
80 BTC |
10 BTC |
Стенка в BID |
|
12:00:00.020 |
80 BTC |
10 BTC |
Пользователь ставит 0.5 BTC выше |
|
12:00:00.030 |
ордер на 80 BTC снят |
10 BTC |
TTL или реакция бота |
|
12:00:00.050 |
60 BTC |
10 BTC |
Новый spoof ниже |
Пример из логов:
Freqtrade [2] — торговый фреймворк, можно построить пассивного стаканного наблюдателя.
ccxt [3] — библиотека для подключения к десяткам бирж.
Jesse [4] — платформа для стратегий (с акцентом на backtest и визуализацию).
Когда вы смотрите на ордера в стакане, вас чаще всего интересует "где стоят крупные заявки" и "куда идёт рынок". Но настоящая информация — не в цене, а в скорости и структуре изменений. Здесь начинается технический анализ второго уровня — анализ книги ордеров во времени.
Биржи, поддерживающие глубину стакана через WebSocket:
Binance Spot/Futures → @depth, @aggTrade
OKX → order-book-channel
Bybit → orderBookL2_25 или orderBookL2_200
С этими потоками можно отслеживать:
Появление и исчезновение уровней (особенно крупных).
Скорость изменений (частота update'ов на одном уровне).
Объём по каждой цене и его "нервозность" (нестабильность).
Появляется крупная заявка (> 30 BTC).
Стоит < 500 мс.
Не сопровождается сделками по этой цене.
Исчезает при приближении best price.
Автоматическое обнаружение:
Логировать depth в DataFrame.
Отслеживать время "жизни" каждого уровня.
Искать short-TTL (>10 BTC, <0.5с).
Полезное для доп прочтения:
Равномерное распределение 3+ лимитных ордеров на BUY/SELL с шагом ±1 тик.
Все — одинакового размера или кратны.
TTL — 1–3 секунды.
Появляются одновременно, исчезают "каскадом".
📌 Часто боты используют шаблон вида:
for offset in range(1, 5):
price = best_bid - offset * tick_size
place_limit_order(price, size)
Уровень поддержки пробивается маркет-ордером.
Сразу после — серия небольших исполнений.
Возврат к предыдущему уровню за 5–10 секунд.
Видны ликвидации/слив стопов (если фьючерсы).
Где смотреть:
TensorCharts [7] — тепловая карта стакана.
Coinalyze [8] — CVD, Open Interest.
TradingLite [9] — footprint-графики.
# pip install websocket-client pandas
import websocket, json
import pandas as pd
from datetime import datetime
levels = {}
def on_message(ws, message):
data = json.loads(message)
bids = data['b']
now = datetime.utcnow()
for price, amount in bids:
if price not in levels:
levels[price] = {'created': now, 'last_seen': now}
else:
levels[price]['last_seen'] = now
def on_open(ws):
ws.send(json.dumps({"method": "SUBSCRIBE", "params": ["btcusdt@depth"], "id": 1}))
ws = websocket.WebSocketApp("wss://stream.binance.com:9443/ws", on_message=on_message, on_open=on_open)
ws.run [10]_forever()
Это простейшая заготовка, которую можно доработать:
логировать TTL,
отмечать «аномальные» уровни (живут < 500 мс),
считать статистику по слоям BID/ASK.
Логировать уровни и TTL — найти повторяющиеся паттерны.
Собирать heatmap по времени суток — когда spoofing активнее.
Подсвечивать аномалии прямо в UI/боте — показывать нестабильные уровни как «недостоверные».
High-Frequency Trading in Cryptocurrency Markets [11] — исследование с реальными данными (arXiv)
Binance Order Book Explained (by Bitquery)
btb-manager-telegram [12] — проект, где реализован Telegram-UI для бота с логами стакана
Любой, кто умеет парсить WebSocket, может начать фиксировать аномалии — и получать понимание, кто делает рынок, а кто бежит за ним. :)
“The Psychology of Order Book Trading” by Tomas Nesnidal
Flash Boys 2.0 (HFT в крипте) — от Paradigm
Ты не обязaн «бороться» с манипуляциями — ты можешь:
Узнавать их по сигнатурам.
Оценивать достоверность сигналов по глубине стакана.
Фильтровать уровни по стабильности, TTL, плотности.
Принимать решения не из интерфейса, а из данных.
Рынок — это поведение. Стакан — это язык.
Если ты научишься читать, а не реагировать, ты получишь преимущество, недоступное 90% участников.
Спасибо за то, что дочитал. Увидимся — в логах, графиках, и, возможно, в нашем клубе.
Если вы увлекаетесь ручной торговлей - трейдингом, то приглашаем в наш торговый чат. Для всех у нас открыты двери узнать поподробнее вы сможете в статье - ссылка [16].
У нас имеются открытые вакансии(не по айти специальности) подойдет для студентов, фрилансеров - ссылка [17] на вакансии [17].
Если тебе близка эта аналитика — добро пожаловать.
Автор: LehausIT
Источник [18]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/algoritmy/421069
Ссылки в тексте:
[1] asyncio.run: http://asyncio.run
[2] Freqtrade: https://github.com/freqtrade/freqtrade
[3] ccxt: https://github.com/ccxt/ccxt
[4] Jesse: https://github.com/jesse-ai/jesse
[5] Hummingbot – bot template для мониторинга стакана: https://github.com/hummingbot/hummingbot
[6] Binance depth stream demo на Python: https://github.com/sammchardy/binance-websocket-examples
[7] TensorCharts: https://tensorcharts.com/
[8] Coinalyze: https://coinalyze.net/
[9] TradingLite: https://tradinglite.com/
[10] ws.run: http://ws.run
[11] High-Frequency Trading in Cryptocurrency Markets: https://arxiv.org/abs/2102.13425
[12] btb-manager-telegram: https://github.com/lorcalhost/BTB-manager-telegram
[13] Binance WebSocket Quickstart (Python): https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-streams.md
[14] Обёртка для WS-потоков: binance-connector: https://github.com/binance/binance-connector-python
[15] Streamlit для визуализации стакана: https://streamlit.io/
[16] ссылка: https://teletype.in/@faddeyjt/WBZD9N1wZsz
[17] ссылка: https://teletype.in/@faddey/tySV4oAKLRK
[18] Источник: https://habr.com/ru/articles/913696/?utm_campaign=913696&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.