Position – виртуальные позиции роботов в OsEngine. Отличие от PositionOnBoard.

Position – виртуальные позиции роботов в OsEngine. Отличие от PositionOnBoard.

В прошлых статьях мы уже знакомились с таким понятием как позиция. Поговорим об экземплярах класса Position подробнее.

Position — это объектно-ориентированные представления n-го количества ордеров, объединенных вместе общими причинами создания. К таковым относятся: необходимость робота оперировать группами ордеров как единым целым, создавать разнонаправленные позиции, вести несколько позиций в рамках одной стратегии. Сам терминал получает возможность проводить анализ, сопровождать позиций, устанавливать стопы и профиты, использовать режим эмуляции, собирать статистические показатели.

Каждая позиция имеет свой жизненный цикл. В зависимости от действий алгоритма в нормальных условиях состояние позиции изменяется с Opening на Done. Общая схема жизни позиции представлена на следующей диаграмме:

Рис. 1. Жизненный цикл позиции.

В OsEngine есть такая полезная функциональность, как торговля в режиме эмуляции. Данный режим позволяет проверить стратегию в ситуациях, максимально приближенных к реальной торговле. По сути, робот работает в боевом режиме, получает реальные данные с биржи. Единственное отличие от реалтайм торговли заключается в том, что ордера не высылаются на биржу, а эмулируются системой. При этом робот оперирует только позициями, ничего не подозревая об эмуляции. 

Из кода включить/выключить режим эмуляции можно при помощи свойства: 

public bool OnOffEmulatorsInTabs

Оно находится в базовом для всех роботов классе BotPanel. Также можно включать эмуляцию отдельно для каждой вкладки при помощи свойства:

public bool EmulatorIsOn

Из пользовательского интерфейса так же есть доступ к этой функциональности:


Рис. 2. Настройка режима эмуляции.

Необходимо различать позиции на бирже и позиции в терминале. Биржевая позиция отображает совокупный объем по инструменту, принадлежащий клиенту. В OsEngine описывается классом PositionOnBoard, по сути, используется только для предоставления информации и никакой функциональной нагрузки не несет. Объект Position же в свою очередь является неотъемлемой частью любого робота и содержит только тот объем, который был набран его открывающими ордерами. 

12:22
157
FAQ

Комментарии

Нет комментариев. Ваш будет первым!