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

代表返回战略 身份 分配到新的职位。

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

位置处理后发生情况( 命令执行或命令状态变化创建或更新影响聚合) 。