StrategyPositionManager

StockSharp.Algo.Strategies

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

StrategyPositionManager
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

Positions
public Position[] Positions { get; }
value = strategyPositionManager.Positions

Snapshot-Array von verwalteten Positionen (Thread-sichere Kopie).

StrategyIdGetter
public Func<string> StrategyIdGetter { get; }
value = strategyPositionManager.StrategyIdGetter

Delegieren Sie die Returning Strategy ID, um sie in neue Positionen zuzuweisen.

TrackedAggsCount
public int TrackedAggsCount { get; }
value = strategyPositionManager.TrackedAggsCount
TrackedFinishedOrdersCount
public int TrackedFinishedOrdersCount { get; }
value = strategyPositionManager.TrackedFinishedOrdersCount

Number of terminal order states retained for replay detection.

TrackedOrderExecInfosCount
public int TrackedOrderExecInfosCount { get; }
value = strategyPositionManager.TrackedOrderExecInfosCount
TrackedOrderTracksCount
public int TrackedOrderTracksCount { get; }
value = strategyPositionManager.TrackedOrderTracksCount

Methoden

IsProblem
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.

ProcessOrder
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

RemoveFinishedBefore
public void RemoveFinishedBefore(DateTime time)
strategyPositionManager.RemoveFinishedBefore(time)

Remove terminal order states older than .

time
Minimum order time to keep.
Reset
public void Reset()
strategyPositionManager.Reset()

Setzen Sie alle internen Caches zurück (Positionen, Ausführungsinformationen, Aggregate, Auftragstracks).

SetPosition
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.
TryGetPosition
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.

UpdateAggregates
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 .

UpdateCurrentPrice
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

PositionProcessed
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).