Beispiel #1
0
 private Exception JsonError(JObject obj)
 {
     if (obj.Property("error_code") == null || obj.Property("error_code").ToString() == "")
     {
         return(new Exception("\"error_code\" not found in raw json string!"));
     }
     else
     {
         return(new Exception(SpotErrcode2Msg.Prase(obj["error_code"].ToString())));
     }
 }
Beispiel #2
0
        public List <Order> GetOrdersStatus(string tradingpair, out string rawresponse)
        {
            CheckSet();
            Order      order = null;
            string     url   = GetPublicApiURL("", "order_info.do");
            RestClient rc    = new RestClient(url);

            if (_proxy != null)
            {
                rc.Proxy = new WebProxy(_proxy.IP, Convert.ToInt32(_proxy.Port));
            }
            RestRequest rr = new RestRequest(Method.POST);

            rr.AddParameter("api_key", _key);
            rr.AddParameter("symbol", tradingpair);
            rr.AddParameter("order_id", -1);

            Dictionary <String, String> paras = new Dictionary <String, String>();

            paras.Add("api_key", _key);
            paras.Add("symbol", tradingpair);
            paras.Add("order_id", "-1");
            String sign = MD5Util.buildMysignV1(paras, _secret);

            rr.AddParameter("sign", sign);
            var response = new RestClient(url).Execute(rr);


            rawresponse = response.Content;
            try
            {
                JObject obj = JObject.Parse(rawresponse);
                if (obj.Property("error_code") != null)
                {
                    throw (new Exception(SpotErrcode2Msg.Prase(obj["error_code"].ToString())));
                }
                if (!Convert.ToBoolean(obj["result"]))
                {
                    throw (new Exception("error:" + rawresponse));
                }
                JArray orders = JArray.Parse(obj["orders"].ToString());
                if (orders.Count > 0)
                {
                    List <Order> orders_array = new List <Order>();
                    for (int i = 0; i < orders.Count; i++)
                    {
                        order             = new Order();
                        order.Id          = orders[i]["order_id"].ToString();
                        order.Amount      = Convert.ToDouble(orders[i]["amount"].ToString());
                        order.DealAmount  = Convert.ToDouble(orders[i]["deal_amount"].ToString());
                        order.Price       = Convert.ToDouble(orders[i]["price"].ToString());
                        order.Type        = GetOrderTypeFromString(orders[i]["type"].ToString());
                        order.Status      = GetOrderStatus(orders[i]["status"].ToString());
                        order.TradingPair = orders[i]["symbol"].ToString();
                        order.CreatDate   = CommonLab.TimerHelper.ConvertStringToDateTime(Convert.ToDouble(orders[i]["create_date"].ToString()) / 1000);
                        orders_array.Add(order);
                    }
                    return(orders_array);
                }
            }
            catch (Exception e)
            {
                Exception err = new Exception("订单获取解析json失败" + e.Message);
                throw err;
            }
            return(null);
        }
Beispiel #3
0
        protected string Trade(OrderType type, string tradingpair, double price, double amount)
        {
            CheckSet();
            string     url = GetPublicApiURL("", "trade.do");
            RestClient rc  = new RestClient(url);

            if (_proxy != null)
            {
                rc.Proxy = new WebProxy(_proxy.IP, Convert.ToInt32(_proxy.Port));
            }
            RestRequest rr = new RestRequest(Method.POST);

            rr.AddParameter("api_key", _key);
            rr.AddParameter("symbol", tradingpair);
            Dictionary <String, String> paras = new Dictionary <String, String>();

            paras.Add("api_key", _key);
            paras.Add("symbol", tradingpair);
            switch (type)
            {
            case OrderType.ORDER_TYPE_BUY:
                paras.Add("type", "buy");
                paras.Add("price", price.ToString());
                rr.AddParameter("type", "buy");
                rr.AddParameter("price", price.ToString());
                break;

            case OrderType.ORDER_TYPE_SELL:
                paras.Add("type", "sell");
                paras.Add("price", price.ToString());
                rr.AddParameter("type", "sell");
                rr.AddParameter("price", price.ToString());
                break;

            case OrderType.ORDER_TYPE_MARKETBUY:
                paras.Add("type", "buy_market");
                rr.AddParameter("type", "buy_market");
                break;

            case OrderType.ORDER_TYPE_MARKETSELL:
                paras.Add("type", "sell_market");
                rr.AddParameter("type", "sell_market");
                break;
            }
            paras.Add("amount", amount.ToString());
            rr.AddParameter("amount", amount.ToString());
            String sign = MD5Util.buildMysignV1(paras, _secret);

            rr.AddParameter("sign", sign);

            var response = new RestClient(url).Execute(rr);


            string rawresponse = response.Content;

            try
            {
                JObject obj = JObject.Parse(rawresponse);
                if (!Convert.ToBoolean(obj["result"]))
                {
                    throw (new Exception("error:" + SpotErrcode2Msg.Prase(obj["error_code"].ToString())));
                }
                return(obj["order_id"].ToString());
            }
            catch (Exception e)
            {
                throw e;
            }
        }