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
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
位置处理后发生情况( 命令执行或命令状态变化创建或更新影响聚合) 。