Skip to main content
Стратегия Ziplime от Финама — это Python-файл с функциями жизненного цикла. Создавать подкласс не нужно: определите функции, которые должен вызывать Ziplime, а состояние стратегии храните в context.

Каркас файла

initialize(context)

Требуется для большинства стратегий. Ziplime вызывает эту функцию один раз перед первым баром. Используйте её, чтобы:
  • Найти инструменты.
  • Сохранить константы и изменяемое состояние в context.
  • Зарегистрировать функции, запускаемые по расписанию.
  • Настроить торговые ограничения.
  • Подключить пайплайны.
  • Прочитать конфигурацию алгоритма из context.algorithm.config.
Не размещайте заявки в initialize. Функции работы с заявками доступны только после инициализации.

handle_data(context, data)

Основная функция торговой логики. Ziplime вызывает её на каждом баре с периодичностью, заданной параметром симуляции emission_rate. Используйте её, чтобы:
  • Получать текущие и исторические значения из data.
  • Рассчитывать сигналы.
  • Проверять денежные средства, позиции и открытые заявки.
  • Размещать, приводить к целевому значению или отменять заявки.
  • Записывать метрики в итоговую таблицу.

before_trading_start(context, data)

Необязательная функция. Ziplime вызывает её один раз за торговую сессию до обычной обработки баров. В текущей версии среды функция вызывается синхронно, поэтому определяйте её через def, а не через async def. Используйте её, чтобы:
  • Сбросить дневное состояние.
  • Получить результат пайплайна.
  • Подготовить список инструментов на день.
Не размещайте здесь заявки: во время выполнения before_trading_start функции работы с заявками явно запрещены.

analyze(context, perf)

Необязательная функция. Ziplime вызывает её один раз после завершения симуляции. В текущей версии среды функция вызывается синхронно, поэтому определяйте её через def, а не через async def. perf — итоговая таблица результатов, созданная исполнителем. В неё входят переменные, записанные с помощью context.record(...).

Хранение состояния

Все данные, которые должны сохраняться между барами, записывайте в атрибуты context:
Не полагайтесь на изменяемые глобальные переменные модуля для хранения состояния стратегии. Их сложнее сбрасывать между запусками и анализировать в тестах.

Конфигурация алгоритма

Если в файле алгоритма определён подкласс BaseAlgorithmConfig, Ziplime может загрузить его из JSON-конфигурации, переданной в run_simulation(..., config_file=...).
Пример JSON:

Частые ошибки