StrategyPositionManager
Verwaltet Strategiepositionen (pro Finanzinstrument + Portfolio) und berechnet Positionsmenge, Durchschnittspreis, realisiert PnL und Provision inkrementell aus Orderausführungen. Zusätzlich werden zwischengespeicherte Pro-Position-Aggregate (blockiertes Volumen und aktive Kauf- / Verkaufsaufträge) über inkrementelle Updates (O(1) pro Orderaktualisierung, keine Rescans) beibehalten.
Konstruktoren
public StrategyPositionManager(Func<string> strategyIdGetter)
strategyPositionManager = StrategyPositionManager(strategyIdGetter)
Verwaltet Strategiepositionen (pro Finanzinstrument + Portfolio) und berechnet Positionsmenge, Durchschnittspreis, realisiert PnL und Provision inkrementell aus Orderausführungen. Zusätzlich werden zwischengespeicherte Pro-Position-Aggregate (blockiertes Volumen und aktive Kauf- / Verkaufsaufträge) über inkrementelle Updates (O(1) pro Orderaktualisierung, keine Rescans) beibehalten.
- strategyIdGetter
- Delegieren Sie die Rückgabestrategie-Kennung, um in neu erstellte StrategyId zu stampfen.
Eigenschaften
public Position[] Positions { get; }
value = strategyPositionManager.Positions
Snapshot-Array von verwalteten Positionen (Thread-sichere Kopie).
public Func<string> StrategyIdGetter { get; }
value = strategyPositionManager.StrategyIdGetter
Delegieren Sie die Returning Strategy ID, um sie in neue Positionen zuzuweisen.
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
Methoden
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.
Rückgabe: Check result.
public OrderResults ProcessOrder(Order order)
result = strategyPositionManager.ProcessOrder(order)
Zustandsänderung der Prozessauftragseinstellung (Registrierung, Saldoänderung, teilweise/vollständige Ausführung, Stornierung, erfolgt).
- order
- Ordnung zu verarbeiten.
Rückgabe: OrderResults
public void RemoveFinishedBefore(DateTime time)
strategyPositionManager.RemoveFinishedBefore(time)
Remove terminal order states older than .
- time
- Minimum order time to keep.
public void Reset()
strategyPositionManager.Reset()
Setzen Sie alle internen Caches zurück (Positionen, Ausführungsinformationen, Aggregate, Auftragstracks).
public void SetPosition(Security security, Portfolio portfolio, decimal value, DateTime time)
strategyPositionManager.SetPosition(security, portfolio, value, time)
Setzen Sie den aktuellen Positionswert explizit ein (Nutzung für manuelle Wiederherstellung / Überschreiben).
- security
- Finanzinstrument.
- portfolio
- Portfolio.
- value
- Neue unterzeichnete Menge.
- time
- Zeitstempel, um LocalTime und ServerTime zuzuweisen, wenn die Position neu erstellt wird.
public Position TryGetPosition(Security security, Portfolio portfolio)
result = strategyPositionManager.TryGetPosition(security, portfolio)
Versuchen Sie, bestehende Position Instanz für und zu erhalten.
- security
- Finanzinstrument.
- portfolio
- Portfolio.
Rückgabe: Bestehende Position oder.
private void UpdateAggregates(Order order, Position position)
strategyPositionManager.UpdateAggregates(order, position)
Aktualisieren Sie die Aggregate für die Bestellung (gesperrtes Volumen und Zählungen) und schieben Sie sie in die .
public void UpdateCurrentPrice(SecurityId secId, decimal price, DateTime serverTime, DateTime localTime)
strategyPositionManager.UpdateCurrentPrice(secId, price, serverTime, localTime)
Aktualisieren Sie den aktuellen (Markt-) Preis für alle Positionen der angegebenen.
- secId
- Finanzinstrumentkennung, deren Positionen eine Preisaktualisierung benötigen.
- price
- Neuer Marktpreis.
- serverTime
- Serverzeit des Preis-Snapshots.
- localTime
- Ortszeit, zu der der Preis verarbeitet wurde.
Ereignisse
public event Action<Position, bool> PositionProcessed
strategyPositionManager.PositionProcessed += handler
Tritt auf, nachdem die Position verarbeitet wurde (erstellt oder aktualisiert durch eine Auftragsausführung oder eine Auftragszustandsänderung, die Aggregate beeinflusst).