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
TrackedFinishedOrdersCount
public int TrackedFinishedOrdersCount { get; }
value = strategyPositionManager.TrackedFinishedOrdersCount

Number of terminal order states retained for replay detection.

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

Методы

IsProblem
public static bool IsProblem(OrderResults result)
result = StrategyPositionManager.IsProblem(result)

Whether the result reports a problem rather than ordinary order flow. A snapshot of an order that is not active yet, one for an order with no position, and a repeat of a final snapshot are all expected traffic; a fill going backwards or being dropped is not.

result
Processing result.

Возвращает: Check result.

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

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

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

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

RemoveFinishedBefore
public void RemoveFinishedBefore(DateTime time)
strategyPositionManager.RemoveFinishedBefore(time)

Remove terminal order states older than .

time
Minimum order time to keep.
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

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