[CL-RADAR] radar-live: InvalidRequestError «ab not enough for new order» — нет обработки нехватки available balance (Sentry ARNOLD-TRADER-BW) #514

Closed
opened 2026-07-21 21:09:52 +00:00 by andrei · 0 comments
Owner

Находка Sentry-триажа 2026-07-22

Sentry: ARNOLD-TRADER-BW, InvalidRequestError: ab not enough for new order, n=4, последнее 2026-07-21 00:57Z, environment=hetzner-production-candidate.

Проблема

bot/radar_live.pyhandle_alerts_place_with_mode_retrypybit place_order. Bybit отвечает «ab not enough» (available balance меньше требуемого для ордера). _place_with_mode_retry обрабатывает ТОЛЬКО position-mode mismatch (retry с positionIdx=2); нехватка баланса пролетает raise'ом наверх → Sentry error, вход пропущен без graceful-обработки.

Гонка: сайзинг считается по балансу на момент оценки; к моменту place параллельные fills/комиссии съедают available. Микро-сайз pilot'а не спасает при нескольких одновременных сигналах.

Предлагаемое направление (решает radar-workstream)

  1. Ловить balance-insufficient (retMsg/код Bybit) в месте вызова: логировать INFO (не error), скипать вход — сигнал потерян легально, это не exception-класс.
  2. Опционально: pre-check available balance перед place с клампом qty вниз до доступного (с учётом плеча/OC), либо однократный retry с уменьшенным qty.
  3. Тест на ветку «ab not enough» (mock pybit response).

Файл в активном рефакторе radar isolation — фиксить в рамках этого workstream, отдельный PR не заводился сознательно (избежание конфликта).

Триаж: сессия Sentry-inbox 2026-07-22. Sentry issue оставлен unresolved до фикса.

## Находка Sentry-триажа 2026-07-22 **Sentry:** ARNOLD-TRADER-BW, `InvalidRequestError: ab not enough for new order`, n=4, последнее 2026-07-21 00:57Z, environment=hetzner-production-candidate. ## Проблема `bot/radar_live.py` → `handle_alerts` → `_place_with_mode_retry` → `pybit place_order`. Bybit отвечает «ab not enough» (available balance меньше требуемого для ордера). `_place_with_mode_retry` обрабатывает ТОЛЬКО position-mode mismatch (retry с `positionIdx=2`); нехватка баланса пролетает raise'ом наверх → Sentry error, вход пропущен без graceful-обработки. Гонка: сайзинг считается по балансу на момент оценки; к моменту place параллельные fills/комиссии съедают available. Микро-сайз pilot'а не спасает при нескольких одновременных сигналах. ## Предлагаемое направление (решает radar-workstream) 1. Ловить balance-insufficient (retMsg/код Bybit) в месте вызова: логировать INFO (не error), скипать вход — сигнал потерян легально, это не exception-класс. 2. Опционально: pre-check available balance перед place с клампом qty вниз до доступного (с учётом плеча/OC), либо однократный retry с уменьшенным qty. 3. Тест на ветку «ab not enough» (mock pybit response). Файл в активном рефакторе radar isolation — фиксить в рамках этого workstream, отдельный PR не заводился сознательно (избежание конфликта). _Триаж: сессия Sentry-inbox 2026-07-22. Sentry issue оставлен unresolved до фикса._
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/arnold-trader-app#514
No description provided.