Пример #1
0
            public bool Process(Level1ChangeMessage message)
            {
                if (HasDepth)
                {
                    return(false);
                }

                var bidPrice = message.Changes.TryGetValue(Level1Fields.BestBidPrice);
                var askPrice = message.Changes.TryGetValue(Level1Fields.BestAskPrice);

                if (bidPrice == null && askPrice == null)
                {
                    return(false);
                }

                var bidVolume = message.Changes.TryGetValue(Level1Fields.BestBidVolume);
                var askVolume = message.Changes.TryGetValue(Level1Fields.BestAskVolume);

                _bid.Price  = bidPrice == null ? 0 : (decimal)bidPrice;
                _bid.Volume = bidVolume == null ? 0 : (decimal)bidVolume;

                _ask.Price  = askPrice == null ? 0 : (decimal)askPrice;
                _ask.Volume = askVolume == null ? 0 : (decimal)askVolume;

                _localTime  = message.LocalTime;
                _serverTime = message.ServerTime;

                return(true);
            }
Пример #2
0
        /// <summary>
        /// Get last tick trade price.
        /// </summary>
        /// <param name="message">Market depth.</param>
        /// <returns>The middle of spread. Is <see langword="null" />, if quotes are empty.</returns>
        public static decimal?GetLastTradePrice(this Level1ChangeMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            return((decimal?)message.Changes.TryGetValue(Level1Fields.LastTradePrice));
        }
Пример #3
0
        /// <summary>
        /// Create a copy of <see cref="Level1ChangeMessage"/>.
        /// </summary>
        /// <returns>Copy.</returns>
        public override Message Clone()
        {
            var clone = new Level1ChangeMessage
            {
                SecurityId = SecurityId,
            };

            CopyTo(clone);

            return(clone);
        }
Пример #4
0
        /// <summary>
        /// Get middle of spread.
        /// </summary>
        /// <param name="message">Market depth.</param>
        /// <returns>The middle of spread. Is <see langword="null" />, if quotes are empty.</returns>
        public static decimal?GetSpreadMiddle(this Level1ChangeMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            var bestBid = (decimal?)message.Changes.TryGetValue(Level1Fields.BestBidPrice);
            var bestAsk = (decimal?)message.Changes.TryGetValue(Level1Fields.BestAskPrice);

            return(bestBid.GetSpreadMiddle(bestAsk));
        }
Пример #5
0
        /// <summary>
        /// Create a copy of <see cref="Level1ChangeMessage"/>.
        /// </summary>
        /// <returns>Copy.</returns>
        public override Message Clone()
        {
            var msg = new Level1ChangeMessage
            {
                LocalTime  = LocalTime,
                SecurityId = SecurityId,
                ServerTime = ServerTime,
            };

            msg.Changes.AddRange(Changes);

            return(msg);
        }