Beispiel #1
0
        public static OrderAddUpdateSummaryMessage Parse(string message)
        {
            var values = message.SplitFeedMessage();

            // as this message type can service 4 different domain message types, it's sensible to keep the MessageType as part of the message
            Enum.TryParse <Level2MessageType>(values[0], out var messageType);
            var symbol = values[1];

            UInt64.TryParse(values[2], NumberStyles.Any, CultureInfo.InvariantCulture, out var orderId);
            var mmid = values[3];

            Level2SideParser.TryParse(values[4], out var side);
            double.TryParse(values[5], NumberStyles.Any, CultureInfo.InvariantCulture, out var price);
            int.TryParse(values[6], NumberStyles.Any, CultureInfo.InvariantCulture, out var size);
            UInt64.TryParse(values[7], NumberStyles.Any, CultureInfo.InvariantCulture, out var orderPriority);
            int.TryParse(values[8], NumberStyles.Any, CultureInfo.InvariantCulture, out var precision);
            TimeSpan.TryParseExact(values[9], UpdateMessageTimeFormat, CultureInfo.InvariantCulture, TimeSpanStyles.None, out var orderTime);
            DateTime.TryParseExact(values[10], UpdateMessageDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out var orderDate);

            return(new OrderAddUpdateSummaryMessage(
                       messageType,
                       symbol,
                       orderId,
                       mmid,
                       side,
                       price,
                       size,
                       orderPriority,
                       precision,
                       orderTime,
                       orderDate
                       ));
        }
Beispiel #2
0
        public static PriceLevelDeleteMessage Parse(string message)
        {
            var values = message.SplitFeedMessage();
            // as this message type can service 4 different domain message types, it's sensible to keep the MessageType as part of the message
            Enum.TryParse<Level2MessageType>(values[0], out var messageType);
            var symbol = values[1];
            Level2SideParser.TryParse(values[2], out var side);
            double.TryParse(values[3], NumberStyles.Any, CultureInfo.InvariantCulture, out var price);
            TimeSpan.TryParseExact(values[4], UpdateMessageTimeFormat, CultureInfo.InvariantCulture, TimeSpanStyles.None, out var time);
            DateTime.TryParseExact(values[5], UpdateMessageDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date);

            return new PriceLevelDeleteMessage
            (
                messageType,
                symbol,
                side,
                price,
                time,
                date
            );
        }
        public static OrderDeleteMessage Parse(string message)
        {
            var values = message.SplitFeedMessage();

            // as this message type can service 4 different domain message types, it's sensible to keep the MessageType as part of the message
            Enum.TryParse <Level2MessageType>(values[0], out var messageType);
            var symbol = values[1];

            UInt64.TryParse(values[2], NumberStyles.Any, CultureInfo.InvariantCulture, out var orderId);
            // values[3] is reserved in protocol 6.2
            Level2SideParser.TryParse(values[4], out var side);
            TimeSpan.TryParseExact(values[5], UpdateMessageTimeFormat, CultureInfo.InvariantCulture, TimeSpanStyles.None, out var orderTime);
            DateTime.TryParseExact(values[6], UpdateMessageDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out var orderDate);

            return(new OrderDeleteMessage
                   (
                       messageType,
                       symbol,
                       orderId,
                       side,
                       orderTime,
                       orderDate
                   ));
        }