class BrushTrade(): def __init__(self, queue): self.queue = queue self.amount = 0 self.target_exchange = TargetExchange() def trade(self): try: trades = self.queue.get(block=True, timeout=20) #接收消息 except Queue.Empty: print("Nothing to do!i will go home!") return try: symbol = '' for t in trades: symbol = t['symbol'] self.target_exchange.create_deal_order(account.account_list[0], t['symbol'], t['side'], float(t['amount']), float(t['price'])) self.amount += float(t['amount']) time.sleep(0.1) print("work finished! %s amount=%s %s" % (symbol, self.amount, datetime.now())) self.queue.task_done() #完成一个任务 res = self.queue.qsize() #判断消息队列大小 if res > 0: print("f**k!There are still %d tasks to do" % (res)) except Exception: print(traceback.format_exc()) return def run(self): print('BrushTrade run.') while True: try: self.trade() print('=================================') # 休眠s time.sleep(5) except Exception: print(traceback.format_exc()) time.sleep(5)
def __init__(self, queue): self.queue = queue self.amount = 0 self.target_exchange = TargetExchange() self.account_index = 0
class LiquidityTrade(): def __init__(self, queue): self.queue = queue self.amount = 0 self.target_exchange = TargetExchange() self.account_index = 0 def trade(self): try: order_book = self.queue.get(block=True, timeout=10) #接收消息 except Queue.Empty: print("Nothing to do!i will go home!") return if len(order_book) == 0: print("order_book is null, Nothing to do! i will go home!") return symbol = order_book[0]['symbol'] # 10个账号,轮询使用,先取消前一个账号的订单,再下当前账号新订单,依次往复循环。 account_cur = account.account_list[self.account_index] if self.account_index == 0: last_index = len(account.account_list) - 1 else: last_index = self.account_index - 1 account_last = account.account_list[last_index] print( "account_index=%d, last_index=%d, account_cur=%d, account_last=%d " % (self.account_index, last_index, account_cur, account_last)) self.account_index += 1 self.account_index = self.account_index % len(account.account_list) try: # 获取未成交订单,并取消,可以替换成一个取消所有订单接口 response = self.target_exchange.get_open_orders( account_last, symbol, -1) if response is not None: json_data = response.json() if json_data['state'] == '1': orders = json_data['data']['order_info'] for o in orders: self.target_exchange.cancel_order( account_last, symbol, o['id']) # 下新订单 for b in order_book: self.target_exchange.create_limit_order( account_cur, b['symbol'], b['side'], float(b['amount']), float(b['price'])) self.amount += float(b['amount']) time.sleep(0.1) print("work finished! %s amount=%s %s" % (symbol, self.amount, datetime.now())) self.queue.task_done() #完成一个任务 res = self.queue.qsize() #判断消息队列大小 if res > 0: print("f**k!There are still %d tasks to do" % (res)) except Exception: print(traceback.format_exc()) return def run(self): print('LiquidityTrade run.') while True: try: self.trade() print('=================================') # 休眠s time.sleep(5) except Exception: print(traceback.format_exc()) time.sleep(5)
else: exit('time_interval doesn\'t end with m') def random_side(): count = random() if count < 0.5: return 'buy' else: return 'sell' if __name__ == "__main__": time_interval = '5m' # 间隔运行时间 has_exception_occur = False target_exchange = TargetExchange() # 交易所 symbol = 'CNB/USDT' # 交易对 # 账号 account1 = account.account_list[0] # =====导入EOSUSD每一天的5分钟数据 df = pd.read_csv( '../statistics/5MIN_CNBUSDT.csv') # skiprows=1) print df last_close_price = 0 while True: for i in range(df.shape[0]): # if i < 144: # continue # ===sleep直到运行时间