public decimal CalculateFee(Order.ORDER_TYPE orderType,decimal quantity, decimal price)
        {
            if (orderType == Order.ORDER_TYPE.NA) return -1;

            CryptsyResponse response = CryptsyQuery(true, new Dictionary<string, string>() { { "method", "calculatefees" },{"ordertype",orderType==Order.ORDER_TYPE.BUY ? "Buy" : "Sell"},{"quantity",quantity.ToString(CultureInfo.InvariantCulture)}, {"price",price.ToString(CultureInfo.InvariantCulture)} });

            if (response.Success)
            {
                JObject o = (JObject)response.Data;
                if (o != null)
                    return o.Value<decimal>("fee");
                else
                    return -1;
            }
            else
                return -1;
        }
        public static Order ReadFromJObject(JObject o, Int64 marketID = -1, ORDER_TYPE orderType = ORDER_TYPE.NA)
        {
            if (o == null)
                return null;

            var order = new Order()
            {
                Price = o.Value<decimal>("price"),
                Quantity = o.Value<decimal>("quantity"),
                Total = o.Value<decimal>("total"),
                OriginalQuantity = o.Value<decimal?>("orig_quantity") ?? -1,
                MarketID = o.Value<Int64?>("marketid") ?? marketID,

                //If ordertype is present, use it, if not: use the ordertype passed to the method
                OrderType = o.Value<string>("ordertype") == null ? orderType : (o.Value<string>("ordertype").ToLower() == "buy" ? ORDER_TYPE.BUY : ORDER_TYPE.SELL)

            };

            order.CreatedUTC = o.Value<DateTime?>("created");
            if (order.CreatedUTC != null)
                order.CreatedUTC = TimeZoneInfo.ConvertTime((DateTime)order.CreatedUTC, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"), TimeZoneInfo.Utc); //Convert to UTC

            return order;
        }
        public OrderResult CreateOrder(Int64 marketID, Order.ORDER_TYPE orderType, decimal quantity, decimal price)
        {
            if (orderType == Order.ORDER_TYPE.NA) return new OrderResult() { Success = false, OrderID = -1, Message = "orderType must be BUY or SELL." };

            CryptsyResponse response = CryptsyQuery(true, new Dictionary<string, string>() {
            { "method", "createorder" },
            {"marketid",marketID.ToString() },
            {"ordertype",orderType==Order.ORDER_TYPE.BUY?"Buy":"Sell"},
            {"quantity",quantity.ToString(CultureInfo.InvariantCulture)},
            {"price",price.ToString(CultureInfo.InvariantCulture)}});

            if (response.Success)
                return new OrderResult() { Success = true, OrderID = response.OrderID, Message = response.Info };
            else
                return new OrderResult() { Success = false, OrderID = -1, Message = response.Error };
        }