Navigation

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

    How to map the token number with their symbol name?

    General Discussion
    3
    7
    75
    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.
    • N
      nayan_nandi last edited by

      How to map the token number with their symbol name?
      I have subscribe RELIANCE_EQ's token number.

      token = "nse_cm|2885"  # Token number of RELIANCE_EQ
      task = "mw"  # "mw"|"sfi"|"dp"
      

      And stream the WebSocket. It's perfectly works.

      [{'ak': 'ok', 'msg': 'heartbeat', 'task': 'hb'}] 
      
      [] 
      
      [{'e': 'nse_cm', 'ltp': '2038.50', 'ltq': '20', 'ltt': 'NA', 'name': 'sf', 'tk': '2885'}] 
      
      [{'name': 'tm', 'tvalue': '31/03/2021 09:52:10'}] 
      
      [{'ap': '2031.81', 'bp': '2038.05', 'bq': '44', 'bs': '121', 'c': '2029.30', 'cng': '09.20', 'e': 'nse_cm', 'lo': '2011.60', 'ltp': '2038.50', 'ltq': '10', 'ltt': '31/03/2021 09:52:10', 'name': 'sf', 'nc': '00.45', 'sp': '2038.50', 'tbq': '319613', 'tk': '2885', 'to': '2680052885.07', 'tsq': '321701', 'v': '1319047'}] 
      
      [{'e': 'nse_cm', 'ltp': '2038.50', 'ltq': '25', 'ltt': 'NA', 'name': 'sf', 'tk': '2885'}] 
      
      [{'name': 'tm', 'tvalue': '31/03/2021 09:52:11'}] 
      
      [{'ap': '2031.81', 'bp': '2038.00', 'bq': '291', 'bs': '23', 'c': '2029.30', 'cng': '09.20', 'e': 'nse_cm', 'lo': '2011.60', 'ltp': '2038.50', 'ltq': '2', 'ltt': '31/03/2021 09:52:11', 'name': 'sf', 'nc': '00.45', 'sp': '2038.50', 'tbq': '320028', 'tk': '2885', 'to': '2680540519.47', 'tsq': '321777', 'v': '1319287'}] 
      
      [{'e': 'nse_cm', 'ltp': '2038.50', 'ltq': '2', 'ltt': 'NA', 'name': 'sf', 'tk': '2885'}] 
      
      [{'name': 'tm', 'tvalue': '31/03/2021 09:52:12'}] 
      
      [{'ap': '2031.81', 'bp': '2038.05', 'bq': '161', 'bs': '12', 'c': '2029.30', 'cng': '09.20', 'e': 'nse_cm', 'lo': '2011.60', 'ltp': '2038.50', 'ltq': '6', 'ltt': '31/03/2021 09:52:12', 'name': 'sf', 'nc': '00.45', 'sp': '2038.50', 'tbq': '320288', 'tk': '2885', 'to': '2680570996.62', 'tsq': '321742', 'v': '1319302'}] 
      

      But the problem is it's showing messy especially when we subscribe multiple tokens. So how can we map the token number with their symbol name and display that like this__

      RELIANCE_EQ:- tk: 2885, ltp:2038.50, to: 2680570996.62
      

      Can anyone please give any idea to do that.......

      J 1 Reply Last reply Reply Quote 0
      • J
        jiwan1986 @nayan_nandi last edited by

        @nayan_nandi You get 'tk' in tick response. Here you have subscribed to reliance and token for that is 2885. Now if you take a look at response, you would find key named 'tk' which is token for that scrip. You can compare the 'tk' to determine the corresponding scrip.

        N 1 Reply Last reply Reply Quote 0
        • N
          nayan_nandi @jiwan1986 last edited by

          @rjbanna Yes Sir, but here has two type of response.

          [{'ap': '2031.81', 'bp': '2038.05', 'bq': '44', 'bs': '121', 'c': '2029.30', 'cng': '09.20', 'e': 'nse_cm', 'lo': '2011.60', 'ltp': '2038.50', 'ltq': '10', 'ltt': '31/03/2021 09:52:10', 'name': 'sf', 'nc': '00.45', 'sp': '2038.50', 'tbq': '319613', 'tk': '2885', 'to': '2680052885.07', 'tsq': '321701', 'v': '1319047'}] 
          
          
          [{'e': 'nse_cm', 'ltp': '2038.50', 'ltq': '25', 'ltt': 'NA', 'name': 'sf', 'tk': '2885'}] 
          

          So how can I select first one programmatically, not second one?

          J S 2 Replies Last reply Reply Quote 0
          • J
            jiwan1986 @nayan_nandi last edited by

            @nayan_nandi I see some patterns in both the responses. For the first response, you can see 'ltt' has the time value but in the second response, 'ltt' is NA. So I believe you can use that key to differentiate between the two. You have to check if this is true for all the responses.

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

              @nayan_nandi

              You have to search for keys in the dictionary.. next tick comes with ltt NA because it was only volume/quote change and not transaction. Thats my understanding.

              N 1 Reply Last reply Reply Quote 0
              • N
                nayan_nandi @Surya 1 last edited by

                @rajanprabu Can anyone please tell me what is wrong with this code__

                token = "nse_cm|2885&nse_cm|3465&nse_cm|1660"
                task = "mw"  # "mw"|"sfi"|"dp"
                
                ss = WebSocket(FEED_TOKEN, CLIENT_CODE)
                
                trading_portfolio = {"nse_cm|2885": "RELIANCE", "nse_cm|3465": "TATAMOTORS", "nse_cm|1660": "ITC"}
                
                
                def on_tick(ws, tick):
                    for single_company in tick:
                        inst_of_single_company = single_company['tk']
                        name = trading_portfolio[inst_of_single_company]
                
                        print(single_company, name)
                

                I'm getting error like this____

                Unhandled Error
                Traceback (most recent call last):
                  File "C:\Python 3.9.2\lib\site-packages\twisted\python\log.py", line 101, in callWithLogger
                    return callWithContext({"system": lp}, func, *args, **kw)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\python\log.py", line 85, in callWithContext
                    return context.call({ILogContext: newCtx}, func, *args, **kw)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\python\context.py", line 118, in callWithContext
                    return self.currentContext().callWithContext(ctx, func, *args, **kw)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\python\context.py", line 83, in callWithContext
                    return func(*args, **kw)
                --- <exception caught here> ---
                  File "C:\Python 3.9.2\lib\site-packages\twisted\internet\selectreactor.py", line 149, in _doReadOrWrite
                    why = getattr(selectable, method)()
                  File "C:\Python 3.9.2\lib\site-packages\twisted\internet\tcp.py", line 246, in doRead
                    return self._dataReceived(data)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\internet\tcp.py", line 251, in _dataReceived
                    rval = self.protocol.dataReceived(data)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\protocols\tls.py", line 324, in dataReceived
                    self._flushReceiveBIO()
                  File "C:\Python 3.9.2\lib\site-packages\twisted\protocols\tls.py", line 290, in _flushReceiveBIO
                    ProtocolWrapper.dataReceived(self, bytes)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\protocols\policies.py", line 107, in dataReceived
                    self.wrappedProtocol.dataReceived(data)
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\twisted\websocket.py", line 290, in dataReceived
                    self._dataReceived(data)
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\websocket\protocol.py", line 1207, in _dataReceived
                    self.consumeData()
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\websocket\protocol.py", line 1219, in consumeData
                    while self.processData() and self.state != WebSocketProtocol.STATE_CLOSED:
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\websocket\protocol.py", line 1579, in processData
                    fr = self.onFrameEnd()
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\websocket\protocol.py", line 1704, in onFrameEnd
                    self._onMessageEnd()
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\twisted\websocket.py", line 318, in _onMessageEnd
                    self.onMessageEnd()
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\websocket\protocol.py", line 628, in onMessageEnd
                    self._onMessage(payload, self.message_is_binary)
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\twisted\websocket.py", line 321, in _onMessage
                    self.onMessage(payload, isBinary)
                  File "C:\Python 3.9.2\lib\site-packages\smartapi\webSocket.py", line 41, in onMessage
                    self.factory.on_message(self, payload, is_binary)
                  File "C:\Python 3.9.2\lib\site-packages\smartapi\webSocket.py", line 337, in _on_message
                    self._parse_text_message(payload)
                  File "C:\Python 3.9.2\lib\site-packages\smartapi\webSocket.py", line 377, in _parse_text_message
                    self.on_ticks(self, data)
                  File "C:\Users\Nayan\PycharmProjects\Angel_Broking\main.py", line 31, in on_tick
                    inst_of_single_company = single_company['tk']
                builtins.KeyError: 'tk'
                
                Unhandled Error
                Traceback (most recent call last):
                  File "C:\Python 3.9.2\lib\site-packages\smartapi\webSocket.py", line 233, in connect
                    reactor.run(**opts)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\internet\base.py", line 1423, in run
                    self.mainLoop()
                  File "C:\Python 3.9.2\lib\site-packages\twisted\internet\base.py", line 1436, in mainLoop
                    reactorBaseSelf.doIteration(t)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\internet\selectreactor.py", line 143, in doSelect
                    _logrun(selectable, _drdw, selectable, method)
                --- <exception caught here> ---
                  File "C:\Python 3.9.2\lib\site-packages\twisted\python\log.py", line 101, in callWithLogger
                    return callWithContext({"system": lp}, func, *args, **kw)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\python\log.py", line 85, in callWithContext
                    return context.call({ILogContext: newCtx}, func, *args, **kw)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\python\context.py", line 118, in callWithContext
                    return self.currentContext().callWithContext(ctx, func, *args, **kw)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\python\context.py", line 83, in callWithContext
                    return func(*args, **kw)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\internet\selectreactor.py", line 154, in _doReadOrWrite
                    self._disconnectSelectable(selectable, why, method == "doRead")
                  File "C:\Python 3.9.2\lib\site-packages\twisted\internet\posixbase.py", line 306, in _disconnectSelectable
                    selectable.connectionLost(failure.Failure(why))
                  File "C:\Python 3.9.2\lib\site-packages\twisted\internet\tcp.py", line 506, in connectionLost
                    self._commonConnection.connectionLost(self, reason)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\internet\tcp.py", line 324, in connectionLost
                    protocol.connectionLost(reason)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\protocols\tls.py", line 389, in connectionLost
                    self._flushReceiveBIO()
                  File "C:\Python 3.9.2\lib\site-packages\twisted\protocols\tls.py", line 290, in _flushReceiveBIO
                    ProtocolWrapper.dataReceived(self, bytes)
                  File "C:\Python 3.9.2\lib\site-packages\twisted\protocols\policies.py", line 107, in dataReceived
                    self.wrappedProtocol.dataReceived(data)
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\twisted\websocket.py", line 290, in dataReceived
                    self._dataReceived(data)
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\websocket\protocol.py", line 1207, in _dataReceived
                    self.consumeData()
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\websocket\protocol.py", line 1219, in consumeData
                    while self.processData() and self.state != WebSocketProtocol.STATE_CLOSED:
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\websocket\protocol.py", line 1571, in processData
                    fr = self.onFrameData(payload)
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\websocket\protocol.py", line 1666, in onFrameData
                    self._onMessageFrameData(payload)
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\twisted\websocket.py", line 309, in _onMessageFrameData
                    self.onMessageFrameData(payload)
                  File "C:\Python 3.9.2\lib\site-packages\autobahn\websocket\protocol.py", line 602, in onMessageFrameData
                    self.frame_data.append(payload)
                builtins.AttributeError: 'NoneType' object has no attribute 'append'
                
                J 1 Reply Last reply Reply Quote 0
                • J
                  jiwan1986 @nayan_nandi last edited by jiwan1986

                  @nayan_nandi You need to handle exceptions. Key 'tk' won't be in every ticks. You have to add additional if condition after for loop.

                  if single_company.get('tk'):
                      #do something
                  
                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post