Ejemplo n.º 1
0
        // 查询当前委托、历史委托
        // symbol: 交易对, 形如 btcbitcny, bchbtc, eoseth ...
        // types : 查询的订单类型组合, 使用','分割, buy-market:市价买, sell-market:市价卖, buy-limit:限价买, sell-limit:限价卖, 可省略, 默认表示全部
        // states: 查询的订单状态组合, 使用','分割, new:新订单, part_filled:部分成交, filled:完全成交, canceled:已撤销, expired:异常订单
        // from  : 查询起始ID(订单ID), 配合direct使用, 可省略
        // direct: 查询方向, prev向前, next向后, 可省略, 默认next
        // size  : 查询记录大小, 最多一次查询50条数据, 可省略, 默认50
        public static OrdersDetail GetOrdersDetail(Account account, string symbol, string types, string states, int from = 0, int direct = 0, int size = 0)
        {
            // 排序:direct、from、size、states、symbol、time、types
            string strParam = string.Format("{0}{1}{2}{3}{4}{5}{6}",
                                            direct == 0 ? "" : string.Format("direct={0}&", direct > 0 ? "next" : "prev"),
                                            from == 0 ? "" : string.Format("from={0}&", from),
                                            size == 0 ? "" : string.Format("size={0}&", size),
                                            string.Format("states={0}", states),
                                            string.Format("&symbol={0}", symbol),
                                            string.Format("&time={0}", GetServerTime()),
                                            string.IsNullOrEmpty(types) ? "" : string.Format("&types={0}", types)
                                            );

            strParam = strParam.TrimStart('&'); // 有可能省略direct,此时会多出一个前导的'&'符
            string strSignedParam = string.Format("api_key={0}&{1}&sign={2}", account.apikey, strParam, Crypt.GetSignature(strParam, account.secret));
            string strResponse    = Http.Get(V2.URL + "/order/orders", strSignedParam);

            if (string.IsNullOrEmpty(strResponse))
            {
                return(null);
            }

            Response response = Response.FromString(strResponse);

            if (response == null || response.code != "0" || response.msg != "suc" || string.IsNullOrEmpty(response.data))
            {
                return(null);
            }

            OrdersDetail ordersDetail = OrdersDetail.FromString(response.data);

            if (ordersDetail == null || ordersDetail.items == null)
            {
                return(null);
            }

            return(ordersDetail);
        }
Ejemplo n.º 2
0
        public static OrdersDetail FromString(string strResponseData)
        {
            Json.Array array = Json.ToArray(strResponseData);
            if (array == null)
            {
                return(null);
            }

            OrdersDetail ordersDetail = new OrdersDetail();

            ordersDetail.items = new System.Collections.Generic.List <OrderDetail>();
            foreach (string dataItem in array)
            {
                Json.Dictionary dataItemDict = Json.ToDictionary(dataItem);

                OrderDetail item = new OrderDetail();
                item.user_id = long.Parse(Json.GetAt(dataItemDict, "user_id"));
                item.symbol  = Json.GetAt(dataItemDict, "symbol");
                item.id      = long.Parse(Json.GetAt(dataItemDict, "id"));
                item.type    = Json.GetAt(dataItemDict, "type");
                item.volume  = double.Parse(Json.GetAt(dataItemDict, "volume"));
                item.price   = double.Parse(Json.GetAt(dataItemDict, "price"));
                double.TryParse(Json.GetAt(dataItemDict, "avg_price"), out item.avg_price);
                int.TryParse(Json.GetAt(dataItemDict, "status"), out item.status);
                double.TryParse(Json.GetAt(dataItemDict, "deal_volume"), out item.deal_volume);
                item.deal_money = double.Parse(Json.GetAt(dataItemDict, "deal_money"));
                item.fee        = double.Parse(Json.GetAt(dataItemDict, "fee"));
                item.source     = int.Parse(Json.GetAt(dataItemDict, "source"));
                item.ctime      = Int64.Parse(Json.GetAt(dataItemDict, "ctime"));
                item.mtime      = Int64.Parse(Json.GetAt(dataItemDict, "mtime"));

                ordersDetail.items.Add(item);
            }

            return(ordersDetail);
        }