def cancelPendingOrders(self): """取消所有未完成挂单""" orders = _C(self.exchange.GetOrders) for order in orders: while True: order_status = self.exchange.CancelOrder(order.Id) Log(order_status) order_info = _C(self.exchange.GetOrder, order.Id) if order_info['Status'] == self.ORDER_STATE_CLOSED: break if (order_info['Status'] == self.ORDER_STATE_CANCELED): if order_info['Type'] == self.ORDER_TYPE_SELL: order_type = '卖单' else: order_type = '买单' Log( '取消了%s,订单号:%s,下单金额%s,下单数量%s,成交量%s,' % (order_type, order_info['Id'], order_info['Price'], order_info['Amount'], order_info['DealAmount']), '#FF0000') break Sleep(self.checkTryTime) self.orderList = []
def is_suport(self): datas = _C(self.get_symbols) for data in datas.get('data'): if data.get('base-currency') == self.base_currency and data.get( 'quote-currency') == self.quote_currency: self.price_precision = data.get('price-precision') self.amount_precision = data.get('amount-precision') return True return False
def orderIsNotExists(self): """判断是否有服务器存在的订单,本地却没有的订单,如果存在这种情况就返回 这个订单号""" pending_order_list = _C(self.exchange.GetOrders) current_order_id_list = [ order_info['order_id'] for order_info in self.orderList ] for order in pending_order_list: if order['Id'] not in current_order_id_list: return order['Id'] return False
def getAccountInfo(self): """获取交易所的账号的信息""" account_info = _C(self.exchange.GetAccount) total_balance = account_info["Balance"] + account_info["FrozenBalance"] total_stocks = account_info["Stocks"] + account_info["FrozenStocks"] account_info.update({ 'total_balance': total_balance, 'total_stocks': total_stocks }) self.printAccountInfo(account_info) return account_info
def checkOrders(self, order_list): for order in order_list: order_info = _C(self.exchange.GetOrder, order['order_id']) if order_info['Status'] == self.ORDER_STATE_CLOSED: Sleep(self.checkTryTime) fee = self.getFee() account_info = self.getAccountInfo() if order['type'] == self.ORDER_TYPE_BUY: price = _N(order['price'] * (1 + self.spreads), self.FLOAT_LENGTH) quantity = _N(order['quantity'] * (1 - fee.get('buy')), self.FLOAT_LENGTH) order_id = self.transaction(self.exchange.Sell, price, quantity, self.ORDER_TYPE_SELL) new_order = { 'price': price, 'quantity': quantity, 'order_id': order_id, 'type': self.ORDER_TYPE_SELL } Log( '订单号%s 以%s价格买入%s个币,交易成功,现在以%s价格卖出币' % (order['order_id'], order['price'], order['quantity'], price), '#ff0000@') else: price = _N(order['price'] * (1 - self.spreads), self.FLOAT_LENGTH) quantity = _N(order['quantity'] * (1 + fee.get('buy')), self.FLOAT_LENGTH) order_id = self.transaction(self.exchange.Buy, price, quantity, self.ORDER_TYPE_BUY) new_order = { 'price': price, 'quantity': quantity, 'order_id': order_id, 'type': self.ORDER_TYPE_BUY } Log( '订单号%s 以%s价格卖出%s个币,交易成功,现在以%s价格买入币' % (order['order_id'], order['price'], order['quantity'], price), '#ff0000@') order_list.append(new_order) order_list.remove(order) Log(order_list) Log('---------------------------') return order_list
def generateOrders(self): """初始化订单""" if self.basePrice == 0: ticker = _C(self.exchange.GetTicker) base_price = ticker['Last'] else: base_price = self.basePrice Log('入手币价:', base_price) if self.entry_type: Log('法币入场') each_balance = _N(self.balance / self.numberGrids, self.FLOAT_LENGTH) for i in range(1, self.numberGrids + 1): price = _N(base_price * (1 - self.spreads * i), self.FLOAT_LENGTH) buy_quantit = _N(each_balance / price, self.FLOAT_LENGTH) order_id = self.transaction(self.exchange.Buy, price, buy_quantit, self.ORDER_TYPE_BUY) buy_info = { 'price': price, 'quantity': buy_quantit, 'type': self.ORDER_TYPE_BUY, 'order_id': order_id } self.orderList.append(buy_info) Sleep(self.checkTryTime) else: Log('持币入场') sellQuantity = _N(self.stocks / self.numberGrids, self.FLOAT_LENGTH) for i in range(1, self.numberGrids + 1): price = _N(base_price * (1 + self.spreads * i), self.FLOAT_LENGTH) order_id = self.transaction(self.exchange.Sell, price, sellQuantity, self.ORDER_TYPE_SELL) sell_info = { 'price': price, 'quantity': sellQuantity, 'type': self.ORDER_TYPE_SELL, 'order_id': order_id } self.orderList.append(sell_info) Sleep(self.checkTryTime) return self.orderList
def __init__(self, access_key, secrect_key, quote_currency, base_currency): Common.__init__(self, access_key, secrect_key, quote_currency, base_currency) account = _C(self.get_accounts) self.account_id = account['data'][0]['id']