Ejemplo n.º 1
0
class CandlestickChannel:
    def __init__(self, option=None):
        self.__option = WebSocketOptions()
        self.__option.url = "wss://stream.binance.com:9443"
        if option is not None:
            self.__option.set_from(option)
        self.__connection = WebSocketConnection(self.__option)

    def open(self, symbol_list, interval):
        streams = StringWrapper()
        streams.add_string_array(symbol_list, True)
        streams.combine_string_items(
            "", CEIUtils.string_replace("@kline_{0}", interval), "/")
        self.__connection.connect(
            CEIUtils.string_replace("/ws/{0}", streams.to_string()))

    def set_on_candlestick_handler(self, on_candlestick):
        on_candlestick_event = WebSocketEvent(True)

        def on_candlestick_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("e", "kline", root_obj)
            return json_checker.complete()

        on_candlestick_event.set_trigger(on_candlestick_event_trigger)

        def on_candlestick_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            candlestick_stream_var = CandlestickStream()
            candlestick_stream_var.symbol = root_obj.get_string("s")
            on_candlestick(candlestick_stream_var)

        on_candlestick_event.set_event(on_candlestick_event_event)
        self.__connection.register_event(on_candlestick_event)
Ejemplo n.º 2
0
class WSClient:
    def __init__(self, option=None):
        self.__option = WebSocketOptions()
        self.__option.url = "http://127.0.0.1:8888"
        if option is not None:
            self.__option.set_from(option)
        self.__connection = WebSocketConnection(self.__option)

    def open(self, channel, name):
    
        def on_connect_event(connection):
            login = JsonWrapper()
            login.add_json_string("op", "echo")
            obj = JsonWrapper()
            obj.add_json_string("Name", name)
            login.add_json_object("param", obj)
            connection.send("login")
        self.__connection.set_on_connect(on_connect_event)
        self.__connection.connect(CEIUtils.string_replace("/websocket/{0}", channel))

    def request_echo(self, name, price, number, status, on_echo):
        on_echo_event = WebSocketEvent(False)
    
        def on_echo_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("op", "echo", root_obj)
            obj = root_obj.get_object_or_none("param")
            json_checker.check_equal("Name", name, obj)
            return json_checker.complete()
        on_echo_event.set_trigger(on_echo_event_trigger)
    
        def on_echo_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            simple_info_var = SimpleInfo()
            simple_info_var.name = root_obj.get_string("Name")
            simple_info_var.number = root_obj.get_int("Number")
            simple_info_var.price = root_obj.get_decimal("Price")
            simple_info_var.status = root_obj.get_bool("Status")
            on_echo(simple_info_var)
        on_echo_event.set_event(on_echo_event_event)
        self.__connection.register_event(on_echo_event)
        json = JsonWrapper()
        json.add_json_string("op", "echo")
        obj = JsonWrapper()
        obj.add_json_string("Name", name)
        obj.add_json_number("Price", price)
        obj.add_json_number("Number", number)
        obj.add_json_boolean("Status", status)
        json.add_json_object("param", obj)
        self.__connection.send(json.to_json_string())
Ejemplo n.º 3
0
 def __init__(self, option=None):
     self.__option = WebSocketOptions()
     self.__option.url = "wss://stream.binance.com:9443"
     if option is not None:
         self.__option.set_from(option)
     self.__connection = WebSocketConnection(self.__option)
Ejemplo n.º 4
0
 def __init__(self, option=None):
     self.__option = WebSocketOptions()
     self.__option.url = "wss://api.huobi.pro/ws/v2"
     if option is not None:
         self.__option.set_from(option)
     self.__connection = WebSocketConnection(self.__option)
Ejemplo n.º 5
0
class AssetOrderV2ChannelClient:
    def __init__(self, option=None):
        self.__option = WebSocketOptions()
        self.__option.url = "wss://api.huobi.pro/ws/v2"
        if option is not None:
            self.__option.set_from(option)
        self.__connection = WebSocketConnection(self.__option)

    def open(self):
        on_ping_event = WebSocketEvent(True)

        def on_ping_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("action", "ping", root_obj)
            return json_checker.complete()

        on_ping_event.set_trigger(on_ping_event_trigger)

        def on_ping_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            ts = Timestamp()
            obj = root_obj.get_object("data")
            ts.timestamp = obj.get_int("ts")
            json_result = JsonWrapper()
            json_result.add_json_string("op", "pong")
            json_result.add_json_number("ts", ts.timestamp)
            connection.send(json_result.to_json_string())

        on_ping_event.set_event(on_ping_event_event)
        self.__connection.register_event(on_ping_event)
        self.__connection.connect("")

    def set_handler(self, on_order, on_trade):
        on_order_event = WebSocketEvent(True)

        def on_order_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("action", "push", root_obj)
            json_checker.value_include("ch", "order.", root_obj)
            return json_checker.complete()

        on_order_event.set_trigger(on_order_event_trigger)

        def on_order_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            order_update_var = OrderUpdate()
            obj = root_obj.get_object("data")
            order_update_var.event_type = obj.get_string_or_none("eventType")
            order_update_var.symbol = obj.get_string_or_none("symbol")
            order_update_var.order_id = obj.get_int_or_none("orderId")
            order_update_var.client_order_id = obj.get_string_or_none(
                "clientOrderId")
            order_update_var.type = obj.get_string_or_none("type")
            order_update_var.order_price = obj.get_string_or_none("orderPrice")
            order_update_var.order_size = obj.get_string_or_none("orderSize")
            order_update_var.type = obj.get_string_or_none("type")
            order_update_var.order_status = obj.get_string_or_none(
                "orderStatus")
            order_update_var.order_create_time = obj.get_int_or_none(
                "orderCreateTime")
            order_update_var.trade_price = obj.get_string_or_none("tradePrice")
            order_update_var.trade_volume = obj.get_string_or_none(
                "tradeVolume")
            order_update_var.trade_id = obj.get_int_or_none("tradeId")
            order_update_var.trade_time = obj.get_int_or_none("tradeTime")
            order_update_var.aggressor = obj.get_bool_or_none("aggressor")
            order_update_var.remain_amt = obj.get_string_or_none("remainAmt")
            order_update_var.last_act_time = obj.get_string_or_none(
                "lastActTime")
            on_order(order_update_var)

        on_order_event.set_event(on_order_event_event)
        self.__connection.register_event(on_order_event)
        on_trade_event = WebSocketEvent(True)

        def on_trade_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("action", "push", root_obj)
            json_checker.value_include("ch", "trade.clearing.", root_obj)
            return json_checker.complete()

        on_trade_event.set_trigger(on_trade_event_trigger)

        def on_trade_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            trade_clearing_update_var = TradeClearingUpdate()
            obj = root_obj.get_object("data")
            trade_clearing_update_var.symbol = obj.get_string_or_none("symbol")
            trade_clearing_update_var.order_id = obj.get_int_or_none("orderId")
            trade_clearing_update_var.trade_price = obj.get_string_or_none(
                "tradePrice")
            trade_clearing_update_var.trade_volume = obj.get_string_or_none(
                "tradeVolume")
            trade_clearing_update_var.order_side = obj.get_string_or_none(
                "orderSide")
            trade_clearing_update_var.order_type = obj.get_string_or_none(
                "orderType")
            trade_clearing_update_var.aggressor = obj.get_bool_or_none(
                "aggressor")
            trade_clearing_update_var.trade_id = obj.get_int_or_none("tradeId")
            trade_clearing_update_var.trade_time = obj.get_string_or_none(
                "tradeTime")
            trade_clearing_update_var.transact_fee = obj.get_string_or_none(
                "transactFee")
            trade_clearing_update_var.fee_deduct = obj.get_string_or_none(
                "feeDeduct")
            trade_clearing_update_var.fee_deduct_type = obj.get_string_or_none(
                "feeDeductType")
            on_trade(trade_clearing_update_var)

        on_trade_event.set_event(on_trade_event_event)
        self.__connection.register_event(on_trade_event)

    def subscript_order(self, symbol, on_sub):
        on_sub_event = WebSocketEvent(False)

        def on_sub_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("action", "sub", root_obj)
            json_checker.value_include("ch", "orders", root_obj)
            return json_checker.complete()

        on_sub_event.set_trigger(on_sub_event_trigger)

        def on_sub_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            code_var = Code()
            code_var.code = root_obj.get_int("code")
            on_sub(code_var)

        on_sub_event.set_event(on_sub_event_event)
        self.__connection.register_event(on_sub_event)
        json = JsonWrapper()
        json.add_json_string("action", "sub")
        json.add_json_string("ch",
                             CEIUtils.string_replace("orders#{0}", symbol))
        self.__connection.send(json.to_json_string())

    def subscript_trade_clearing(self, symbol, on_sub):
        on_sub_event = WebSocketEvent(False)

        def on_sub_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("action", "sub", root_obj)
            json_checker.value_include("ch", "trade.clearing", root_obj)
            return json_checker.complete()

        on_sub_event.set_trigger(on_sub_event_trigger)

        def on_sub_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            code_var = Code()
            code_var.code = root_obj.get_int("code")
            on_sub(code_var)

        on_sub_event.set_event(on_sub_event_event)
        self.__connection.register_event(on_sub_event)
        json = JsonWrapper()
        json.add_json_string("action", "sub")
        json.add_json_string(
            "ch", CEIUtils.string_replace("trade.clearing#{0}", symbol))
Ejemplo n.º 6
0
class MarketChannelClient:
    def __init__(self, option=None):
        self.__option = WebSocketOptions()
        self.__option.url = "wss://api.huobi.pro/ws"
        if option is not None:
            self.__option.set_from(option)
        self.__connection = WebSocketConnection(self.__option)

    def open(self):
        on_any_message_event = WebSocketEvent(True)

        def on_any_message_event_trigger(msg):
            return True

        on_any_message_event.set_trigger(on_any_message_event_trigger)

        def on_any_message_event_event(connection, msg):
            decoded = CEIUtils.gzip(msg.get_bytes())
            msg.upgrade(decoded)

        on_any_message_event.set_event(on_any_message_event_event)
        self.__connection.register_event(on_any_message_event)
        on_ping_event = WebSocketEvent(True)

        def on_ping_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("op", "ping", root_obj)
            return json_checker.complete()

        on_ping_event.set_trigger(on_ping_event_trigger)

        def on_ping_event_event(connection, msg):
            ts = CEIUtils.get_now("Unix_ms")
            json_result = JsonWrapper()
            json_result.add_json_string("op", "pong")
            json_result.add_json_string("ts", ts)
            connection.send(json_result.to_json_string())

        on_ping_event.set_event(on_ping_event_event)
        self.__connection.register_event(on_ping_event)
        self.__connection.connect("")

    def subscript_candlestick(self, symbol, period, on_candlestick):
        on_candlestick_event = WebSocketEvent(True)

        def on_candlestick_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal(
                "ch",
                CEIUtils.string_replace("market.{0}.kline.{1}", symbol,
                                        period), root_obj)
            return json_checker.complete()

        on_candlestick_event.set_trigger(on_candlestick_event_trigger)

        def on_candlestick_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            candlestick_data_var = CandlestickData()
            obj = root_obj.get_object("tick")
            candlestick_data_var.id = obj.get_int("id")
            candlestick_data_var.amount = obj.get_decimal("amount")
            candlestick_data_var.count = obj.get_int("count")
            candlestick_data_var.open = obj.get_decimal("open")
            candlestick_data_var.close = obj.get_decimal("close")
            candlestick_data_var.low = obj.get_decimal("low")
            candlestick_data_var.high = obj.get_decimal("high")
            candlestick_data_var.vol = obj.get_decimal("vol")
            on_candlestick(candlestick_data_var)

        on_candlestick_event.set_event(on_candlestick_event_event)
        self.__connection.register_event(on_candlestick_event)
        ts = CEIUtils.get_now("Unix_ms")
        json = JsonWrapper()
        json.add_json_string(
            "sub",
            CEIUtils.string_replace("market.{0}.kline.{1}", symbol, period))
        json.add_json_string("id", ts)
        self.__connection.send(json.to_json_string())

    def request_candlestick(self, symbol, period, on_candlestick):
        on_candlestick_event = WebSocketEvent(False)

        def on_candlestick_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal(
                "rep",
                CEIUtils.string_replace("market.{0}.kline.{1}", symbol,
                                        period), root_obj)
            return json_checker.complete()

        on_candlestick_event.set_trigger(on_candlestick_event_trigger)

        def on_candlestick_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            candlestick_var = Candlestick()
            obj = root_obj.get_array("data")
            for item in obj.array():
                candlestick_data_var = CandlestickData()
                candlestick_data_var.id = item.get_int("id")
                candlestick_data_var.amount = item.get_decimal("amount")
                candlestick_data_var.count = item.get_int("count")
                candlestick_data_var.open = item.get_decimal("open")
                candlestick_data_var.close = item.get_decimal("close")
                candlestick_data_var.low = item.get_decimal("low")
                candlestick_data_var.high = item.get_decimal("high")
                candlestick_data_var.vol = item.get_decimal("vol")
                if candlestick_var.data is None:
                    candlestick_var.data = list()
                candlestick_var.data.append(candlestick_data_var)
            on_candlestick(candlestick_var)

        on_candlestick_event.set_event(on_candlestick_event_event)
        self.__connection.register_event(on_candlestick_event)
        ts = CEIUtils.get_now("Unix_ms")
        json = JsonWrapper()
        json.add_json_string(
            "req",
            CEIUtils.string_replace("market.{0}.kline.{1}", symbol, period))
        json.add_json_string("id", ts)
        self.__connection.send(json.to_json_string())

    def subscript_market_depth(self, symbol, type_u, on_depth):
        on_depth_event = WebSocketEvent(True)

        def on_depth_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal(
                "ch",
                CEIUtils.string_replace("market.{0}.depth.{1}", symbol,
                                        type_u), root_obj)
            return json_checker.complete()

        on_depth_event.set_trigger(on_depth_event_trigger)

        def on_depth_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            depth_var = Depth()
            depth_var.ch = root_obj.get_string("ch")
            obj = root_obj.get_object("tick")
            obj0 = obj.get_array("bids")
            for item in obj0.array():
                quote_var = Quote()
                quote_var.price = item.get_decimal("[0]")
                quote_var.amount = item.get_decimal("[1]")
                if depth_var.bids is None:
                    depth_var.bids = list()
                depth_var.bids.append(quote_var)
            obj1 = obj.get_array("asks")
            for item2 in obj1.array():
                quote_var3 = Quote()
                quote_var3.price = item2.get_decimal("[0]")
                quote_var3.amount = item2.get_decimal("[1]")
                if depth_var.asks is None:
                    depth_var.asks = list()
                depth_var.asks.append(quote_var3)
            on_depth(depth_var)

        on_depth_event.set_event(on_depth_event_event)
        self.__connection.register_event(on_depth_event)
        ts = CEIUtils.get_now("Unix_ms")
        json = JsonWrapper()
        json.add_json_string(
            "sub",
            CEIUtils.string_replace("market.{0}.depth.{1}", symbol, type_u))
        json.add_json_string("id", ts)
        self.__connection.send(json.to_json_string())

    def request_depth(self, symbol, type_u, on_depth):
        on_depth_event = WebSocketEvent(True)

        def on_depth_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal(
                "ch",
                CEIUtils.string_replace("market.{0}.depth.{1}", symbol,
                                        type_u), root_obj)
            return json_checker.complete()

        on_depth_event.set_trigger(on_depth_event_trigger)

        def on_depth_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            depth_var = Depth()
            depth_var.ch = root_obj.get_string("ch")
            obj = root_obj.get_object("tick")
            obj0 = obj.get_array("bids")
            for item in obj0.array():
                quote_var = Quote()
                quote_var.price = item.get_decimal("[0]")
                quote_var.amount = item.get_decimal("[1]")
                if depth_var.bids is None:
                    depth_var.bids = list()
                depth_var.bids.append(quote_var)
            obj1 = obj.get_array("asks")
            for item2 in obj1.array():
                quote_var3 = Quote()
                quote_var3.price = item2.get_decimal("[0]")
                quote_var3.amount = item2.get_decimal("[1]")
                if depth_var.asks is None:
                    depth_var.asks = list()
                depth_var.asks.append(quote_var3)
            on_depth(depth_var)

        on_depth_event.set_event(on_depth_event_event)
        self.__connection.register_event(on_depth_event)
        ts = CEIUtils.get_now("Unix_ms")
        json = JsonWrapper()
        json.add_json_string(
            "sub",
            CEIUtils.string_replace("market.{0}.depth.{1}", symbol, type_u))
        json.add_json_string("id", ts)
        self.__connection.send(json.to_json_string())
Ejemplo n.º 7
0
Archivo: test.py Proyecto: macomfan/cei
 def __init__(self, option=None):
     self.__option = WebSocketOptions()
     self.__option.url = "ws://127.0.0.1:8888"
     if option is not None:
         self.__option.set_from(option)
     self.__connection = WebSocketConnection(self.__option)
Ejemplo n.º 8
0
Archivo: test.py Proyecto: macomfan/cei
class WSClient:
    def __init__(self, option=None):
        self.__option = WebSocketOptions()
        self.__option.url = "ws://127.0.0.1:8888"
        if option is not None:
            self.__option.set_from(option)
        self.__connection = WebSocketConnection(self.__option)

    def open(self, channel, name, on_connect):
        on_ping_event = WebSocketEvent(True)
    
        def on_ping_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("op", "ping", root_obj)
            return json_checker.complete()
        on_ping_event.set_trigger(on_ping_event_trigger)
    
        def on_ping_event_event(connection, msg):
            ts = CEIUtils.get_now("Unix_ms")
            json_result = JsonWrapper()
            json_result.add_json_string("op", "pong")
            json_result.add_json_string("ts", ts)
            connection.send(json_result.to_json_string())
        on_ping_event.set_event(on_ping_event_event)
        self.__connection.register_event(on_ping_event)
    
        def on_connect_event(connection):
            login = JsonWrapper()
            login.add_json_string("op", "login")
            obj = JsonWrapper()
            obj.add_json_string("Name", name)
            login.add_json_object("param", obj)
            obj0 = JsonWrapper()
            obj0.add_json_number("[]", float("1"))
            obj0.add_json_number("[]", float("2"))
            login.add_json_object("array", obj0)
            connection.send(login.to_json_string())
            on_connect(connection)
        self.__connection.set_on_connect(on_connect_event)
        self.__connection.connect(CEIUtils.string_replace("/websocket/{0}", channel))

    def close(self, on_close):
    
        def on_close_event(connection):
            on_close(connection)
        self.__connection.set_on_close(on_close_event)
        self.__connection.close()

    def request_echo(self, name, price, number, status, on_echo):
        on_echo_event = WebSocketEvent(False)
    
        def on_echo_event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("op", "echo", root_obj)
            obj = root_obj.get_object_or_none("param")
            json_checker.check_equal("Name", name, obj)
            return json_checker.complete()
        on_echo_event.set_trigger(on_echo_event_trigger)
    
        def on_echo_event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            simple_info_var = SimpleInfo()
            obj = root_obj.get_object("param")
            simple_info_var.name = obj.get_string("Name")
            simple_info_var.number = obj.get_int("Number")
            simple_info_var.price = obj.get_decimal("Price")
            simple_info_var.status = obj.get_bool("Status")
            on_echo(simple_info_var)
        on_echo_event.set_event(on_echo_event_event)
        self.__connection.register_event(on_echo_event)
        json_result = JsonWrapper()
        json_result.add_json_string("op", "echo")
        obj = JsonWrapper()
        obj.add_json_string("Name", name)
        obj.add_json_number("Price", price)
        obj.add_json_number("Number", number)
        obj.add_json_boolean("Status", status)
        json_result.add_json_object("param", obj)
        self.__connection.send(json_result.to_json_string())

    def subscribe_second1(self, on_second1):
        on_second1event = WebSocketEvent(True)
    
        def on_second1event_trigger(msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            json_checker = JsonChecker()
            json_checker.check_equal("ch", "Second1", root_obj)
            return json_checker.complete()
        on_second1event.set_trigger(on_second1event_trigger)
    
        def on_second1event_event(connection, msg):
            root_obj = JsonWrapper.parse_from_string(msg.get_string())
            simple_info_var = SimpleInfo()
            simple_info_var.name = root_obj.get_string("Name")
            simple_info_var.number = root_obj.get_int("Number")
            simple_info_var.price = root_obj.get_decimal("Price")
            simple_info_var.status = root_obj.get_bool("Status")
            on_second1(simple_info_var)
        on_second1event.set_event(on_second1event_event)
        self.__connection.register_event(on_second1event)
        json_result = JsonWrapper()
        json_result.add_json_string("op", "sub")
        json_result.add_json_string("name", "Second1")
        self.__connection.send(json_result.to_json_string())