Navigation

    SmartAPI Forum
    • Register
    • Login
    • Search
    • Categories
    • Popular
    • Groups
    • FAQs
    • API Docs

    Websocket 2.0

    Python SDK
    0
    17
    747
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Karthikeyan @admin last edited by

      @admin Hi @admin

      I have updated the code like below to convert the bytes to string and I can see the response.

      def _parse_binary_data(self, binary_data):
          try:
              parsed_data = {
                  "subscription_mode": self._unpack_data(binary_data, 0, 1, byte_format="B")[0],
                  "exchange_type": self._unpack_data(binary_data, 1, 2, byte_format="B")[0],
                  # "token": SmartWebSocketV2._parse_token_value(binary_data[2:27]),
                  "token": binary_data[2:27].decode("utf-8").replace("\x00",""),
                  "sequence_number": self._unpack_data(binary_data, 27, 35, byte_format="q")[0],
                  "exchange_timestamp": self._unpack_data(binary_data, 35, 43, byte_format="q")[0],
                  "last_traded_price": self._unpack_data(binary_data, 43, 51, byte_format="q")[0]
              }
      

      Got connected to server...
      on open
      Ticks: {'subscription_mode': 3, 'exchange_type': 1, 'token': '26009', 'sequence_number': 6346734, 'exchange_timestamp': 1668667371000, 'last_traded_price': 4245320, 'subscription_mode_val': 'SNAP_QUOTE', 'last_traded_quantity': 0, 'average_traded_price': 0, 'volume_trade_for_the_day': 0, 'total_buy_quantity': 0.0, 'total_sell_quantity': 0.0, 'open_price_of_the_day': 0, 'high_price_of_the_day': 0, 'low_price_of_the_day': 0, 'closed_price': 4253530, 'last_traded_timestamp': 0, 'open_interest': 31252900, 'open_interest_change_percentage': 4626580563041346420, 'upper_circuit_limit': 0, 'lower_circuit_limit': 0, '52_week_high_price': 0, '52_week_low_price': 0, 'best_5_buy_data': [{'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}], 'best_5_sell_data': [{'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}]}
      Ticks: {'subscription_mode': 3, 'exchange_type': 1, 'token': '26009', 'sequence_number': 6347286, 'exchange_timestamp': 1668667372000, 'last_traded_price': 4245150, 'subscription_mode_val': 'SNAP_QUOTE', 'last_traded_quantity': 0, 'average_traded_price': 0, 'volume_trade_for_the_day': 0, 'total_buy_quantity': 0.0, 'total_sell_quantity': 0.0, 'open_price_of_the_day': 0, 'high_price_of_the_day': 0, 'low_price_of_the_day': 0, 'closed_price': 4253530, 'last_traded_timestamp': 0, 'open_interest': 31252900, 'open_interest_change_percentage': 4626580563041346420, 'upper_circuit_limit': 0, 'lower_circuit_limit': 0, '52_week_high_price': 0, '52_week_low_price': 0, 'best_5_buy_data': [{'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 0, 'quantity': 0, 'price': 0, 'no of orders': 0}], 'best_5_sell_data': [{'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}, {'flag': 1, 'quantity': 0, 'price': 0, 'no of orders': 0}]}

      S D 2 Replies Last reply Reply Quote 1
      • A
        ashokkmr22 @Surya 1 last edited by

        @rajanprabu

        Below code will work. Use it for time being.

        @staticmethod
            def _parse_token_value(binary_packet):
                token = ""
                token_data = binary_packet.split(b'\x00')
                for split in token_data:
                    if split:
                        token = split.decode("UTF-8")
                return token
        
        D 1 Reply Last reply Reply Quote 1
        • A
          ashokkmr22 last edited by

          Below code will work use it for time being

          @staticmethod
              def _parse_token_value(binary_packet):
                  token = ""
                  token_data = binary_packet.split(b'\x00')
                  for split in token_data:
                      if split:
                          token = split.decode("UTF-8")
                  return token
          
          T 1 Reply Last reply Reply Quote 1
          • S
            smitshahfo @Karthikeyan last edited by

            @Karthikeyan
            @rajanprabu
            @ashokkmr22

            Thank you for the fix,

            Can you please help me to get time stamp in datetime format.
            'exchange_timestamp': 1668667371000.
            Also prices (OHLC) into their required formats.

            Thanks in advance.

            punit T 2 Replies Last reply Reply Quote 0
            • punit
              punit @smitshahfo last edited by

              @vrkhyd commented you on another thread

              1 Reply Last reply Reply Quote 0
              • S
                sajy @Surya 1 last edited by

                @rajanprabu same here now. any solution??

                1 Reply Last reply Reply Quote 1
                • T
                  tanmoydev @ashokkmr22 last edited by

                  @ashokkmr22 thanks for your convenience

                  1 Reply Last reply Reply Quote 0
                  • T
                    tanmoydev @smitshahfo last edited by

                    @vrkhyd

                    import datetime

                    timestamp = 1671097663
                    dt_obj = datetime.datetime.fromtimestamp(timestamp)

                    print("date_time:",dt_obj)
                    print("type of dt:",type(dt_obj))

                    1 Reply Last reply Reply Quote 0
                    • D
                      deepu1977 @ashokkmr22 last edited by

                      @ashokkmr22 said in Websocket 2.0:

                      split.decode("UTF-8")
                      return token

                      I tried this and did not worked. Can you please suggest alternate option?

                      1 Reply Last reply Reply Quote 0
                      • D
                        dharm0072 @Karthikeyan last edited by

                        @Karthikeyan this is not working
                        please help

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post