Функции по расписанию
context.schedule_function(func, date_rule=None, time_rule=None, half_days=True, calendar=None)
Регистрирует асинхронную функцию обратного вызова с той же сигнатурой, что и handle_data.
time_rule, потому что на одну сессию приходится только один бар. В минутных симуляциях важны и правило даты, и правило времени.
Правила дат
Импортируйте их изziplime.utils.events или ziplime.api.
Примеры:
Правила времени
Смещение должно составлять от 1 минуты до 12 часов.
Примеры:
Торговые календари
Параметрcalendar метода schedule_function принимает объект торгового календаря. Для российского контура обычно лучше не передавать его явно: тогда Ziplime использует календарь симуляции, настроенный для MOEX.
calendar объект, зарегистрированный в вашей среде. Не подменяйте его строкой MIC: тип параметра и доступные константы зависят от конфигурации среды.
before_trading_start и функции по расписанию
Используйте before_trading_start для ежедневной подготовки, которую нужно завершить до выполнения торговой логики.
Функции по расписанию подходят для торговых действий в заданный момент сессии.
Торговые ограничения
Ограничения обычно настраивают вinitialize.
Только длинные позиции
Максимальное кредитное плечо
run_simulation(..., max_leverage=...) также регистрирует ограничение плеча.
Максимальный размер позиции
max_notional в примере равно 5 000 000 рублей. Передайте asset, чтобы ограничение действовало только для этого инструмента, или asset=None, чтобы применить его ко всем инструментам.
Максимальный размер заявки
max_notional задаётся в валюте портфеля.
Максимальное число заявок
Поведение при ошибке
Большинство ограничений по умолчанию принимаетon_error="fail". В зависимости от реализации ограничения значение "fail" вызывает исключение при нарушении правила. Используйте режимы без исключения только тогда, когда осознанно хотите лишь записывать нарушения в журнал или игнорировать их.
Ограничения по инструментам
Методcontext.set_asset_restrictions(restrictions, on_error="fail") регистрирует список запрещённых инструментов.
Классы ограничений доступны в ziplime.finance.asset_restrictions и через ziplime.api:
Политики отмены
Импортируйте их изziplime.finance.cancel_policy или ziplime.api.
Настройка комиссии и проскальзывания
В бэктестах модели исполнения чаще всего настраиваются вrun_simulation(...):
PerDollar — неизменяемое имя класса API; модель применяется к денежному обороту в валюте расчётов среды, в российском контуре обычно в рублях.
Совместимые с Zipline методы context.set_commission(...) и context.set_slippage(...) доступны во время инициализации. Используйте их только тогда, когда конфигурация биржи и blotter рассчитана на модели уровня context. Для стандартного вызова run_simulation предпочтительнее явные параметры функции запуска.