Ранбуки
Полный чек-лист готовности деска и сертификационные интеграционные тесты.
Чек-лист готовности деска
Перед запуском убедитесь, что:
Подключение к API
- Настроены продакшн-эндпоинты
- Эндпоинт проверки работоспособности (health check) отвечает
- WebSocket-соединение стабильно
Аутентификация
- Подпись EIP-712 работает
- Настроена авторизация агента (если применимо)
- Реализовано управление nonce
- Проверка подписи протестирована
Система котирования
- Протестировано массовое выставление заявок
- Проверена сверка жизненного цикла заявок
- Реализовано отслеживание исполнений
- Протестирована отмена заявок
Риск-контроль
- MMP настроен и протестирован
- Модель маржи понятна
- Ограничения уровня (tier) проверены
- Реализован мониторинг портфеля
Мониторинг
- Оформлена подписка на WebSocket-фиды
- Сверка заявок и исполнений автоматизирована
- Настроены проверки работоспособности
- Настроены алерты
Аварийный выключатель (kill switch)
- Возможность отменить все заявки
- Возможность немедленно отключиться
- Аварийные процедуры задокументированы
Хеджирование
- Проверена интеграция с перпами Hyperliquid
- Реализована стратегия дельта-хеджирования
- Расчёт маржи по перпам понятен
Расчёт
- Протестирована обработка экспирации
- Проверен расчёт по позициям
- Понятен источник референсной цены
Сертификационные интеграционные тесты
Тест 1: Выставление заявки
Шаги:
- Выставьте одну заявку через
POST /order - Убедитесь, что статус в ответе на заявку
ACKEDилиOPEN - Проверьте, что заявка отображается в
GET /orders?wallet=... - Убедитесь, что получено сообщение WebSocket
order_updates
Ожидаемый результат: заявка успешно выставлена, обновления статуса получены
Тест 2: Массовое выставление заявок
Шаги:
- Выставьте 10 заявок через
POST /bulk_order - Убедитесь, что все заявки приняты
- Проверьте статусы заявок через REST и WS
- Убедитесь в отсутствии ошибок подписи и авторизации
Ожидаемый результат: все заявки успешно выставлены
Тест 3: Отслеживание исполнений
Шаги:
- Выставьте заявку, которая будет исполнена
- Отслеживайте канал WebSocket
fills - Убедитесь, что исполнение получено с корректным
order_id - Проверьте, что исполнение отображается в
GET /fills?wallet=... - Убедитесь, что статус заявки сменился на
FILLED
Ожидаемый результат: исполнения отслеживаются корректно, статус заявки обновлён
Тест 4: Отслеживание частичных исполнений
Шаги:
- Выставьте заявку, которая будет исполнена частично
- Отслеживайте каналы WebSocket
fillsиorder_updates - Убедитесь, что частичное исполнение пришло в
fills - Убедитесь, что
order_updatesсообщаетPARTIALLY_FILLEDс накопленнымfilled_size - Агрегируйте исполнения по
order_idи проверьте, что сумма равнаfilled_size
Ожидаемый результат: объёмы по каждому исполнению приходят в fills, накопленный исполненный объём в order_updates
Тест 5: Отмена заявки
Шаги:
- Выставьте заявку через
POST /order - Отмените заявку через
DELETE /order - Убедитесь, что статус заявки
CANCELED - Проверьте, что получено сообщение WebSocket
order_updates
Ожидаемый результат: заявка успешно отменена, обновления статуса получены
Тест 6: Срабатывание MMP
Шаги:
- Настройте MMP через подписанный
POST /mmp-config. ПередайтеX-Hypercall-Fence-Wait: 1, если клиент сразу же будет читать проекцию, и сохраните возвращённое значениеX-Hypercall-Fence. - Выставьте заявки с включённым MMP
- Спровоцируйте срабатывание MMP, превысив лимиты
- Убедитесь, что заявки отменены с причиной MMP
- Проверьте, что остальные заявки с включённым MMP также отменены
Ожидаемый результат: MMP срабатывает корректно, заявки отменены
Чтение конфигурации MMP также требует аутентификации. Подпишите GetMmpConfig
и передайте срок действия и подпись в заголовках X-Hypercall-Expires-At-Ms и
X-Hypercall-Signature. Передайте в этом GET-запросе значение
X-Hypercall-Fence из ответа на запись, чтобы дождаться именно этой
зафиксированной конфигурации. Запись без X-Hypercall-Fence-Wait: 1 намеренно
не возвращает заголовок fence.
Тест 7: Отклонение по марже
Шаги:
- Выставьте заявку, превышающую доступную маржу
- Убедитесь, что заявка отклонена с причиной "Insufficient margin"
- Проверьте, что причина отклонения содержит значения требуемой маржи, капитала (equity) и дефицита
- Убедитесь, что статус заявки
REJECTED
Ожидаемый результат: заявка отклонена с понятной причиной
Тест 8: Ограничение уровня
Шаги:
- Используйте кошелёк, уровень которого допускает только покрытые продажи (проверьте
GET /risk/limits?wallet=...) - Попробуйте выставить заявку на продажу без длинной позиции
- Убедитесь, что заявка отклонена с причиной, связанной с уровнем
- Выставьте заявку на покупку (должна пройти)
- Выставьте заявку на продажу для закрытия позиции (должна пройти)
Ожидаемый результат: ограничения уровня применяются корректно
Тест 9: Переподключение WebSocket
Шаги:
- Подключитесь к WebSocket
- Подпишитесь на каналы
- Разорвите WebSocket-соединение
- Переподключитесь с экспоненциальной задержкой (backoff)
- Повторно подпишитесь на каналы
- Опросите REST, чтобы получить пропущенные обновления
Ожидаемый результат: переподключение работает, состояние восстановлено
Тест 10: Сверка портфеля
Шаги:
- Выставьте заявки и добейтесь их исполнения
- Проверьте портфель через
GET /portfolio?wallet=... - Убедитесь, что позиции соответствуют исполнениям
- Проверьте корректность использования маржи
- Сверьтесь с обновлениями WebSocket
portfolio
Ожидаемый результат: состояние портфеля точное, сверка успешна
Готовность к продакшну
Чек-лист перед продакшном
- Все интеграционные тесты пройдены
- Мониторинг и алерты настроены
- Аварийный выключатель протестирован
- Аварийные процедуры задокументированы
- Команда обучена реагированию на инциденты
- Определены контакты поддержки
Чек-лист запуска
- Сертификационные тесты пройдены в продакшне на малом объёме
- Продакшн-эндпоинты проверены
- Дашборды мониторинга готовы
- Алерты настроены
- Составлен график дежурств команды
- Документация проверена
Ссылки
- Быстрый старт: Быстрый старт
- Справочник API: REST API
- Ошибки и отклонения: Ошибки
- Плейбук по инцидентам: Инциденты