// 查询当前委托、历史委托 // 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); }
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); }