StrategyPositionManager

StockSharp.Algo.Strategies

Управляет стратегическими позициями (по финансовому инструменту + портфелю) и рассчитывает количество позиций, среднюю цену, реализованную PnL и комиссию, возрастающую от исполнения ордеров. Кроме того, поддерживается кэширование агрегатов по позициям (заблокированный объем и количество активных ордеров на покупку/продажу) посредством инкрементных обновлений (O(1) на каждое обновление ордера, без повторного сканирования).

Конструкторы

StrategyPositionManager
public StrategyPositionManager(Func<string> strategyIdGetter)
strategyPositionManager = StrategyPositionManager(strategyIdGetter)

Управляет стратегическими позициями (по финансовому инструменту + портфелю) и рассчитывает количество позиций, среднюю цену, реализованную PnL и комиссию, возрастающую от исполнения ордеров. Кроме того, поддерживается кэширование агрегатов по позициям (заблокированный объем и количество активных ордеров на покупку/продажу) посредством инкрементных обновлений (O(1) на каждое обновление ордера, без повторного сканирования).

strategyIdGetter
Делегируйте возврат идентификатора стратегии для отметки во вновь созданном StrategyId.

Свойства

Positions
public Position[] Positions { get; }
value = strategyPositionManager.Positions

Снимок массива управляемых позиций (поточно-безопасная копия).

StrategyIdGetter
public Func<string> StrategyIdGetter { get; }
value = strategyPositionManager.StrategyIdGetter

Делегат возвращает стратегию id для назначения на новые должности.

TrackedAggsCount
public int TrackedAggsCount { get; }
value = strategyPositionManager.TrackedAggsCount
TrackedOrderExecInfosCount
public int TrackedOrderExecInfosCount { get; }
value = strategyPositionManager.TrackedOrderExecInfosCount
TrackedOrderTracksCount
public int TrackedOrderTracksCount { get; }
value = strategyPositionManager.TrackedOrderTracksCount

Методы

ProcessOrder
public OrderResults ProcessOrder(Order order)
result = strategyPositionManager.ProcessOrder(order)

Процесс изменения состояния заказа (регистрация, изменение баланса, частичное/полное исполнение, отмена, выполнено).

order
Заказ на обработку.

Возвращает: OrderResults

Reset
public void Reset()
strategyPositionManager.Reset()

Сбросьте все внутренние кеши (позиции, информацию об исполнении, агрегаты, треки ордеров).

SetPosition
public void SetPosition(Security security, Portfolio portfolio, decimal value, DateTime time)
strategyPositionManager.SetPosition(security, portfolio, value, time)

Явно установить текущее значение позиции (утилита для ручного восстановления/переопределения).

security
финансовый инструмент.
portfolio
Портфолио.
value
Новое подписанное количество.
time
Временная метка, которая будет присвоена LocalTime и ServerTime, если позиция создается заново.
TryGetPosition
public Position TryGetPosition(Security security, Portfolio portfolio)
result = strategyPositionManager.TryGetPosition(security, portfolio)

Попробуйте получить существующий экземпляр позиции для и .

security
финансовый инструмент.
portfolio
Портфолио.

Возвращает: Существующая позиция или .

UpdateAggregates
private void UpdateAggregates(Order order, Position position)
strategyPositionManager.UpdateAggregates(order, position)

Постепенно обновляйте агрегаты для заказа (заблокированный объем и количество) и помещайте их в файл .

UpdateCurrentPrice
public void UpdateCurrentPrice(SecurityId secId, decimal price, DateTime serverTime, DateTime localTime)
strategyPositionManager.UpdateCurrentPrice(secId, price, serverTime, localTime)

Обновить текущую (рыночную) цену для всех позиций указанного .

secId
идентификатор финансового инструмента, позиции которого требуют обновления цен.
price
Новая рыночная цена.
serverTime
Серверное время моментального снимка цен.
localTime
Местное время, когда цена была обработана.

События

PositionProcessed
public event Action<Position, bool> PositionProcessed
strategyPositionManager.PositionProcessed += handler

Происходит после обработки позиции (созданной или обновленной в результате исполнения ордера или изменения состояния ордера, влияющего на агрегаты).