コード例 #1
0
        private static Order DeserializeOrder <T>(string json) where T : Order
        {
            var converter      = new OrderJsonConverter();
            var reader         = new JsonTextReader(new StringReader(json));
            var jsonSerializer = new JsonSerializer();

            jsonSerializer.Converters.Add(converter);
            var actual = jsonSerializer.Deserialize <Order>(reader);

            return(actual);
        }
コード例 #2
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var token = JToken.ReadFrom(reader);
            // Takes the Type field and selects the correct OrderType instance
            var orderTypeValue = token["Type"].Value <string>();
            int orderTypeNumber;
            var orderType = Parse.TryParse(orderTypeValue, NumberStyles.Any, out orderTypeNumber) ?
                            orderTypeNumber :
                            (int)(OrderType)Enum.Parse(typeof(OrderType), orderTypeValue, true);

            token["Type"] = orderType;
            return(OrderJsonConverter.CreateOrderFromJObject((JObject)token));
        }
コード例 #3
0
        public void RoundTripUsingJsonConverter(string timeInForceStr)
        {
            TimeInForce timeInForce = null;

            switch (timeInForceStr)
            {
            case "Day":
                timeInForce = TimeInForce.Day;
                break;

            case "GoodTilCanceled":
                timeInForce = TimeInForce.GoodTilCanceled;
                break;

            case "GoodTilDate":
                timeInForce = TimeInForce.GoodTilDate(DateTime.UtcNow);
                break;
            }
            var expected = new MarketOnOpenOrder(Symbol.Create("SPY", SecurityType.Equity, Market.USA), 1m, DateTime.UtcNow)
            {
                Id           = 1,
                ContingentId = 0,
                BrokerId     = new List <string> {
                    "1"
                },
                Price               = 321.66m,
                PriceCurrency       = "USD",
                LastFillTime        = DateTime.UtcNow,
                LastUpdateTime      = DateTime.UtcNow,
                CanceledTime        = DateTime.UtcNow,
                Status              = OrderStatus.Filled,
                OrderSubmissionData = new OrderSubmissionData(321.47m, 321.48m, 321.49m),
                Properties          = { TimeInForce = timeInForce }
            };

            var converter  = new OrderJsonConverter();
            var serialized = JsonConvert.SerializeObject(expected, converter);
            var actual     = JsonConvert.DeserializeObject <Order>(serialized, converter);

            CollectionAssert.AreEqual(expected.BrokerId, actual.BrokerId);
            Assert.AreEqual(expected.ContingentId, actual.ContingentId);
            Assert.AreEqual(expected.Direction, actual.Direction);
            Assert.AreEqual(expected.TimeInForce.GetType(), actual.TimeInForce.GetType());
            Assert.AreEqual(expected.Id, actual.Id);
            Assert.AreEqual(expected.Price, actual.Price);
            Assert.AreEqual(expected.PriceCurrency, actual.PriceCurrency);
            Assert.AreEqual(expected.SecurityType, actual.SecurityType);
            Assert.AreEqual(expected.Status, actual.Status);
            Assert.AreEqual(expected.Symbol, actual.Symbol);
            Assert.AreEqual(expected.Tag, actual.Tag);
            Assert.AreEqual(expected.Time, actual.Time);
            Assert.AreEqual(expected.CreatedTime, actual.CreatedTime);
            Assert.AreEqual(expected.LastFillTime, actual.LastFillTime);
            Assert.AreEqual(expected.LastUpdateTime, actual.LastUpdateTime);
            Assert.AreEqual(expected.CanceledTime, actual.CanceledTime);
            Assert.AreEqual(expected.Type, actual.Type);
            Assert.AreEqual(expected.Value, actual.Value);
            Assert.AreEqual(expected.Quantity, actual.Quantity);
            Assert.AreEqual(expected.TimeInForce.GetType(), actual.TimeInForce.GetType());
            Assert.AreEqual(expected.Symbol.ID.Market, actual.Symbol.ID.Market);
            Assert.AreEqual(expected.OrderSubmissionData.AskPrice, actual.OrderSubmissionData.AskPrice);
            Assert.AreEqual(expected.OrderSubmissionData.BidPrice, actual.OrderSubmissionData.BidPrice);
            Assert.AreEqual(expected.OrderSubmissionData.LastPrice, actual.OrderSubmissionData.LastPrice);
        }