MatchingEngineAdapter
Adaptador de motor de conexión basado en mensajes. Contiene lógica de juego pura sin emulación (sin azar, sin cervecería, sin comisiones). Implementa IMessageTransport@ para la integración basada en mensajes.
Implementa: IMessageTransport
Constructores
public MatchingEngineAdapter()
matchingEngineAdapter = MatchingEngineAdapter()
Inicia una nueva instancia.
Propiedades
public IncrementalIdGenerator OrderIdGenerator { get; set; }
value = matchingEngineAdapter.OrderIdGenerator
matchingEngineAdapter.OrderIdGenerator = value
Generador de identificación de pedidos.
public virtual EmulatedPortfolioManager PortfolioManager { get; }
value = matchingEngineAdapter.PortfolioManager
Gerente de cartera para el estado de la cartera.
public IEnumerable<SecurityMessage> Securities { get; }
value = matchingEngineAdapter.Securities
Every security the venue has stated a definition for.
public MatchingEngineSettings Settings { get; }
value = matchingEngineAdapter.Settings
Ajustes de motor coincidentes.
public IStopOrderManager StopOrderManager { get; }
value = matchingEngineAdapter.StopOrderManager
Detener el administrador de pedidos (acceso sólo lectura).
public IncrementalIdGenerator TradeIdGenerator { get; set; }
value = matchingEngineAdapter.TradeIdGenerator
matchingEngineAdapter.TradeIdGenerator = value
Generador de identificación comercial.
public IdGenerator TransactionIdGenerator { get; set; }
value = matchingEngineAdapter.TransactionIdGenerator
matchingEngineAdapter.TransactionIdGenerator = value
Generador de id de transacciones para uso interno (con cancelación de grupos, posiciones cercanas).
Métodos
public void AddPositionRevaluations(DateTime time, List<Message> results)
matchingEngineAdapter.AddPositionRevaluations(time, results)
Report again every open position whose floating profit the market has moved since it was last reported.
- time
- Time of the move.
- results
- Messages to add the reports to.
private void AdoptActiveOrder(ExecutionMessage execMsg, Sides side, List<Message> results)
matchingEngineAdapter.AdoptActiveOrder(execMsg, side, results)
Takes an order that is already standing somewhere else into this book, exactly as it is.
public void CheckStopOrders(SecurityId securityId, decimal price, DateTime time, List<Message> results)
matchingEngineAdapter.CheckStopOrders(securityId, price, time, results)
Revisa las órdenes de parada contra un precio y el proceso desencadenaron órdenes.
public static PositionChangeMessage CreatePortfolioUpdate(EmulatedPortfolio portfolio, DateTime time)
result = MatchingEngineAdapter.CreatePortfolioUpdate(portfolio, time)
The money row stating what an account holds: its realized and unrealized result, what its working orders hold, and what it can trade with now.
- portfolio
- The account the row is about.
- time
- Time to stamp the row with.
Devuelve: The row.
public PositionChangeMessage CreatePositionUpdate(EmulatedPortfolio portfolio, SecurityId securityId, DateTime serverTime, DateTime localTime)
result = matchingEngineAdapter.CreatePositionUpdate(portfolio, securityId, serverTime, localTime)
Create the message that reports one position of an account: its size, entry price and floating profit.
- portfolio
- The account.
- securityId
- Security ID.
- serverTime
- Server time.
- localTime
- Local time.
Devuelve: The position update.
private StopOrderInfo CreateStopInfo(OrderRegisterMessage regMsg, string error)
result = matchingEngineAdapter.CreateStopInfo(regMsg, error)
Reads the stop the registration's condition describes, or when it describes none and the order is an ordinary one.
- regMsg
- Registration to read.
- error
- Why the condition describes a stop that cannot be placed, or when it describes one that can, or none at all.
Devuelve: The stop to rest, or .
public void EmitRegistrationResult(OrderRegisterMessage regMsg, EmulatorOrder order, MatchResult matchResult, ExecutionMessage replyMsg, Func<ExecutionMessage, decimal?> chargeCommission, List<Message> results)
matchingEngineAdapter.EmitRegistrationResult(regMsg, order, matchResult, replyMsg, chargeCommission, results)
Turn a match into the messages it owes: the order rows, the trades, the maker side of each fill, the positions and the portfolio updates.
- regMsg
- The registration this is answering.
- order
- The order as the matcher saw it.
- matchResult
- What the matcher decided.
- replyMsg
- The acceptance row already published, mutated when the order ends here.
- chargeCommission
- Prices a trade before the position is booked from it, or null.
- results
- Where the messages go.
public void ForgetBook(SecurityId securityId)
matchingEngineAdapter.ForgetBook(securityId)
Forgets the book stated so far for , so an incremental feed has to state a whole one again before its increments are folded in. Used when a venue has gone quiet on depth: what it sends after the break describes a market its old base no longer holds.
- securityId
- Security whose stated book is forgotten.
private static decimal? GetChargedPrice(OrderRegisterMessage regMsg, SecurityState state)
result = MatchingEngineAdapter.GetChargedPrice(regMsg, state)
Price the order will be charged at: its own price when it names one, the opposite best for a market order.
public SecurityState GetSecurityState(SecurityId securityId)
result = matchingEngineAdapter.GetSecurityState(securityId)
Obtenga o cree un estado de instrumento financiero para el instrumento financiero dado.
private static void NameAccountOn(List<Message> results, int from, OrderRegisterMessage regMsg)
MatchingEngineAdapter.NameAccountOn(results, from, regMsg)
States the account and the instrument on each transactional row from onwards that is missing them.
public void ProcessMessage(Message message, List<Message> results)
matchingEngineAdapter.ProcessMessage(message, results)
Procese un mensaje y recoja los resultados. Se puede llamar directamente (sin envío de asinc).
public void ProcessOrderCancel(OrderCancelMessage cancelMsg, List<Message> results)
matchingEngineAdapter.ProcessOrderCancel(cancelMsg, results)
Cancelación del pedido del proceso.
public void ProcessOrderRegister(OrderRegisterMessage regMsg, List<Message> results)
matchingEngineAdapter.ProcessOrderRegister(regMsg, results)
Registro de pedidos de procesos.
public void ProcessTime(DateTime time, List<Message> results)
matchingEngineAdapter.ProcessTime(time, results)
Retire orders whose expiry has been reached and release the reservation held by their balance.
- time
- Current engine time.
- results
- Where generated lifecycle and portfolio messages are added.
private static decimal ResolveActivationPercent(decimal marketPrice, decimal percent, Sides side, bool invertTrigger)
result = MatchingEngineAdapter.ResolveActivationPercent(marketPrice, percent, side, invertTrigger)
The level a stop rests at when its activation price states a distance from the market rather than a price of its own: that far above the market for one that fires on a rise, that far below it for one that fires on a fall.
- marketPrice
- Price the instrument is at.
- percent
- Distance from it, in percent.
- side
- Order side.
- invertTrigger
- Whether the stop fires on the opposite move, as a take-profit does.
Devuelve: The absolute level.
public ValueTask SendOutMessageAsync(Message message, CancellationToken cancellationToken)
result = matchingEngineAdapter.SendOutMessageAsync(message, cancellationToken)
Envía mensaje.
private decimal? TryGetLastTradePrice(SecurityId securityId)
result = matchingEngineAdapter.TryGetLastTradePrice(securityId)
The price the instrument last traded at, as far as this engine has been told.
- securityId
- Instrument to read.
Devuelve: The price, or when the venue has stated none.
public InvalidOperationException ValidateRegistration(OrderRegisterMessage regMsg, decimal? chargedPrice)
result = matchingEngineAdapter.ValidateRegistration(regMsg, chargedPrice)
Check whether the registration is allowed: the instrument is trading, there is a market to price the order at, and the account can afford it.
- regMsg
- Registration to check.
- chargedPrice
- Price the order will actually be charged at, or when the book offers none.
Devuelve: The reason the registration must be refused, or when it is allowed.
Eventos
public event Func<Message, CancellationToken, ValueTask> NewOutMessageAsync
matchingEngineAdapter.NewOutMessageAsync += handler
Nuevo evento de mensaje.