MarketEmulator
Emulador de mercado v2 com arquitetura modular. Enrola MatchingEngineAdapter e adiciona lógica específica de emulação (volume aleatório, tiquetaque/L1→ conversão de livro de ordem, correspondência de velas, comissões, limites de preço).
Herda de: BaseLogReceiver
Implementa: IMarketEmulator, IMessageTransport, ILogSource, IDisposable
Construtores
public MarketEmulator(ISecurityProvider securityProvider, IPortfolioProvider portfolioProvider, IExchangeInfoProvider exchangeInfoProvider, IdGenerator transactionIdGenerator)
marketEmulator = MarketEmulator(securityProvider, portfolioProvider, exchangeInfoProvider, transactionIdGenerator)
Inicializa uma nova instância.
Propriedades
public override DateTime CurrentTime { get; }
value = marketEmulator.CurrentTime
Hora atual do UTC.
public IExchangeInfoProvider ExchangeInfoProvider { get; }
value = marketEmulator.ExchangeInfoProvider
Bolsas e conselhos de negociação provedor.
public IncrementalIdGenerator OrderIdGenerator { get; set; }
value = marketEmulator.OrderIdGenerator
marketEmulator.OrderIdGenerator = value
Gerador de identificação de encomendas.
public EmulatedPortfolioManager PortfolioManager { get; }
value = marketEmulator.PortfolioManager
Gestor de carteira para lidar com o estado de portfólio.
public IPortfolioProvider PortfolioProvider { get; }
value = marketEmulator.PortfolioProvider
A carteira a ser usada para registrar ordens. Se o valor não for dado, a carteira com o nome padrão Simulator será criada.
public IEnumerable<MessageTypeInfo> PossibleSupportedMessages { get; }
value = marketEmulator.PossibleSupportedMessages
Possíveis tipos de mensagens suportadas.
public long ProcessedMessageCount { get; private set; }
value = marketEmulator.ProcessedMessageCount
marketEmulator.ProcessedMessageCount = value
Contagem de mensagens processada.
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
O fornecedor de informações sobre instrumentos.
public MarketEmulatorSettings Settings { get; }
value = marketEmulator.Settings
Configuração do emulador.
public IncrementalIdGenerator TradeIdGenerator { get; set; }
value = marketEmulator.TradeIdGenerator
marketEmulator.TradeIdGenerator = value
Gerador de identificação comercial.
public IdGenerator TransactionIdGenerator { get; }
value = marketEmulator.TransactionIdGenerator
Gerador de identificação de transação.
public bool VerifyMode { get; set; }
value = marketEmulator.VerifyMode
marketEmulator.VerifyMode = value
Modo de verificação alargado.
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.
Retorna: 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)
Envie mensagem.
Eventos
public event Func<Message, CancellationToken, ValueTask> NewOutMessageAsync
marketEmulator.NewOutMessageAsync += handler
Novo evento de mensagem.