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'])
Exemple #2
0
    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
Exemple #3
0
    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'])
Exemple #4
0
    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()
Exemple #5
0
    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