Skip to main content
Используйте функции по расписанию, если стратегия должна выполняться в определённое время, а не на каждом баре. Ограничения позволяют применять простые правила управления рисками до принятия заявок.

Функции по расписанию

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=...) также регистрирует ограничение плеча.

Максимальный размер позиции

Для портфеля в RUB значение 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 предпочтительнее явные параметры функции запуска.