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); }
/// <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)); }
/// <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); }
/// <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)); }
/// <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); }