コード例 #1
0
    def _on_message(self, ws, message):
        # log.debug(f"on_msg:{message}")
        message = json.loads(message)
        message_type = message['type']
        if message_type in {'subscribed', 'unsubscribed'}:
            return
        elif message_type == 'info':
            if message['code'] == 20001:
                return self.reconnect()
        elif message_type == 'error':
            raise Exception(message)
        if message =="pong":
            log.debug(message)
            pass
        channel = message.get('channel',None)

        if channel == 'orderbook':
            self.orderbook_message(message)
        elif channel == 'trades':
            self.trades_message(message)
        elif channel == 'ticker':
            self.ticker_message(message)
        elif channel == 'fills':
            self.fills_message(message)
        elif channel == 'orders':
            self.orders_message(message)
コード例 #2
0
    def subscribe(self, channels):
        for k in channels.keys():
            c=self.chanels.get(k,"")
            for symbol in self.symbols:
                log.debug(f"subscrpbe:{c}:{symbol}")
                self.send_json({'op': 'subscribe', "channel":c, "market": symbol})

            self.subscribes[k] = channels[k]
コード例 #3
0
 def _ping(self,ws):
     timeout = 30
     count = 0
     while self.ws:
         if count < timeout:
             time.sleep(1)
             count = count + 1
         else:
             log.debug("ping")
             self.send_json({'op':'ping'})
             count=0
コード例 #4
0
 def login(self) -> None:
     if self._api_key:
         ts = int(time.time() * 1000)
         self.send_json({'op': 'login', 'args': {
             'key': self._api_key,
             'sign': hmac.new(
                 self._api_secret.encode(), f'{ts}websocket_login'.encode(), 'sha256').hexdigest(),
             'time': ts,
         }})
         self._logged_in = True
         log.debug("login")
コード例 #5
0
 def savedb(self):
     if not self.taker_price == 0 and not self.maker_price == 0:
         try:
             db.insert_one(
                 "spreed", {
                     "symbol": "BTCUSDT",
                     "timestamp": get_cur_timestamp_ms(),
                     "makerprice": self.maker_price,
                     "takerprice": self.taker_price
                 })
         except Exception as e:
             log.debug(e)
コード例 #6
0
ファイル: mqevent.py プロジェクト: ynzheng/alphaquant
 def connect(self):
     credentials = pika.PlainCredentials(self._username, self._password)
     connection = pika.BlockingConnection(
         pika.ConnectionParameters(host=self._host,
                                   port=self._port,
                                   credentials=credentials,
                                   heartbeat=0))
     channel = connection.channel()
     self._connect = connection
     exchanges = [
         "Trade", "Ticker", "OrderBook", "Kline.15min", "Asset", "Logger"
     ]
     for name in exchanges:
         channel.exchange_declare(name, "topic")
     self._channel = channel
     log.debug("create default exchanges success!")
コード例 #7
0
ファイル: forceorder.py プロジェクト: ynzheng/alphaquant
    def callback(self, event):
        """
        {'e': 'forceOrder', 'E': 1594107015086,
        'o': {'s': 'BTCUSDT',
        'S': 'SELL',
        'o': 'LIMIT',
        'f': 'IOC',
        'q': '1.300',
        'p': '9206.39',
        'ap': '9242.01',
        'X': 'FILLED',
        'l': '1.084',
        'z': '1.300',
        'T': 1594107015081}}

        :param event:
        :return:
        """
        e = event.data
        try:
            data = e["o"]
            db.insert_one("forceorder", data)
        except Exception as e:
            log.debug(e)