Skip to main content
Заявки размещаются асинхронными вызовами методов context. Вызывайте их в handle_data или в запланированных функциях обратного вызова. Не размещайте заявки в initialize и before_trading_start.

Стили исполнения

Импортируйте стили исполнения из ziplime.finance.execution.
Для рублёвых инструментов MOEX цены в этих примерах выражены в рублях; в общем случае используется валюта котировки инструмента.

Фиксированное количество

await context.order(asset, amount, style, exchange_name=None)

Положительное значение amount открывает или увеличивает длинную позицию либо закрывает короткую. Отрицательное значение продаёт инструмент или открывает короткую позицию.
Лимитная заявка:

Целевое количество

await context.order_target(asset, target, style, exchange_name=None)

Изменяет позицию до целевого количества акций или контрактов.

Доля портфеля

await context.order_target_percent(asset, target, style, exchange_name=None, reserved_percentage_for_fees=0.05)

Изменяет позицию до целевого веса в портфеле. Значение target должно находиться в диапазоне от -1 до 1.
Это основной вспомогательный метод для стратегий с ребалансировкой.

await context.order_percent(asset, percent, style, exchange_name=None)

Изменяет позицию на долю текущей стоимости портфеля. Это не целевое значение: метод добавляет или сокращает экспозицию относительно текущей позиции.

Денежная стоимость

await context.order_target_value(asset, target, style, exchange_name=None)

Изменяет позицию до целевой номинальной стоимости в валюте портфеля.

context.order_value(...)

order_value присутствует как совместимый с Zipline метод для заявок на приращение денежной стоимости. В текущем коде стратегий Ziplime предпочтительнее использовать order_target_value, order_percent или order, если вы отдельно не проверили, что ваш путь исполнения поддерживает нужное поведение order_value.

Открытые заявки

context.get_open_orders(asset=None)

Возвращает открытые на текущий момент заявки. Передайте инструмент, чтобы отфильтровать результат.

context.get_order(order_id, exchange_name)

Возвращает заявку по идентификатору.
Имя "MOEX" должно совпадать со значением exchange_name в конфигурации запуска.

await context.cancel_order(order_id, exchange_name, relay_status=True)

Отменяет открытую заявку.

Возвращаемый объект заявки

Методы работы с заявками возвращают объект Order или None, если заявка не была размещена. Полезные поля:

Момент исполнения

При run_simulation(..., same_bar_execution=True) заявки, отправленные в handle_data, могут исполниться на том же баре. При same_bar_execution=False они исполняются на одном из следующих баров. Цена исполнения определяется параметром price_used_in_order_execution со значением "open", "close", "low" или "high", а также настроенной моделью проскальзывания.

Предупреждение о целевых заявках

Целевые методы не учитывают автоматически открытые заявки, которые ещё не исполнились. Следующий код может создать избыточный объём заявок:
Более безопасный вариант:

Ребалансировка с равными весами