Navigation

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

    Getting delay response from websocket 2

    Python SDK
    0
    1
    21
    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.
    • J
      joyitaroy last edited by

      Hello,

      Could you please let me know that anyone experiencing data retrieve delay from Samrt API.

      Because I am facing this issue from last few days. Just giving one sample today's data for your information.

      [I 250123 10:03:39 main_new:199] Ticks: {'subscription_mode': 2, 'exchange_type': 2, 'token': '126550', 'sequence_number': 6822265, 'exchange_timestamp': 1737606066000, 'last_traded_price': 2500, 'subscription_mode_val': 'QUOTE', 'last_traded_quantity': 125, 'average_traded_price': 4064, 'volume_trade_for_the_day': 432500, 'total_buy_quantity': 53000.0, 'total_sell_quantity': 43875.0, 'open_price_of_the_day': 9330, 'high_price_of_the_day': 9335, 'low_price_of_the_day': 2020, 'closed_price': 9130}

      This "[I 250123 10:03:39 main_new:199]" part is our system date and time. After ticks is from Smart API return data. when I convert exchange timestamp value, I am getting "09:51:06".

      I am little bit confused. I am getting 9:51:06 data at 10:03:39.

      Is there any issue in Smart API today.

      Please find my attached code, please le me know, is there any mistake while calling socket. I am new in algo.

      ========== CODE START ========
      import threading
      from SmartApi import SmartConnect # or from SmartApi.smartConnect import SmartConnect
      import pyotp
      from logzero import logger
      from SmartApi.smartWebSocketV2 import SmartWebSocketV2
      import pandas as pd

      import time
      from Technical_Analysis_new import *
      from datetime import datetime
      from Resource import *
      import log

      ===== Members Table START ==============

      conn = create_connection("DEFAULT")
      cur = conn.cursor()
      cur.execute("SELECT name,access_token FROM members where status='Active'")
      members_data = cur.fetchall()

      default_list = default_config_value_collect_new()
      start_time=default_list[4]
      end_time=default_list[5]
      symbol_details_list = default_symbol_value_collect_new()
      symbols = symbol_details_list[0]

      ======= Angel Broking Smart API Data fetch START ===================

      api_key = 'RBjhSNNt'
      username = 'J000000'
      pwd = '0000'
      smartApi = SmartConnect(api_key)

      try:
      token = "XXXXXXXXXXXXXXXXXXXXXXXXX"
      totp = pyotp.TOTP(token).now()
      except Exception as e:
      logger.error("Invalid Token: The provided token is not valid.")
      raise e

      data = smartApi.generateSession(username, pwd, totp)

      if data['status'] == False:
      logger.error(data)

      else:
      authToken = data['data']['jwtToken']
      refreshToken = data['data']['refreshToken']
      feedToken = smartApi.getfeedToken()

      correlation_id = "abc123"
      action = 1
      mode = 2
      

      tokenlist=[]

      symbols are coming from our database

      token_list1 = [
      {
      "exchangeType": 2,
      "tokens": symbols
      }
      ]

      sws = SmartWebSocketV2(authToken, api_key, username, feedToken)

      def on_data(wsapp, message):
      for ii in symbols:
      if (message['token'] == ii):
      Exch_Token=message['token']
      Exch_Date_Time=datetime.fromtimestamp(message['exchange_timestamp']/1000).strftime('%Y-%m-%d %H:%M:%S')
      Exch_LTP=float(message['last_traded_price']/100)
      current_Time=(datetime.fromtimestamp(message['exchange_timestamp']/1000).strftime('%H'))+(datetime.fromtimestamp(message['exchange_timestamp']/1000).strftime('%M'))
      # inserting data into database
      Data_Insert_In_DB(wsapp,current_Time,Exch_Date_Time,Exch_LTP,Exch_Token)

      def on_open(wsapp):
      logger.info("on open")
      sws.subscribe(correlation_id, mode, token_list1)

      def on_error(wsapp, error):
      logger.error(error)

      def on_close(wsapp):
      logger.info("Close")

      def close_connection():
      sws.close_connection()

      def Data_Insert_In_DB(wsapp,current_Time,Exch_Date_Time,Exch_LTP,Exch_Token):
      try:
      if int(current_Time) >= int(end_time):
      else:
      if int(current_Time) >= start_time:
      data = {'datetime_val': [Exch_Date_Time],
      'close_val': [Exch_LTP],
      'token': [Exch_Token]}

                  # Create DataFrame
                  dfdata = pd.DataFrame(data)
                  ".......more code and execute trade here"
      
      except Exception as e:
          exc_type, exc_obj, exc_tb = sys.exc_info()
          fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
          log.log_message(str(exc_type) + ", " + fname + ", " + str(exc_tb.tb_lineno))
          print(exc_type, fname, exc_tb.tb_lineno)
      

      sws.on_open = on_open
      sws.on_data = on_data
      sws.on_error = on_error
      sws.on_close = on_close
      sws.Data_Insert_In_DB = Data_Insert_In_DB

      threading.Thread(target=sws.connect).start()

      Keep your thread alive

      while True:
      time.sleep(120)
      ========== CODE END =========

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