SimulationExchange, а для реальной торговли zipfinam подставляет FinamExchange и запускает тот же файл стратегии. Заявки уходят на ваш счёт в Финаме через Finam Trade API.
Установка
Учётные данные и счёт
Арена и боевой Trade API работают по одному протоколу, разница только в адресе. Начинайте с Арены и переключайтесь на реальный счёт осознанно.
Запуск
Реальная торговля запускается черезrun_simulation_iter — тот же движок, что и в бэктесте, но с часами реального времени и биржей Финама:
asset_service и bundle готовятся так же, как для бэктеста: бандл даёт историю для индикаторов на первом тике, а свежие бары приходят от Финама. Полный рабочий скрипт — examples/run_live_finam.py в репозитории zipfinam.
Что делает адаптер
- Стратегии выделяется капитал, а не весь счёт. С
capital_limitвызовorder_target_percent(0.5)означает половину бюджета стратегии, а не половину брокерского счёта. - Лоты. Объём округляется вниз до целых лотов (GAZP — по 10 бумаг). Если размер лота неизвестен, заявка не отправляется вовсе: наугад ничего не торгуется. Остаток меньше лота не отправляется.
- Принятая заявка ≠ исполненная. После каждого тика статус заявок запрашивается у брокера через
refresh_order_states(), и отклонённая заявка отмечается как ошибка, а не как успех. - Котировки, бары и размеры лотов всегда берутся из Trade API. Есть и вариант биржи поверх gRPC —
FinamGrpcExchange.
Перед запуском на реальном счёте
- Проведите бэктест с исполнением на следующем баре и реальной комиссией (
equity_commission=PerDollar(...)), а не с нулевой комиссией CLI по умолчанию. - Убедитесь, что каждый
TICKER@MIC, которым вы торгуете, находится в базе инструментов. - Сначала прогоните стратегию на Арене, затем переходите на реальный счёт с небольшим
capital_limit.

