예제 #1
0
        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);
        }