MarketEmulator

StockSharp.Algo.Testing.Emulation

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

MarketEmulator
public MarketEmulator(ISecurityProvider securityProvider, IPortfolioProvider portfolioProvider, IExchangeInfoProvider exchangeInfoProvider, IdGenerator transactionIdGenerator)
marketEmulator = MarketEmulator(securityProvider, portfolioProvider, exchangeInfoProvider, transactionIdGenerator)

Inicializa uma nova instância.

Propriedades

CurrentTime
public override DateTime CurrentTime { get; }
value = marketEmulator.CurrentTime

Hora atual do UTC.

ExchangeInfoProvider
public IExchangeInfoProvider ExchangeInfoProvider { get; }
value = marketEmulator.ExchangeInfoProvider

Bolsas e conselhos de negociação provedor.

OrderIdGenerator
public IncrementalIdGenerator OrderIdGenerator { get; set; }
value = marketEmulator.OrderIdGenerator
marketEmulator.OrderIdGenerator = value

Gerador de identificação de encomendas.

PortfolioManager
public EmulatedPortfolioManager PortfolioManager { get; }
value = marketEmulator.PortfolioManager

Gestor de carteira para lidar com o estado de portfólio.

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

PossibleSupportedMessages
public IEnumerable<MessageTypeInfo> PossibleSupportedMessages { get; }
value = marketEmulator.PossibleSupportedMessages

Possíveis tipos de mensagens suportadas.

ProcessedMessageCount
public long ProcessedMessageCount { get; private set; }
value = marketEmulator.ProcessedMessageCount
marketEmulator.ProcessedMessageCount = value

Contagem de mensagens processada.

RandomProvider
public IEmulationRandomizer RandomProvider { get; set; }
value = marketEmulator.RandomProvider
marketEmulator.RandomProvider = value

Where anything in the strategy that draws at random takes its draws from.

SecurityProvider
public ISecurityProvider SecurityProvider { get; }
value = marketEmulator.SecurityProvider

O fornecedor de informações sobre instrumentos.

Settings
public MarketEmulatorSettings Settings { get; }
value = marketEmulator.Settings

Configuração do emulador.

TradeIdGenerator
public IncrementalIdGenerator TradeIdGenerator { get; set; }
value = marketEmulator.TradeIdGenerator
marketEmulator.TradeIdGenerator = value

Gerador de identificação comercial.

TransactionIdGenerator
public IdGenerator TransactionIdGenerator { get; }
value = marketEmulator.TransactionIdGenerator

Gerador de identificação de transação.

VerifyMode
public bool VerifyMode { get; set; }
value = marketEmulator.VerifyMode
marketEmulator.VerifyMode = value

Modo de verificação alargado.

Métodos

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

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

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

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

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

SendOutMessageAsync
public ValueTask SendOutMessageAsync(Message message, CancellationToken cancellationToken)
result = marketEmulator.SendOutMessageAsync(message, cancellationToken)

Envie mensagem.

Eventos

NewOutMessageAsync
public event Func<Message, CancellationToken, ValueTask> NewOutMessageAsync
marketEmulator.NewOutMessageAsync += handler

Novo evento de mensagem.