def link(self): self.pri_redis = redisClient(namespace=self.user['redis_pri']) redis_pub = EVN_LIST['test'][BITMEX['name']] if self.user['test_net'] else EVN_LIST['line'][BITMEX['name']] self.pub_redis = redisClient(namespace=redis_pub) self.btWss = bitmexWebsocket() # self.btWss.callback_dict = {'tradeBin1m':formatData.tradeBin1m} self.btWss.on_error = self.on_error_ws self.btWss.on_disconnected = self.on_disconnected self.btWss.on_action = self.wss_action if self.pri_sub is not None: self.uid = self.user['uid'] self.btWss.private_subs = self.pri_sub if self.IS_PUB_SUB == 1 and self.pub_sub is not None: self.btWss.public_subs = self.pub_sub self.btWss.connect(symbols=self.symbol, api_key=self.user['key'], api_secret=self.user['secret'], test_net=self.user['test_net'], proxy_host=EVN['proxy_host'], proxy_port=EVN['proxy_port'])
def setBox(conf=None): key = conf['user']['redis_pri'] sandbox = conf['sandbox'] redis = redisClient(namespace=key) box = redisClient(namespace=key, select_db=sandbox) if not bitmexSandbox.resetMargin and box.get('time'): return box for key, obj in bitmexManage.MAPS.items(): if key == bitmexMarket.KEY: continue elif key == bitmexMargin.KEY: data = redis.get(obj.KEY) box.set(obj.KEY, data) data = bitmexManage.MAPS[key].get(box) for k, v in data.items(): if k == 'useCost': data[k] = data['allCost'] if k not in ['useCost', 'allCost']: data[k] = 0 data = bitmexSandbox.mapData(key, data) box.set(obj.KEY, json.dumps(data)) else: data = redis.hgetall(obj.KEY) if not data: continue box.hmset(obj.KEY, data) data = bitmexManage.MAPS[key].get(box, conf['symbol']) if key == bitmexOrder.KEY: data = [] else: for k, v in data.items(): if k not in ['symbol', 'lv', 'allCost']: data[k] = 0 data = [bitmexSandbox.mapData(key, data)] box.hset(obj.KEY, conf['symbol'], json.dumps(data)) return box
def initBitmex(self): from config.user import USER_CONFIG for conf in USER_CONFIG: user = conf['user'] name = user['name'] self.position['symbol'] = conf['symbol'] pub_key = conf['site'] + str(user['test_net']) if pub_key not in self.redis: redis_pub = EVN_LIST['test' if user['test_net'] else 'line'][ conf['site']] self.redis[pub_key] = redisClient(namespace=redis_pub) pri_key = name + str(conf['sandbox']) if name not in self.redis: self.redis[pri_key] = redisClient( namespace=conf['user']['redis_pri']) # 删除策略订单 self.redis[pub_key].hdelete('order:parbin') self.initXbtData() self.initBitmexMargin(pri_key, conf['symbol'])
def initUser(self, userConfig): try: for conf in userConfig: user = conf['user'] name = user['name'] # 个人数据redis self.redis[name + str(conf['sandbox'])] = conf['strategy'].setRedis( conf) redis_pub = EVN_LIST['test' if user['test_net'] else 'line'][ conf['site']] pub_key = conf['site'] + str(user['test_net']) if pub_key not in self.redis: self.redis[pub_key] = redisClient(namespace=redis_pub) except: master.sysError()
def link(self): self.btWss = bitmexWebsocket() redis_pub = EVN_LIST['test'][ BITMEX['name']] if self.user['test_net'] else EVN_LIST['line'][ BITMEX['name']] self.redis = redisClient(namespace=redis_pub) self.btWss.public_subs = self.pub_sub # self.btWss.public_subs = ['trade', 'tradeBin1m', 'tradeBin5m', 'tradeBin1h', 'tradeBin1d', 'orderBook10', 'funding'] self.btWss.private_subs = [] # self.btWss.callback_dict = {'tradeBin1m':formatData.tradeBin1m} self.btWss.on_error = self.on_error_ws self.btWss.on_disconnected = self.on_disconnected self.btWss.on_action = self.wss_action self.btWss.connect(symbols=self.symbol, test_net=self.user['test_net'], proxy_host=EVN['proxy_host'], proxy_port=EVN['proxy_port'])
def setConnect(self): dd = dingApi() # 初始化连接 及 kline for conf in USER_CONFIG: uid = conf['user']['uid'] if uid not in self.users: continue rest = self.users[uid] rest.dd = dd rest.redis = redisClient(namespace=conf['user']['redis_pri']) rest.redis.delete(rest.TRUST) rest.redis.set(rest.IS_TRUST, 0) rest.start() rest.init_kline(conf['symbol'], bitmexManage.KLINE_LIST)
def get_redis(self): if not self.pub_redis: evn_key = 'test' if self.user['test_net'] else 'line' redis_pub = EVN_LIST[evn_key][BITMEX['name']] self.pub_redis = redisClient(namespace=redis_pub) return self.pub_redis