MarketEmulator
Marktemulator v2 mit modularer Architektur. Wraps MatchingEngineAdapter und fügt emulationsspezifische Logik hinzu (zufällige Volumina, Tick / L1 → Orderbuchumwandlung, Kerzenabgleich, Provisionen, Preislimits).
Erbt von: BaseLogReceiver
Implementiert: IMarketEmulator, IMessageTransport, ILogSource, IDisposable
Konstruktoren
public MarketEmulator(ISecurityProvider securityProvider, IPortfolioProvider portfolioProvider, IExchangeInfoProvider exchangeInfoProvider, IdGenerator transactionIdGenerator)
marketEmulator = MarketEmulator(securityProvider, portfolioProvider, exchangeInfoProvider, transactionIdGenerator)
Initialisiert eine neue Instanz.
Eigenschaften
public override DateTime CurrentTime { get; }
value = marketEmulator.CurrentTime
Aktuelle UTC-Zeit.
public IExchangeInfoProvider ExchangeInfoProvider { get; }
value = marketEmulator.ExchangeInfoProvider
Börsen und Handelsbörsen Anbieter.
public IncrementalIdGenerator OrderIdGenerator { get; set; }
value = marketEmulator.OrderIdGenerator
marketEmulator.OrderIdGenerator = value
Auftrags-ID-Generator.
public EmulatedPortfolioManager PortfolioManager { get; }
value = marketEmulator.PortfolioManager
Portfoliomanager für den Umgang mit Portfolio-Zustand.
public IPortfolioProvider PortfolioProvider { get; }
value = marketEmulator.PortfolioProvider
Das Portfolio, das zur Registrierung von Aufträgen verwendet wird. Wird der Wert nicht angegeben, wird das Portfolio mit dem Standardnamen Simulator erstellt.
public IEnumerable<MessageTypeInfo> PossibleSupportedMessages { get; }
value = marketEmulator.PossibleSupportedMessages
Mögliche unterstützte Nachrichtentypen.
public long ProcessedMessageCount { get; private set; }
value = marketEmulator.ProcessedMessageCount
marketEmulator.ProcessedMessageCount = value
Anzahl der verarbeiteten Nachrichten.
public IEmulationRandomizer RandomProvider { get; set; }
value = marketEmulator.RandomProvider
marketEmulator.RandomProvider = value
Where anything in the strategy that draws at random takes its draws from.
public ISecurityProvider SecurityProvider { get; }
value = marketEmulator.SecurityProvider
Der Anbieter von Informationen über Instrumente.
public MarketEmulatorSettings Settings { get; }
value = marketEmulator.Settings
Emulatoreinstellungen.
public IncrementalIdGenerator TradeIdGenerator { get; set; }
value = marketEmulator.TradeIdGenerator
marketEmulator.TradeIdGenerator = value
Handelskennung-Generator.
public IdGenerator TransactionIdGenerator { get; }
value = marketEmulator.TransactionIdGenerator
Transaktions-ID-Generator.
public bool VerifyMode { get; set; }
value = marketEmulator.VerifyMode
marketEmulator.VerifyMode = value
Erweiterter Verifizierungsmodus.
Methoden
private ValueTask ApplyCommissionsAsync(List<Message> messages, CancellationToken cancellationToken)
result = marketEmulator.ApplyCommissionsAsync(messages, cancellationToken)
Price every trade in this batch. Called once, where the batch leaves the emulator.
private void CheckLimitOrders(SecurityId securityId, decimal? tradePrice, DateTime time, List<Message> results)
marketEmulator.CheckLimitOrders(securityId, tradePrice, time, results)
Re-evaluate resting limit orders against the current order book and execute the ones the market has moved through. Unlike stop orders, limit orders are otherwise matched only at registration time, so a tick/quote trading through a resting limit would leave it sitting in the book and later fill at a price the market has left behind.
public SecurityState GetSecurityState(SecurityId securityId)
result = marketEmulator.GetSecurityState(securityId)
State the emulation keeps for one security: its book, its orders and its definition.
- securityId
- Security to read.
Rückgabe: The state.
private void ReleaseStoredCandles(DateTime time, List<Message> results)
marketEmulator.ReleaseStoredCandles(time, results)
Hand over every bar still held whose close falls no later than , each at its own close and in order.
private void ReplayCandle(SecurityId securityId, SecurityEmulator emulator, CandleMessage candle, DateTime time, List<Message> results)
marketEmulator.ReplayCandle(securityId, emulator, candle, time, results)
Replay a closed candle as the prices it recorded, in the order it recorded them.
public ValueTask SendOutMessageAsync(Message message, CancellationToken cancellationToken)
result = marketEmulator.SendOutMessageAsync(message, cancellationToken)
Senden Sie eine Nachricht.
Ereignisse
public event Func<Message, CancellationToken, ValueTask> NewOutMessageAsync
marketEmulator.NewOutMessageAsync += handler
Neues Nachrichtenereignis.