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 TrackedOrderExecInfosCount { get; }
value = strategyPositionManager.TrackedOrderExecInfosCount
public int TrackedOrderTracksCount { get; }
value = strategyPositionManager.TrackedOrderTracksCount
Methoden
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 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).