Development системы журналирования сделок торгового бота
Журнал сделок — это не просто история операций. Это источник правды для расчёта P&L, основа для анализа стратегий, доказательная база при спорах с биржей и инструмент отладки. Плохой logging — и вы не понимаете, почему бот потерял деньги три дня назад.
Что нужно логировать
Минимальный набор полей для каждой сделки:
- trade_id — уникальный идентификатор в системе бота
- exchange_trade_id — идентификатор на стороне биржи (для сверки)
- symbol — торговая пара
- side — buy/sell
- order_type — market/limit/stop
- quantity — количество
- execution_price — реальная цена исполнения (не planned!)
- fee — комиссия в базовой или котировочной валюте
- fee_currency — в чём взяли комиссию
- strategy_id — какая стратегия инициировала сделку
- signal_id — ссылка на сигнал, породивший сделку
- timestamp — UTC, с миллисекундами
- exchange_timestamp — время на стороне биржи
Дополнительно: slippage (разница между planned и executed price), latency (время от сигнала до подтверждения fill), partial fills если ордер исполнился частями.
Reconciliation с биржей
Внутренний журнал должен сверяться с данными биржи. Расхождения бывают: задержавшийся webhook, дублированное событие, потеря соединения в момент fill. Periodic reconciliation запрашивает trade history с биржи за последние N часов и сравнивает с внутренним журналом.
При расхождении — не паниковать, а разобраться: либо добавить пропущенную сделку, либо пометить сомнительную как требующую проверки. Автоматически исправлять опасно.
Хранение и доступ
PostgreSQL с индексами по timestamp, strategy_id, symbol. Для аналитических запросов типа «все сделки стратегии A за прошлый месяц с group by day» — достаточно. Партиционирование по месяцам при больших объёмах.
Экспорт в CSV для внешнего анализа в Excel или Python pandas — обязательная функция. Трейдеры любят Excel.
Система журналирования — фундамент всего аналитического слоя бота. Без неё P&L считается приблизительно, а отладка стратегий превращается в угадайку.







