def get_more_bid_price(code, b_p): new = b_p for i in range(15): r = random.randint(0, 6) # 每一单1,2,3,4,5中随机跳 precis = cons.get_precision(code, 'price') tick = 1 / (pow(10, precis)) p = b_p[-1] - r * tick p = round(p, cons.get_precision(code, 'price')) new.append(p) return new
def get_more_bid_vol(code, b_v): new = b_v for i in range(15): r = random.uniform(0.5, 10) # 量也随机 v = (b_v[0] + b_v[1] + b_v[2]) * r v = round(v, cons.get_precision(code, 'volume')) new.append(v) return new
def get_bid_price(code, a_p): r = random.uniform(0.004, 0.005) new = [] for tem in a_p: p = tem * (1 - r) # bid订单的price*[1-(0.01-0.015)随机数] p = round(p, cons.get_precision(code, 'price')) new.append(p) return new
def get_ask_price(code, a_p): r = random.uniform(0.004, 0.005) new = [] for tem in a_p: p = tem * (1 + r) # ask订单的price*[1+(0.01-0.015)]随机数, p = round(p, cons.get_precision(code, 'price')) new.append(p) return new
def get_more_ask_vol(code, a_v): new = a_v for i in range(15): r = random.uniform(0.5, 10) # 量也随机, 根据买一卖一量进行扩大 v = (a_v[0] + a_v[1] + a_v[2]) * r v = round(v, cons.get_precision(code, 'volume')) new.append(v) return new
def get_bid_vol(code, b_v): r = float(Ratio_byHuobi * random.uniform(0.8, 1.2)) new = [] for tem in b_v: v = float(tem * r) # amount*(0.015-0.05)的范围随机数 precis = cons.get_precision(code, 'volume') v = round(v, precis) if v == 0.0: v = tick = 1 / (pow(10, precis)) new.append(v) return new
# 以下是正常触发交易情况 if now >= _trading_time[0]: # 触发交易 quota = hbs.get_depth(_coin, 'step0') # if quota['msg'] != 'suc': # print('获取行情失败,重新开始运行') # continue # 自成交相关数据 ask_p = float(quota['tick']['asks'][0][0]) bid_p = float(quota['tick']['bids'][0][0]) base_p = (ask_p + bid_p)/2 # 基准价格 # 计算一跳的价格 precis = cons.get_precision(_coin, 'price') one_step = 1 / (pow(10, precis)) # 一跳 # 在基准价格上下2跳内,随机取价格 r = random.randint(-2, 2) p = base_p + r * one_step _price = round(p, precis) # 最终下单价格 # 这一单内要交易的金额, usdt _amount = _trading_amount[0] # 数量计算 _volume = 0 # 解析code,分为 usdt/btc/eth if _coin[-3:] == 'btc':
ask_p = float(quota['tick']['asks'][0][0]) bid_p = float(quota['tick']['bids'][0][0]) base_p = (ask_p + bid_p) / 2 # 基准价格 # 自成交数量数据 try: t = hbs.get_kline(symbol=_code, period='1min', size=2) huobiAmount = t['data'][1]['amount'] except Exception as e: print('----><获取k线>: %s' % (_code), e) huobiAmount = 0 _amount_byHB = _trade_time / 60 * huobiAmount * _huobi_ratio # 计算一跳的价格 precis = cons.get_precision(_code, 'price') one_step = 1 / (pow(10, precis)) # 一跳 # if _code == 'ltcusdt': # print(one_step) # 在基准价格上下2跳内,随机取价格 r = random.randint(-4, 4) p = base_p + r * one_step # if _code == 'ltcusdt': # print(p) _price = round(p, precis) # 最终下单价格 # if _code == 'ltcusdt': # print(_price) # 这一单内要交易的金额, usdt
quota_uni = uds.market_dept(code, 'step0') # 如果没有盘口 就不做报单 if len(quota_uni['data']['tick']['asks']) < 6: break if len(quota_uni['data']['tick']['bids']) < 6: break vol1 = quota_uni['data']['tick']['asks'][0][1] vol2 = quota_uni['data']['tick']['bids'][0][1] r = random.uniform(0, 1) vol = (vol1 + vol2) * r # 把价格和量格式化 v = round(vol, cons.get_precision(code, 'volume')) p = round(price, cons.get_precision(code, 'price')) # 报买单 mmu.do_trading(code, p, v, 'BUY') # 稍微等一下 避免报单过快 time.sleep(0.01) # 报卖单 mmu.do_trading(code, p, v, 'SELL') # 报单后等随机时间,以使得各合约成交时间不同 # 等待时间根据‘一轮报单时间’参数确定 count = len(stock_list) each_time = int(turn_total_time / count)