MatchingEngineAdapter
基于消息匹配引擎适配器。 包含纯匹配逻辑而不模拟(无随机、 无烛光匹配、 无佣金) 。 执行 IMessageTransport 以消息为主的整合 。
构造函数
public MatchingEngineAdapter()
matchingEngineAdapter = MatchingEngineAdapter()
初始化一个新实例。
属性
public IncrementalIdGenerator OrderIdGenerator { get; set; }
value = matchingEngineAdapter.OrderIdGenerator
matchingEngineAdapter.OrderIdGenerator = value
点出身份证的发电机
public virtual EmulatedPortfolioManager PortfolioManager { get; }
value = matchingEngineAdapter.PortfolioManager
处理组合状态的组合管理器 。
public IEnumerable<SecurityMessage> Securities { get; }
value = matchingEngineAdapter.Securities
Every security the venue has stated a definition for.
public MatchingEngineSettings Settings { get; }
value = matchingEngineAdapter.Settings
匹配引擎设置 。
public IStopOrderManager StopOrderManager { get; }
value = matchingEngineAdapter.StopOrderManager
停止订单管理器(只读访问).
public IncrementalIdGenerator TradeIdGenerator { get; set; }
value = matchingEngineAdapter.TradeIdGenerator
matchingEngineAdapter.TradeIdGenerator = value
交易身份证生成器。
public IdGenerator TransactionIdGenerator { get; set; }
value = matchingEngineAdapter.TransactionIdGenerator
matchingEngineAdapter.TransactionIdGenerator = value
内部使用的交易 ID 生成器( 组取消, 关闭位置) 。
方法
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)
对照价格检查停止订单,并启动订单。
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.
返回值: 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.
返回值: 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.
返回值: 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)
获取或创建特定金融工具的金融工具状态.
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)
处理一个消息并收集结果。 直接调用( 不发送自动同步) 。
public void ProcessOrderCancel(OrderCancelMessage cancelMsg, List<Message> results)
matchingEngineAdapter.ProcessOrderCancel(cancelMsg, results)
处理令被取消.
public void ProcessOrderRegister(OrderRegisterMessage regMsg, List<Message> results)
matchingEngineAdapter.ProcessOrderRegister(regMsg, results)
流程令登记.
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.
返回值: The absolute level.
public ValueTask SendOutMessageAsync(Message message, CancellationToken cancellationToken)
result = matchingEngineAdapter.SendOutMessageAsync(message, cancellationToken)
发出消息。
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.
返回值: 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.
返回值: The reason the registration must be refused, or when it is allowed.
事件
public event Func<Message, CancellationToken, ValueTask> NewOutMessageAsync
matchingEngineAdapter.NewOutMessageAsync += handler
新消息事件 。