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
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
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
def getPrice(self, coin_pair): price = self.btc38clt.getTickers( coin_pair.split('_')[1], coin_pair.split('_')[0]) priceobj = urlaccess.JSONObject(price) return priceobj