StrategyPositionManager
戦略のポジション(金融商品+ポートフォリオ)を管理し、ポジションの数量、平均価格を計算し、注文実行からPnLと手数料を増分的に実現しました。また、ポジションの集計(ブロックされたボリュームとアクティブな購入/売り注文数)を増分更新(O(1)/注文更新、再スキャンなし)を介してキャッシュされたパーポジションの集計を維持します。
コンストラクター
public StrategyPositionManager(Func<string> strategyIdGetter)
strategyPositionManager = StrategyPositionManager(strategyIdGetter)
戦略のポジション(金融商品+ポートフォリオ)を管理し、ポジションの数量、平均価格を計算し、注文実行からPnLと手数料を増分的に実現しました。また、ポジションの集計(ブロックされたボリュームとアクティブな購入/売り注文数)を増分更新(O(1)/注文更新、再スキャンなし)を介してキャッシュされたパーポジションの集計を維持します。
- strategyIdGetter
- 新規作成にスタンプをつける、戻り値の識別子をStrategyId@に委譲する。
プロパティ
public Position[] Positions { get; }
value = strategyPositionManager.Positions
管理された位置(スレッドセーフコピー)のスナップショット配列。
public Func<string> StrategyIdGetter { get; }
value = strategyPositionManager.StrategyIdGetter
返された戦略 ID を新しいポジションに割り当てるのを委任します。
public int TrackedAggsCount { get; }
value = strategyPositionManager.TrackedAggsCount
public int TrackedFinishedOrdersCount { get; }
value = strategyPositionManager.TrackedFinishedOrdersCount
Number of terminal order states retained for replay detection.
public int TrackedOrderExecInfosCount { get; }
value = strategyPositionManager.TrackedOrderExecInfosCount
public int TrackedOrderTracksCount { get; }
value = strategyPositionManager.TrackedOrderTracksCount
メソッド
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.
public OrderResults ProcessOrder(Order order)
result = strategyPositionManager.ProcessOrder(order)
プロセス順序の状態の変更(調整、バランスの変更、部分的/完全な実行、キャンセル、完了)。
- order
- 加工注文
戻り値: 担当: 佐藤 宏
public void RemoveFinishedBefore(DateTime time)
strategyPositionManager.RemoveFinishedBefore(time)
Remove terminal order states older than .
- time
- Minimum order time to keep.
public void SetPosition(Security security, Portfolio portfolio, decimal value, DateTime time)
strategyPositionManager.SetPosition(security, portfolio, value, time)
現在の位置値を明示的に設定します(手動修復/オーバーライドのユーティリティ)。
- security
- 金融商品取引
- portfolio
- ポートフォリオ
- value
- 新規署名数量。
- time
- 位置が新しく作成される場合、LocalTimeおよびServerTimeに割り当てるタイムスタンプ。
public Position TryGetPosition(Security security, Portfolio portfolio)
result = strategyPositionManager.TryGetPosition(security, portfolio)
既存の位置インスタンスを 取得 して .
- security
- 金融商品取引
- portfolio
- ポートフォリオ
戻り値: 既存の位置か。
private void UpdateAggregates(Order order, Position position)
strategyPositionManager.UpdateAggregates(order, position)
注文(ブロックされたボリュームとカウント)の集計を増加させ、それらを .
public void UpdateCurrentPrice(SecurityId secId, decimal price, DateTime serverTime, DateTime localTime)
strategyPositionManager.UpdateCurrentPrice(secId, price, serverTime, localTime)
指定した全てのポジションの現在の(市場)価格を更新します。
- secId
- 金融商品識別子 値の更新が必要な位置。
- price
- 市場価格。
- serverTime
- サーバのタイムは、価格のスナップショットです。
- localTime
- 代金が処理されたときの現地時間。
イベント
public event Action<Position, bool> PositionProcessed
strategyPositionManager.PositionProcessed += handler
ポジションを処理した後の占領者(注文実行または集計に影響を与える注文状態の変更によって作成または更新)。