递归拉取订单列表的方法

拉取交易所订单列表时,常常需要分页拉取,但调用的时候希望一次获得完整的数据,这时采用递归的方式

订单json如下所示

{
    "datas":{
        "totalRow":625,
        "entrustList":[
            {
                "entrustId":"E6615806999819034624",
                "type":1,
                "completeAmount":"0",
                "price":"0.001874",
                "availabelAmount":"1047",
                "sequeueId":6615806999819034624,
                "completeTotalMoney":"0",
                "amount":"1047",
                "createTime":1577331304507,
                "status":0
            },
            {
                "entrustId":"E6615806999282163712",
                "type":1,
                "completeAmount":"0",
                "price":"0.001883",
                "availabelAmount":"1047",
                "sequeueId":6615806999282163712,
                "amount":"1047",
                "createTime":1577331304379,
                "status":0
            }
        ],
        "totalPage":63,
        "pageSize":10,
        "pageNum":2
    },
    "resMsg":{
        "code":"1",
        "message":"success !",
        "enMessage":"None"
    }
}

python3代码如下

    #获取未成交订单
    def order_open(self, symbol, **kwargs):
        body = {
            'marketId'  : self.market2id[symbol],
            'pageIndex' : 1,
            'pageSize'  : 100,
        }

        for key, value in kwargs.items():
            body[key] = value

        params = {
            'body'      :body,
            'timestamp' :str(int(time.time() * 1000))
        }
        params['sign'] = self.signature("GET", params)
        url = self._web_url + '/oder_open'
        result = self.http_request(url, method = "GET", params = params)

        dict = {}
        for item in result["datas"]["entrustList"]:
            filter_dict = {}
            filter_dict['price'] = float(item["price"])
            filter_dict['quantity'] = float(item["amount"])
            filter_dict['direction'] = 'BUY' if item["type"] == 1 else "SELL"
            filter_dict['time'] = float(item["createTime"])
            dict[item["entrustId"]] = filter_dict

        if (body['pageIndex'] <= int(result["datas"]["totalRow"] / 100)):
            dict.update(self.order_open(symbol, pageIndex=body['pageIndex'] + 1))
            return dict
        else:
            return dict

递归的核心在于这一段

        if (body['pageIndex'] <= int(result["datas"]["totalRow"] / 100)):
            dict.update(self.order_open(symbol, pageIndex=body['pageIndex'] + 1))
            return dict
        else:
            return dict
原文地址:https://www.cnblogs.com/bitquant/p/recursion_order_list.html