Stage 05.8 - quantity normalization by exchange rules

This commit is contained in:
2026-04-20 20:18:03 +03:00
parent c36e43f5e8
commit 034b455059
20 changed files with 839 additions and 140 deletions

View File

@@ -0,0 +1,70 @@
# Stage 05.8 — Quantity Normalization by Exchange Rules
# Stage 05.8 — Нормализация количества по правилам биржи
## Кратко
Добавлена единая нормализация quantity во всем flow создания и редактирования ордера.
Количество теперь всегда:
- соответствует stepSize
- не меньше minQty
- учитывает minNotional
- отображается без float-артефактов
---
## Что сделано
- Нормализация quantity вынесена в сервис (`OrderDraftsService`)
- Одинаковая логика для preset и ручного ввода
- Для LIMIT без цены используется рыночный reference price
- Убраны хвосты типа `0.0050000003`
- Количество стабильно на всех шагах FSM
---
## Поведение
### Малое значение
Если пользователь вводит слишком маленькое количество:
- система автоматически корректирует до допустимого (если возможно)
- иначе показывает ошибку
### LIMIT без цены
- minNotional считается через рынок (ask/bid)
- не нужно ждать ввода цены
---
## Затронутые файлы
- app/src/trading/orders/service.py
- app/src/telegram/handlers/trade/new_order_flow.py
---
## Changelog
### Added
- Нормализация quantity по stepSize, minQty, minNotional
- Автокоррекция при ручном вводе
### Changed
- Flow quantity переведен на normalize_entry_quantity
- Preset quantity проходит через те же правила
### Fixed
- Убраны float-артефакты
- Исправлена рассинхронизация quantity между шагами
---
## Breaking Changes
- quantity теперь может автоматически изменяться системой
(например: 0.000001 → 0.0002)
- normalize_quantity больше не используется как финальный результат
- для LIMIT без цены используется reference price