Weekly Jargon for NSE Weekly

try:
    weekly
except NameError:
    #weekly = "20910" #20JUN Previously #20723 in monthend #20APR
    def getweekly():

        stuff = [['27-Aug-2020', '20AUG'], ['03-Sep-2020', '20903'], ['10-Sep-2020', '20910'], ['17-Sep-2020', '20917'], ['24-Sep-2020', '20SEP'], ['01-Oct-2020', '20O01'], ['08-Oct-2020', '20O08'], ['15-Oct-2020', '20O15'], ['22-Oct-2020', '20O22'], ['29-Oct-2020', '20OCT'], ['5-Nov-2020', '20N05'], ['12-Nov-2020', '20N12'], ['19-Nov-2020', '20N19'], ['26-Nov-2020', '20NOV'], ['03-Dec-2020', '20D03'], ['10-Dec-2020', '20D10'], ['17-Dec-2020', '20D17'], ['24-Dec-2020', '20DEC'], ['07-Jan-2021', '21107'], ['14-Jan-2021', '21114'], ['21-Jan-2021', '21121'], ['30-Jan-2021', '21JAN'], ['04-Feb-2021', '21204'], ['11-Feb-2021', '21211'], ['18-Feb-2021', '21218'], ['29-Feb-2021', '21FEB']]

        run_time=datetime.datetime.now()

        for x in range(0,len(stuff)):
            #Convertion to Datetime Object
            stuff[x][0] = datetime.datetime.strptime(stuff[x][0], '%d-%b-%Y')
            #Adding DTE
            stuff[x].append((run_time-stuff[x][0]).days)
            #Getting Expiry
            if((run_time-stuff[x][0]).days<=0):
                weekly_dict=x
                break

        def intraday_end():
            start_now=datetime.datetime.now().replace(hour=15, minute=20, second=0, microsecond=0)
            return start_now<datetime.datetime.now()


        try:
        #Case when I forgot to update the code
            if((run_time-stuff[weekly_dict][0]).days==0):
                if(intraday_end()==True):
                    weekly_dict =weekly_dict+1

            return (stuff[weekly_dict][1])
        except:
            return '20AUG'

    weekly =  getweekly()

If you’re having better solution do share.

1 Like