public void OnMessage(CollateralReport message) { Debug.NotNull(this.tradingGateway, nameof(this.tradingGateway)); var inquiryId = message.GetField(Tags.CollRptID); var accountNumber = message.GetField(Tags.Account); this.Logger.LogDebug($"{Received}{Fix} {nameof(CollateralReport)}(InquiryId={inquiryId}, AccountNumber={accountNumber})."); var cashBalance = message.GetDecimal(Tags.CashOutstanding); var cashStartDay = message.GetDecimal(Tags.StartCash); var cashDaily = message.GetDecimal(FxcmTags.CashDaily); var marginUsedMaintenance = message.GetDecimal(FxcmTags.UsedMarginMaintenance); var marginUsedLiq = message.GetDecimal(FxcmTags.UsedMarginLiquidation); var marginRatio = message.GetDecimal(Tags.MarginRatio); var marginCallStatus = message.GetField(FxcmTags.MarginCall); var accountEvent = new AccountStateEvent( this.accountId, this.accountCurrency, Money.Create(cashBalance, this.accountCurrency), Money.Create(cashStartDay, this.accountCurrency), Money.Create(cashDaily, this.accountCurrency), Money.Create(marginUsedLiq, this.accountCurrency), Money.Create(marginUsedMaintenance, this.accountCurrency), marginRatio, marginCallStatus, this.NewGuid(), this.TimeNow()); this.tradingGateway?.Send(accountEvent); }