MarketEmulator
Emulador de mercado v2 con arquitectura modular. Wraps MatchingEngineAdapter y añade lógica específica de emulación (volúmenes de arandela, cambio de marca/L1→orderbook, cervecería, comisiones, límites de precios).
Hereda de: BaseLogReceiver
Implementa: IMarketEmulator, IMessageTransport, ILogSource, IDisposable
Constructores
public MarketEmulator(ISecurityProvider securityProvider, IPortfolioProvider portfolioProvider, IExchangeInfoProvider exchangeInfoProvider, IdGenerator transactionIdGenerator)
marketEmulator = MarketEmulator(securityProvider, portfolioProvider, exchangeInfoProvider, transactionIdGenerator)
Inicia una nueva instancia.
Propiedades
public override DateTime CurrentTime { get; }
value = marketEmulator.CurrentTime
Hora actual de la UTC.
public IExchangeInfoProvider ExchangeInfoProvider { get; }
value = marketEmulator.ExchangeInfoProvider
Intercambios y proveedores de juntas comerciales.
public IncrementalIdGenerator OrderIdGenerator { get; set; }
value = marketEmulator.OrderIdGenerator
marketEmulator.OrderIdGenerator = value
Generador de identificación de pedidos.
public EmulatedPortfolioManager PortfolioManager { get; }
value = marketEmulator.PortfolioManager
Gerente de cartera para el estado de la cartera.
public IPortfolioProvider PortfolioProvider { get; }
value = marketEmulator.PortfolioProvider
El portafolio que se utilizará para registrar pedidos. Si no se da valor, se creará la cartera con nombre predeterminado Simulator.
public IEnumerable<MessageTypeInfo> PossibleSupportedMessages { get; }
value = marketEmulator.PossibleSupportedMessages
Posibles tipos de mensajes apoyados.
public long ProcessedMessageCount { get; private set; }
value = marketEmulator.ProcessedMessageCount
marketEmulator.ProcessedMessageCount = value
Cuenta de mensaje procesada.
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
El proveedor de información sobre instrumentos.
public MarketEmulatorSettings Settings { get; }
value = marketEmulator.Settings
Ajustes de emulador.
public IncrementalIdGenerator TradeIdGenerator { get; set; }
value = marketEmulator.TradeIdGenerator
marketEmulator.TradeIdGenerator = value
Generador de identificación comercial.
public IdGenerator TransactionIdGenerator { get; }
value = marketEmulator.TransactionIdGenerator
Generador de identificación de transacciones.
public bool VerifyMode { get; set; }
value = marketEmulator.VerifyMode
marketEmulator.VerifyMode = value
Modo de verificación ampliado.
Métodos
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.
Devuelve: 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)
Envía mensaje.
Eventos
public event Func<Message, CancellationToken, ValueTask> NewOutMessageAsync
marketEmulator.NewOutMessageAsync += handler
Nuevo evento de mensaje.