Пример #1
0
    def getOrderStatusX(self, orderid, coin_code=None):
        #

        try:
            data = self.btc38clt.getOrderList(coin_code)
            #orderstatus=b'[{"order_id":"123", "order_type":"1", "order_coinname":"BTC", "order_amount":"23.232323", "order_price":"0.2929"}, {"order_id":"123", "order_type":"1", "order_coinname":"LTC","order_amount":"23.232323", "order_price":"0.2929"}]'
            #TODO 需要找出指定订单的状态
            orderresult = None
            order_status = None
            for order in data:
                #查找到有订单则说明没有 成交,是open状态,其它为closed,cancel也认为是closed
                if int(order.get('id')) == int(orderid):
                    orderresult = {'order_id': orderid, 'order_status': 'open'}
                    break
            if not orderresult:
                orderresult = {'order_id': orderid, 'order_status': 'closed'}
            orderresultobj = urlaccess.JSONObject(orderresult)
            order_status = orderresultobj.order_status
        except Exception as e:
            #如果订单状态返回出错,则返回一个默认值
            print('获取订单状态出错')
            print(str(e))
            order_status = 'open'
        finally:
            return order_status
Пример #2
0
    def getMarketDepth(self, coin_code, mk_type='btc'):
        try:
            data = self.btc38clt.getDepth(mk_type, coin_code)
            # 买单列表
            buylist = list(data.get('bids'))
            # 卖单列表
            selllist = list(data.get('asks'))

            depthlist = urlaccess.JSONObject({
                'date': datetime.datetime.now(),
                'sell': selllist,
                'buy': buylist
            })
        except Exception as e:
            print(str(e))
            depthlist = None
        return depthlist
Пример #3
0
    def submitOrder(self,
                    pair,
                    trade_type,
                    rate,
                    amount,
                    connection=None,
                    update_delay=None,
                    error_handler=None):
        #btc38Client.submitOrder(2, 'cny', 0.03, 1000, 'doge')
        if trade_type == 'sell':
            transtype = 2
        else:
            transtype = 1
        coin, curr = pair.split('_')
        order = self.btc38clt.submitOrder(transtype, curr, rate, amount, coin)
        #return format b'[succ|123423]
        order2 = order[0].decode('utf8').split('|')
        #避免直接成交没有 返回订单的情况
        #orderstatus = order2[0]
        if order2[0] == 'succ':
            orderstatus = 'success'
        else:
            orderstatus = 'fail'
        if len(order2) >= 2:
            orderid = order2[1]
        else:
            print('注意没有返回订单号,使用虚拟号代码,有可能发生错误')
            if orderstatus == 'success':
                #虚拟一个订单号,直接成功的订单,没有 返回定单号则给一个虚拟的订单号
                orderid = 1111111
            else:
                orderid = -1111111

        neworder = {'order_id': orderid, 'status': orderstatus}
        #转换成对象以方便 统一访问
        neworder2 = urlaccess.JSONObject(neworder)
        return neworder2
Пример #4
0
 def getPrice(self, coin_pair):
     price = self.btc38clt.getTickers(
         coin_pair.split('_')[1],
         coin_pair.split('_')[0])
     priceobj = urlaccess.JSONObject(price)
     return priceobj