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

Как устроена книга ордеров: структура, API, реактивность
Книга ордеров — это не просто таблица заявок, отображаемая в терминале. Это стриминг-система реального времени, построенная на изменениях состояния (event-driven), где каждая новая заявка, отмена или исполнение — это событие, влияющее на поведение других участников.
На уровне публичных API — например, WebSocket-интерфейса Binance или Bybit — стакан представляет собой последовательность snapshot + updates:
Snapshot (срез состояния)
Содержит пары цен и объёмов на стороне покупки (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.
Real-time updates (depthDiff)
Каждое обновление содержит изменение в уровне ордера:
Изменение количества
Появление/удаление уровня
Смещение внутри книги (если идёт активная агрессия маркет-ордерами)
Эти обновления приходят с интервалом в десятки миллисекунд, и часто с задержкой даже при подписке на самый быстрый 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
(listen_depth())
Достаточно 5–10 минут сбора, чтобы увидеть первые аномалии:
«прыгающие» уровни в одном ценовом диапазоне;
ордера-«стены», исчезающие при попытке выставить маркет-ордер;
повторяющиеся паттерны, свойственные алгоритмам.
Order Book — это динамичная, реактивная среда, где каждый ордер не просто стоит, а влияет. И если вы видите на определённой цене 100 BTC, это не значит, что кто-то действительно хочет купить по этой цене. Это может быть:
проверка вашей реакции,
настройка уровней ликвидности для бота,
или подготовка к инверсии движения цены.
В следующих главах мы подробно разберём, как именно эти заявки используются для манипуляций, и какие техники при этом применяются на уровне алгоритма.
Манипуляции в стакане: Spoofing, Layering, Stop-Hunt — как это работает на практике
Когда говорят «манипуляции на рынке», чаще всего представляют себе сговор, инсайдерскую торговлю или pump & dump. На деле наиболее эффективные манипуляции — это те, которые происходят в пределах правил самой биржи.

Сейчас мы рассмотрим три механики, которые применяются ежедневно, тысячами ботов, на любой крупной площадке с публичным Order Book.
1. Spoofing: «ложные» ордера в действии
Что это: выставление крупных лимитных ордеров, которые не планируется исполнять — цель которых создать иллюзию интереса к уровню.
Принцип действия:
Алгоритм выставляет большую заявку (например, 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 не раскрывает намерения, только факт размещения.
2. Layering: каскад давления
Что это: выставление серии небольших заявок, равномерно распределённых по стакану, чтобы создать эффект давления или поддержки.
Цель: не напугать «стеной», а создать структурный тренд в изменении глубины книги.
Принцип:
Разместить 5–10 заявок, например, от 100 USDT до 0.01 BTC, через каждые 2 тика вниз.
Имитация реального объёма, разбитого по уровням.
Заявки «дышат»: часть отменяется, добавляются новые — это создаёт ощущение «живой ликвидности».
Чем отличается от spoofing:
Spoof — единичный большой ордер.
Layering — распределённая серия мелких заявок, которые сложнее идентифицировать как манипуляцию.
Реализация:
Бот получает mid-price.
Выставляет каскад лимиток от mid-3% до mid-0.5%.
Отменяет при попытке пробоя снизу.
Почему эффективно:
Строит визуальный контекст: трейдеры начинают «видеть тренд» и принимают решения на его основе.
3. Stop-Loss Hunting: выжигатель ликвидности
Что это: резкое движение ценой до уровней, где размещено скопление стоп-ордеров, с целью вызвать волну ликвидаций или принудительных продаж.
Пример сценария:
Цена «висит» возле ключевого уровня поддержки (допустим, $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'ингом стоит человек в терминале с горячими клавишами, который вручную отменяет заявки — это уже давно не так. Все описанные выше действия — продукт алгоритмов. Причём не всегда агрессивных, зачастую — нейтральных и даже рыночных по логике.
Разберём, как устроены эти алгоритмы, на уровне архитектуры, стека и типов решений.
Компоненты типичного HFT-бота
Упрощённо, инфраструктура “стаканного” бота состоит из трёх слоёв:
1. Market Data Listener (интерфейс WebSocket / UDP)
Подключение к потокам:
Order Book (depth updates)
Trades stream (исполненные сделки)
Funding, liquidation feed (если фьючерсы)
Обычно это WebSocket или low-latency UDP (у некоторых платформ: BitMEX, Kraken).
Требование: latency < 100 мс, желательно < 10 мс.
2. Execution Engine
Это ядро логики, принимающее решения:
Где разместить лимитный ордер.
Когда отменить.
Как сместить слой ордеров при изменении тренда.
Часто построен на правилах (все укрощено, прошу понять):
if spread < threshold and imbalance_ratio > 1.5:
place_spoof_bid(price = mid - 3 ticks, amount = 80 BTC)
Или даже на reinforcement learning: агентов обучают “ловить” реакции толпы.
3. Order Manager / Risk System
Отвечает за:
Отмену ордеров (по 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 ниже |
Пример из логов:
Open-source примеры
Freqtrade — торговый фреймворк, можно построить пассивного стаканного наблюдателя.
ccxt — библиотека для подключения к десяткам бирж.
Jesse — платформа для стратегий (с акцентом на backtest и визуализацию).
Технический анализ стакана: данные, паттерны, сигнатуры и простые скрипты
Когда вы смотрите на ордера в стакане, вас чаще всего интересует "где стоят крупные заявки" и "куда идёт рынок". Но настоящая информация — не в цене, а в скорости и структуре изменений. Здесь начинается технический анализ второго уровня — анализ книги ордеров во времени.
Какие данные можно (и нужно) анализировать
Биржи, поддерживающие глубину стакана через WebSocket:
Binance Spot/Futures → @depth, @aggTrade
OKX → order-book-channel
Bybit → orderBookL2_25 или orderBookL2_200
С этими потоками можно отслеживать:
Появление и исчезновение уровней (особенно крупных).
Скорость изменений (частота update'ов на одном уровне).
Объём по каждой цене и его "нервозность" (нестабильность).
Сигнатуры манипуляций
1. Spoofing pattern
Появляется крупная заявка (> 30 BTC).
Стоит < 500 мс.
Не сопровождается сделками по этой цене.
Исчезает при приближении best price.
Автоматическое обнаружение:
Логировать depth в DataFrame.
Отслеживать время "жизни" каждого уровня.
Искать short-TTL (>10 BTC, <0.5с).
Полезное для доп прочтения:
2. Layering pattern
Равномерное распределение 3+ лимитных ордеров на BUY/SELL с шагом ±1 тик.
Все — одинакового размера или кратны.
TTL — 1–3 секунды.
Появляются одновременно, исчезают "каскадом".
? Часто боты используют шаблон вида:
for offset in range(1, 5):
price = best_bid - offset * tick_size
place_limit_order(price, size)
3. Fake breakouts / stop-hunt
Уровень поддержки пробивается маркет-ордером.
Сразу после — серия небольших исполнений.
Возврат к предыдущему уровню за 5–10 секунд.
Видны ликвидации/слив стопов (если фьючерсы).
Где смотреть:
TensorCharts — тепловая карта стакана.
Coinalyze — CVD, Open Interest.
TradingLite — 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
_forever()
Это простейшая заготовка, которую можно доработать:
логировать TTL,
отмечать «аномальные» уровни (живут < 500 мс),
считать статистику по слоям BID/ASK.
Что делать с этим анализом
Логировать уровни и TTL — найти повторяющиеся паттерны.
Собирать heatmap по времени суток — когда spoofing активнее.
Подсвечивать аномалии прямо в UI/боте — показывать нестабильные уровни как «недостоверные».
Дополнительные материалы
High-Frequency Trading in Cryptocurrency Markets — исследование с реальными данными (arXiv)
Binance Order Book Explained (by Bitquery)
btb-manager-telegram — проект, где реализован Telegram-UI для бота с логами стакана
Любой, кто умеет парсить WebSocket, может начать фиксировать аномалии — и получать понимание, кто делает рынок, а кто бежит за ним. :)
Полезные материалы:
“The Psychology of Order Book Trading” by Tomas Nesnidal
Flash Boys 2.0 (HFT в крипте) — от Paradigm
Главное - понимать его структуру
Ты не обязaн «бороться» с манипуляциями — ты можешь:
Узнавать их по сигнатурам.
Оценивать достоверность сигналов по глубине стакана.
Фильтровать уровни по стабильности, TTL, плотности.
Принимать решения не из интерфейса, а из данных.
Заключение
Рынок — это поведение. Стакан — это язык.
Если ты научишься читать, а не реагировать, ты получишь преимущество, недоступное 90% участников.
Спасибо за то, что дочитал. Увидимся — в логах, графиках, и, возможно, в нашем клубе.
Если вы увлекаетесь ручной торговлей - трейдингом, то приглашаем в наш торговый чат. Для всех у нас открыты двери узнать поподробнее вы сможете в статье - ссылка.
У нас имеются открытые вакансии(не по айти специальности) подойдет для студентов, фрилансеров - ссылка на вакансии.
Если тебе близка эта аналитика — добро пожаловать.
Комментарии (9)
pnmv
28.05.2025 15:41что-то, на картинке залип:
и долго я стоял у печки, и думал, глядя сквозь стеллаж:
вот это - боты, там, у речки, или трёхбёдерный стакаж?
0xC0CAC01A
28.05.2025 15:41а исполнение не происходит ни разу.
А что именно произойдёт, если вы захотите исполнить именно эту заявку, причём очень быстро, пока она не исчезла?
Buharin
28.05.2025 15:41если вы захотите исполнить именно эту заявку
На бирже нет механизма, позволяющего исполнить "именно эту заявку". В этом и прелесть безадресных сделок. Даже если ты умудришься отправить встречный лимитный ордер по конкретной цене, в расчёте закрыться об эту заявку, всё равно не сработает - ты закроешься по рынку.
ЗЫ. Статья, в целом, верная. Но два голимых клоуна с красными шариками вместо носа уже влепили минусА.
0xC0CAC01A
28.05.2025 15:41Даже если ты умудришься отправить встречный лимитный ордер по конкретной цене, в расчёте закрыться об эту заявку, всё равно не сработает - ты закроешься по рынку.
Почему по рынку, если ордер лимитный?
Buharin
28.05.2025 15:41Потому что биржа должна закрыть его по наилучшей цене. Если ты выставишь лимитку на покупку по цене выше спреда, то тебя закроют по наименьшей цене продажи, т.е., по рынку.
CBET_TbMbI
28.05.2025 15:41Если ты научишься читать, а не реагировать, ты получишь преимущество, недоступное 90% участников.
Преимущество в 0,01%, которое готово исчезнуть в любой миг или обернуться успехом.
Гадание на кофейной гуще как раз в таких стаканах и происходит.
Если ты торгуешь вручную, то покупай по той цене, по какой готов купить. И продавай по той, по которой готов продать. Всё. Ботов ты всё равно не обгонишь. В стакан можно даже не заглядывать. Просто помни, что чем дальше твоя цена заявки от средней, тем меньше шансов на её исполнение.
Если ты торгуешь ботом, то извращайся, как хочешь. Но помни, что ботов и без тебя хватает и каждый хочет получить прибыль. В ликвидных инструментах в сумме эти все боты и куча обычных людей создают нечто близкое к математическому хаосу, предсказать который практически нереально. Но никто не запрещает пытаться. Брокеры и биржи будут рады взять комиссию за сделки.
octoMax
28.05.2025 15:41Я был работником одной из упомянутых недобирж. И однажды мне нужно было проверить некоторые изменения в коде, для чего потребовалось разместить заявки на покупку/продажу в стакан. Для этих целей у компании был "внутренний" контур, который получал поток сделок с "рынка" для рисования графиков и всякого прочего, но стакан был не настоящий - в смысле туда можно было ставить заявки только из этого внутреннего контура и можно было совершать сделки, которые естественно были не рыночны. Это было единственное отличие - сам код биржи ответственный за выставление и исполнение идентичен проду. И я с удивлением обраружил, что как только я пытался выставить свою заявку в стакан - практически всегда перед моей заявкой оказывалась еще одна. Так как стакан был дырявый я смог найти уровень когда мне удавалось быть первым, но для этого требовалось выставить цену на существенный % выше или ниже ближайшей. Т.е. в сам код биржи был встроен механизм который гарантированно ставил свой ордер перед клиентским. Я не копал это глубоко и не могу сказать делалось ли это на все тикеры или на какие-то особо ликвидные и не проверял как это исполняется. Но сам факт того, что этот лохотрон так нагло играет против клиентов был весьма забавен. Естественно биржа позиционирует себя как "самая клиенто-ориентированная"
Автору статьи большой респект за публикацию. Поставить плюсик не могу - оскорбленные хаброюзеры минусуют карму :-)
temadiary
на высокочастотную торговлю похоже
боты против ботов