import login
login.check()
print("login Function Completed")
# from concurrent.futures import thread
import os
from datetime import datetime, timedelta
from fyers_api import fyersModel
import pandas as pd
import pandas_ta as ta
from fyers_api.Websocket import ws
pd.options.mode.chained_assignment = None
pd.options.display.float_format = "{:,.2f}".format
client_id=open('client_id.txt','r').read().strip()
access_token=open('fyers_access_token.txt','r').read().strip()
# print(access_token)
fyers = fyersModel.FyersModel(token=access_token,is_async=False,client_id=client_id,log_path=os.getcwd())
response=fyers.get_profile()
print("test_data_V1.py : ",response['data']['name'],":", sorted(response['data'].keys())[-1],":",response['data']['pwd_to_expire'])
one_min_time_ohlc = []
min_data_org_list=[]
Old_date_from = (datetime.now() + timedelta(days=-6)).strftime("%Y-%m-%d") # Original code
Old_date_to = (datetime.now() + timedelta(days=1)).strftime("%Y-%m-%d")
data = {"symbol":"NSE:NIFTY50-INDEX","resolution":"1","date_format":"1","range_from":Old_date_from,"range_to":Old_date_to,"cont_flag":"1"}
# data = {"symbol":"MCX:CRUDEOIL23JULFUT","resolution":"1","date_format":"1","range_from":Old_date_from,"range_to":Old_date_to,"cont_flag":"1"}
min_data_org_list=fyers.history(data)['candles']
df = pd.DataFrame(min_data_org_list)
df.drop(df.columns[[5]], axis=1, inplace=True)
df.index.names = ['Index']
df.columns = ["Date", "Open", "High", "Low", "Close"]
df['Date'] = df['Date'].apply(lambda d: datetime.fromtimestamp(int(d)).strftime('%Y-%m-%d %H:%M:%S'))
# print(df)
# print(df.tail(1))
def run_data():
print("run_data() ........ start........... ", datetime.now())
global df, one_min_time_ohlc
df.loc[len(df)] = one_min_time_ohlc
# print(df.tail(2))
df = ta.ha(open_=df["Open"], close=df["Close"] , high=df["High"], low=df["Low"])
print(df.tail(2))
print("run_data() ........ end.............. ", datetime.now())
candel_time = 0.0
old_timestamp=0.0
def custom_message(msg):
global candel_time,old_timestamp,one_min_time_ohlc,df
if( (one_min_time_ohlc and (int(datetime.fromtimestamp(int(msg[0]["timestamp"])).strftime('%M')) - int(datetime.fromtimestamp(int(old_timestamp)).strftime('%M'))) >= 1 or (int(datetime.fromtimestamp(int(msg[0]["timestamp"])).strftime('%M')) - int(datetime.fromtimestamp(int(old_timestamp)).strftime('%M'))) == -59)):
print(one_min_time_ohlc, " on msg.......... ", datetime.now())
# old_timestamp = msg[0]["timestamp"]
run_data()
old_timestamp = msg[0]["timestamp"]
candel_time = datetime.fromtimestamp(int(msg[0]["timestamp"])).strftime('%Y-%m-%d %H:%M:%S')
one_min_time_ohlc = [candel_time, msg[0]["min_open_price"],msg[0]["min_high_price"],msg[0]["min_low_price"],msg[0]["min_close_price"]]
data_type = "symbolData"
symbol =["NSE:NIFTY50-INDEX"]
# symbol =["MCX:CRUDEOIL23JULFUT"]
fs = ws.FyersSocket(access_token=client_id + ':' + access_token,run_background=False,log_path=os.getcwd())
fs.websocket_data = custom_message
fs.subscribe(symbol=symbol,data_type=data_type)
fs.keep_running()
Result
login Function Completed
test_data_V1.py : PRAMOD XXXXXX XXXX : totp : -212
['2023-07-13 13:05:59', 19547.0, 19549.35, 19545.1, 19548.2] on msg.......... 2023-07-13 13:06:00.075657
run_data() ........ start........... 2023-07-13 13:06:00.075657
HA_open HA_high HA_low HA_close
Index
1729 19,544.37 19,548.15 19,544.37 19,546.99
1730 19,545.68 19,549.35 19,545.10 19,547.41
run_data() ........ end.............. 2023-07-13 13:06:01.270386
['2023-07-13 13:06:59', 19548.55, 19550.0, 19544.5, 19545.95] on msg.......... 2023-07-13 13:07:00.087791
run_data() ........ start........... 2023-07-13 13:07:00.087791
['2023-07-13 13:06:59', 19548.55, 19550.0, 19544.5, 19545.95] on msg.......... 2023-07-13 13:07:01.067914
run_data() ........ start........... 2023-07-13 13:07:01.077492
['2023-07-13 13:06:59', 19548.55, 19550.0, 19544.5, 19545.95] on msg.......... 2023-07-13 13:07:02.058466
run_data() ........ start........... 2023-07-13 13:07:02.058466
['2023-07-13 13:06:59', 19548.55, 19550.0, 19544.5, 19545.95] on msg.......... 2023-07-13 13:07:03.064413
run_data() ........ start........... 2023-07-13 13:07:03.064413
['2023-07-13 13:06:59', 19548.55, 19550.0, 19544.5, 19545.95] on msg.......... 2023-07-13 13:07:04.073103
run_data() ........ start........... 2023-07-13 13:07:04.073103
['2023-07-13 13:06:59', 19548.55, 19550.0, 19544.5, 19545.95] on msg.......... 2023-07-13 13:07:05.129050
run_data() ........ start........... 2023-07-13 13:07:05.129050
['2023-07-13 13:06:59', 19548.55, 19550.0, 19544.5, 19545.95] on msg.......... 2023-07-13 13:07:06.077814
run_data() ........ start........... 2023-07-13 13:07:06.077814
['2023-07-13 13:06:59', 19548.55, 19550.0, 19544.5, 19545.95] on msg.......... 2023-07-13 13:07:08.072051
run_data() ........ start........... 2023-07-13 13:07:08.072051
['2023-07-13 13:06:59', 19548.55, 19550.0, 19544.5, 19545.95] on msg.......... 2023-07-13 13:07:09.059447
run_data() ........ start........... 2023-07-13 13:07:09.059447
['2023-07-13 13:06:59', 19548.55, 19550.0, 19544.5, 19545.95] on msg.......... 2023-07-13 13:07:10.068598
run_data() ........ start........... 2023-07-13 13:07:10.068598