Защитные механизмы системы
Некоторые действия пользователей — намеренные и не очень — могут вредить как системе, так и самим пользователям, эти действия совершающим. Во избежание последствий, негативных для всех, в системе предусмотрены несколько параллельно действующих защитных механизмов.
Социальный рейтинг
Механизм социального рейтинга защищает систему от возможных перегрузок, вызванных действиями пользователей и их торговых роботов. Принцип работы прост: каждое действие оценивается в баллах, при достижении лимита которых пользователь будет заблокирован.
Логика работы механизма
Для подсчёта баллов в механизме социального рейтинга используются два независимых счётчика, разделённых по разным секциям системы: один для запросов рыночных данных (котировки, анонимные сделки и т.д.), другой — для запросов на управление заявками (в том числе получение данных о них).
Помимо разных секций системы счётчики отличаются также и отслеживаемыми интерфейсами. Так, счётчик секции рыночных данных отслеживает только WebSocket, тогда как счётчик секции управления заявками — WebSocket и REST запросы. Превышение лимита блокирует доступ ко всем отслеживаемым интерфейсам секции системы. GraphQL API не отслеживается ни одним из счётчиков.
Счётчики привязаны к логину клиента, в связи с чем распространяются на все портфели и рынки в рамках выделенной секции. При этом каждый из счётчиков при достижении лимита отрезает доступ только к тем интерфейсам и той секции системы, за которые отвечает. Таким образом, блокировка доступа к рыночной информации не помешает пользователю выставлять заявки или запрашивать данные через другой интерфейс.
Блокировка носит временный характер и снимается автоматически через 2 часа после наложения. Если проблема была устранена раньше, блокировку можно снять досрочно через техническую поддержку.
Сброс набранных счётчиком ошибок происходит в двух случаях:
- При начале нового дня;
- При снятии блокировки.
При этом стоит учитывать, что счётчики не только накапливаются, но и сбрасываются независимо друг от друга. Например, снятие блокировки по одному счётчику никак не повлияет на другой.
Автоматическая блокировка не несёт за собой последствий кроме временного отсутствия доступа к одной из секций системы. Тем не менее, при подозрении на злонамеренность мы оставляем за собой право на индивидуальные меры воздействия.
Действия и баллы
Из соображений безопасности мы не публикуем полный список действий, отслеживаемых системой. Тем не менее, для общего понимания ниже приведены несколько примеров отслеживаемых действий с их фактической стоимостью:
| Действие | Стоимость, баллов |
|---|---|
| Установка WebSocket-соединения | 1 |
| Подписка на поток | 1 |
| Переполнение буфера сообщений по подписке | 1000 |
| Запрос несуществующей заявки | 100 |
| Ошибка сериализации запроса (некорректный json) | 5000 |
Список отслеживаемых действий и их стоимость могут быть изменены без дополнительных оповещений.
Лимит
В описании механизма социального рейтинга упоминается лимит баллов, при достижении которого пользователь будет заблокирован, но его точное значение не указано. Это сделано осознанно во избежание ситуаций, при которых пользователи будут лишь формально соблюдать лимит, балансируя при этом на грани.
Краткая сводка
- Применяется на всех секциях биржи;
- Использует два счётчика: запросов рыночных данных и команд на управление заявками;
- Учитываются все действия: как ошибочные, так и корректные;
- Счётчики независимы друг от друга и начисляются обособленно;
- Счётчик для рыночных данных отслеживает только WebSocket, для управления заявками — WebSocket и REST;
- Разные действия имеют разную стоимость (или скорость наполнения счётчика) в баллах;
- Превышение лимита баллов по счётчику временно ограничивает доступ к соответствующей части системы;
- Ограничение по одному счётчику не затрагивает функционал, покрываемый другим счётчиком;
- Срок действия блокировки — 2 часа;
- Блокировку можно снять досрочно через техническую поддержку;
- За превышение лимита нет последствий кроме временной блокировки, но при подозрении на умышленный спам ошибками могут быть приняты индивидуальные меры.
Защитная блокировка на срочном рынке
Московская биржа может применять собственные меры воздействия к пользователям, массово отправляющим заведомо неисполнимые запросы: от дополнительного денежного сбора до временной блокировки логина.
Механизм блокировки на срочном рынке предназначен помочь пользователям минимизировать последствия от совершённых ими ошибочных действий.
Механизм считает ошибки, возвращённые биржей. Блокировка пользователя помогает уменьшить последствия от биржи, но не отменяет их.
Логика работы механизма
Для контроля в механизме защитной блокировки используются отдельные счётчики — по одному на каждый отслеживаемый тип ошибки. При достижении лимита по любому из счётчиков система ограничивает доступ пользователя к управлению заявками до устранения причин некорректного поведения.
Механизм действует только на срочном рынке и не распространяется на другие биржевые секции: ошибки с других рынков не учитываются и ограничения на них не распространяются. На срочном же рынке система учитывает все ошибки, совершённые как через HTTP API, так и через WebSocket. GraphQL API не учитывается механизмом из-за природы отслеживаемых запросов.
Счётчики механизма независимы друг от друга, в связи с чем их значения не суммируются — пользователь не будет заблокирован даже если все счётчики будут иметь значение limit - 1 одновременно. В то же время достижение пользователем лимита по нескольким счётчикам означает столько же следующих друг за другом блокировок.
Блокировка носит временный характер и снимается автоматически через срок, указанный для конкретного типа ошибки. Досрочное снятие ограничений не предусмотрено. После снятия блокировки включается 60-секундный период охлаждения, в течение которого механизм начнёт подсчёт новых ошибок, но не будет принимать в отношении пользователя никаких действий. Если за этот период количество ошибок вновь превысит лимит, по его истечению пользователя ждёт повторная блокировка.
Сброс набранных счётчиком ошибок происходит в двух случаях:
- При начале нового дня;
- При снятии блокировки.
При этом стоит учитывать, что счётчики не только накапливаются, но и сбрасываются независимо друг от друга. Например, снятие блокировки по счётчику Заявка не найдена никак не повлияет на счётчик Инструмент не найден.
Сброс счётчиков механизма не влияет на биржу. Если механизм трижды заблокировал пользователя за спам ошибками Заявка не найдена, биржа учла в своих расчётах не менее 1200 штрафных баллов.
Действия и баллы
Механизм защитной блокировки отслеживает те же типы ошибок, что и биржа. Разница в максимально допустимом количестве:
| Тип ошибки | Лимит | Срок блокировки, сек. |
|---|---|---|
Торговая сессия приостановлена либо закрыта | 400 | 1800 |
Инструмент не найден | 400 | 1800 |
Неопределенная (или неизвестная) ошибка с биржи | 2000 | 1800 |
Возникла кросс-сделка | 400 | 1800 |
Недостаточно средств клиента | 400 | 1800 |
Недостаточно средств брокерской фирмы | 400 | 1800 |
Заявка FOK не сведена | 400 | 1800 |
Заявка не найдена | 400 | 1800 |
Тип ошибки Транзакция завершена успешно и не удалено ни одной заявки (0) в настоящий момент не отслеживается механизмом. Будьте осторожны при отправке запроса на снятие всех заявок.
Список отслеживаемых действий, их стоимость и лимиты, а также срок блокировки могут быть изменены без дополнительных оповещений.
Краткая сводка
- Применяется только на срочном рынке, не затрагивая остальные сектора биржи;
- Для каждого типа ошибки используется свой счётчик;
- При достижении лимита пользователю временно блокируется доступ к торгам, но только на срочном рынке. Лимиты и срок блокировки указаны выше;
- Блокировка снимается только автоматически, возможности снять ограничения вручную не предусмотрено;
- Снятие блокировки обнуляет только тот счётчик, по которому произошла блокировка, что делает возможным повторную блокировку по другим счётчикам после снятия первой;
- После снятия блокировки по счётчику действует 60-секундный период, в течение которого ошибки подсчитываются, но новая блокировка не применяется;
- Все ошибки, зафиксированные механизмом, также зафиксированы (и использованы в расчёте дополнительного сбора) и биржей.