strike project django view

 import json

from django.shortcuts import render

from rest_framework.views import APIView

from rest_framework import permissions

from rest_framework.request import Request

from  multistrikeoi.user_selected_price  import UserSelectedPrice as usp

from multistrikeoi.serializers import UserSelectedSerializer,GetNearestStrike,GetTrendingStrike

from  multistrikeoi.utlis import utils as u

from datetime import datetime,timedelta

import os

from rest_framework.response import Response

from rest_framework import status

import pandas as pd

from django.db import connection


today_string=None

yesterday_string=None

tomorrow_string=None



def detect_day(today):

    global today_string, yesterday_string, tomorrow_string

    date_string = today

    parsed_date = datetime.strptime(date_string, "%Y-%m-%d")

    day_of_week = parsed_date.weekday()

    day_of_week_string = parsed_date.strftime("%A")

    # print(day_of_week)

    # print(day_of_week_string)


    date_string = today

    parsed_date = datetime.strptime(date_string, "%Y-%m-%d")


    yesterday = parsed_date - timedelta(days=1)

    yesterday_string = yesterday.strftime("%Y-%m-%d")

    # print("Yesterday's date:", yesterday_string)


    if day_of_week == 0:

        yesterday = parsed_date - timedelta(days=3)

        yesterday_string = yesterday.strftime("%Y-%m-%d")

        today_string = today

        tomorrow_string = parsed_date + timedelta(days=1)

        tomorrow_string = tomorrow_string.strftime("%Y-%m-%d")


    if day_of_week == 1:

        yesterday = parsed_date - timedelta(days=1)

        yesterday_string = yesterday.strftime("%Y-%m-%d")

        today_string = today

        tomorrow_string = parsed_date + timedelta(days=1)

        tomorrow_string = tomorrow_string.strftime("%Y-%m-%d")


    if day_of_week == 2:

        yesterday = parsed_date - timedelta(days=1)

        yesterday_string = yesterday.strftime("%Y-%m-%d")

        today_string = today

        tomorrow_string = parsed_date + timedelta(days=1)

        tomorrow_string = tomorrow_string.strftime("%Y-%m-%d")


    if day_of_week == 3:

        yesterday = parsed_date - timedelta(days=1)

        yesterday_string = yesterday.strftime("%Y-%m-%d")

        today_string = today

        tomorrow_string = parsed_date + timedelta(days=1)

        tomorrow_string = tomorrow_string.strftime("%Y-%m-%d")


    if day_of_week == 4:

        yesterday = parsed_date - timedelta(days=1)

        yesterday_string = yesterday.strftime("%Y-%m-%d")

        today_string = today

        tomorrow_string = parsed_date + timedelta(days=1)

        tomorrow_string = tomorrow_string.strftime("%Y-%m-%d")


    if day_of_week == 5:

        yesterday = parsed_date - timedelta(days=2)

        yesterday_string = yesterday.strftime("%Y-%m-%d")

        today_string = today

        today_string = datetime.strptime(today_string, "%Y-%m-%d")

        today_string = today_string - timedelta(days=1)

        today_string = today_string.strftime("%Y-%m-%d")

        tomorrow_string = parsed_date + timedelta(days=1)

        tomorrow_string = tomorrow_string.strftime("%Y-%m-%d")


    if day_of_week == 6:

        yesterday = parsed_date - timedelta(days=3)

        yesterday_string = yesterday.strftime("%Y-%m-%d")

        today_string = today

        today_string = datetime.strptime(today_string, "%Y-%m-%d")

        today_string = today_string - timedelta(days=2)

        today_string = today_string.strftime("%Y-%m-%d")

        tomorrow_string = parsed_date + timedelta(days=1)

        tomorrow_string = tomorrow_string.strftime("%Y-%m-%d")


class UserSelectedAPI(APIView):

    permission_classes = [permissions.AllowAny]

    authentication_classes = []


    def post(self, request: Request):

        serializer = UserSelectedSerializer(data=request.data)

        if serializer.is_valid():

            symbol = request.data["symbol"]

            instrument = request.data["instrument"]

            strikeprice = request.data["strikeprice"]

            option_type = request.data["option_type"]

            expiery = request.data["expiery"]

            start_date=request.data["start_date"]


            global today_string, yesterday_string, tomorrow_string


            detect_day(today=start_date)




            df_selected_strike=usp.combined_oi_calculation(

                symbol=symbol,

                instrument=instrument,

                strikeprice=strikeprice,

                option_type=option_type,

                expiery=expiery,


                today = today_string,

                tomorrow = tomorrow_string


            )


            df_eod_data=usp.get_historical_eod_data(

                symbol=symbol,

                instrument=instrument,

                strikeprice=strikeprice,

                option_type=option_type,

                expiery=expiery,

                yesterday_string=yesterday_string

            )

            df_eod_data['expiry_date'] = df_eod_data['expiry_date'].apply(lambda x: x.strftime('%Y-%m-%d'))






            merged_df = df_selected_strike.merge(

                df_eod_data[["expiry_date", "open_interest", "Combined OI EOD"]],

                on="expiry_date",

                how="left",

            )





            merged_df.rename(

                columns={"open_interest": "Yesterday Eod OI"}, inplace=True

            )

            merged_df["Change In Oi"] = (

                merged_df["open_interest_x"] - merged_df["Yesterday Eod OI"]

            )

            merged_df["Change In Combined Oi"] = (

                merged_df["Combined OI"] - merged_df["Combined OI EOD"]

            )


            merged_df_json = merged_df.to_json(orient="records", date_format="iso")



            return Response(

                {"data": json.loads(merged_df_json)}, status=status.HTTP_200_OK

            )

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)



class GetNearestStrikAPI(APIView):

    permission_classes = [permissions.AllowAny]

    authentication_classes = []



    def post(self, request: Request):

        engine = connection

        serializer = GetNearestStrike(data=request.data)

        if serializer.is_valid():

            symbol  = request.data["symbol"]

            monthly_exp  = request.data["monthly_exp"]

            multiplier  = request.data["multiplier"]

            selected_exp  = request.data["selected_exp"]

            instrument  = request.data["instrument"]

            start_date = request.data["start_date"]

            global today_string, yesterday_string, tomorrow_string


            detect_day(today=start_date)


            if (symbol == "NIFTY") or (symbol == "BANKNIFTY") or (symbol == "MIDCPNIFTY") or (symbol == "FINNIFTY"):

                ins = "FUTIDX"


            else:

                ins = "FUTSTK"




            df = pd.read_sql_query(

                # isme date current date se jada honi chaiee bs

                f"""select * from indiacharts.current_fno_price cfp

                            where instrument_name = '{ins}' and symbol in ('{symbol}')

                            and created_at > '{start_date}'

                            order by created_at desc

                            """, con=engine)


            df['expiry_date'] = df['expiry_date'].astype(str)

            df = df[df['expiry_date'] == monthly_exp]

            ltp = int(df['last_traded_price'].iloc[0])

            print(ltp)


            if multiplier == 1:


                pf = pd.read_sql_query(

                    f"""select * from indiacharts.fno_price_eod fpe 

                 WHERE created_at ='{yesterday_string}'

                AND instrument_name = '{instrument}'

                AND symbol ='{symbol}' AND expiry_date = '{selected_exp}'

               AND option_type = 'CE'

               

                order by created_at desc

                                   """, con=engine)




                strike_prices_list = pf['strike_price'].astype(int).tolist()  # Convert to integers


                nearest_strike_price = min(strike_prices_list, key=lambda x: abs(x - ltp))

                print("nearest_strike_price=", nearest_strike_price)

                ce_df=u.User_Selected_Strike(symbol=symbol, instrument=instrument, strikeprice=nearest_strike_price,

                                     option_type="CE",

                                     expiery=selected_exp, start_date=start_date)

                pe_df=u.User_Selected_Strike(symbol=symbol, instrument=instrument, strikeprice=nearest_strike_price,

                                     option_type="PE",

                                     expiery=selected_exp, start_date=start_date)


                return Response(

                        {"data1": json.loads(ce_df),

                         "data2": json.loads(pe_df) },



                          status=status.HTTP_200_OK

                        )


            if multiplier == 3:

                pf = pd.read_sql_query(

                    f"""select * from indiacharts.fno_price_eod fpe 

                         WHERE created_at ='{yesterday_string}'

                        AND instrument_name = '{instrument}'

                        AND symbol ='{symbol}' AND expiry_date = '{selected_exp}'

                       AND option_type = 'CE'


                        order by created_at desc

                                           """, con=engine)


                strike_prices_list = pf['strike_price'].astype(int).tolist()  # Convert to integers

                # print(strike_prices_list)

                nearest_strike_price = min(strike_prices_list, key=lambda x: abs(x - ltp))

                print(nearest_strike_price)

                nearest_strike_index = strike_prices_list.index(nearest_strike_price)


                above_strike_1 = strike_prices_list[max(nearest_strike_index - 1, 0)]

                above_strike_2 = strike_prices_list[max(nearest_strike_index - 2, 0)]

                below_strike_1 = strike_prices_list[min(nearest_strike_index + 1, len(strike_prices_list) - 1)]

                below_strike_2 = strike_prices_list[min(nearest_strike_index + 2, len(strike_prices_list) - 1)]


                print("1st Above Strike Price:", above_strike_1)

                # print("2nd Above Strike Price:", above_strike_2)

                print("1st Below Strike Price:", below_strike_1)

                # print("2nd Below Strike Price:", below_strike_2)


                above_strike_1_ce_df=u.User_Selected_Strike(symbol=symbol, instrument=instrument, strikeprice=above_strike_1,

                                     option_type="CE",

                                     expiery=selected_exp, start_date=start_date)

                above_strike_1_pe_df=u.User_Selected_Strike(symbol=symbol, instrument=instrument, strikeprice=above_strike_1,

                                     option_type="PE",

                                     expiery=selected_exp, start_date=start_date)

                below_strike_1_ce_df=u.User_Selected_Strike(symbol=symbol, instrument=instrument, strikeprice=below_strike_1,

                                     option_type="CE",

                                     expiery=selected_exp, start_date=start_date)

                below_strike_1_pe_df=u.User_Selected_Strike(symbol=symbol, instrument=instrument, strikeprice=below_strike_1,

                                     option_type="PE",

                                     expiery=selected_exp, start_date=start_date)

                nearest_ce_df=u.User_Selected_Strike(symbol=symbol, instrument=instrument, strikeprice=nearest_strike_price,

                                     option_type="CE",

                                     expiery=selected_exp, start_date=start_date)

                nearest_pe_df=u.User_Selected_Strike(symbol=symbol, instrument=instrument, strikeprice=nearest_strike_price,

                                     option_type="PE",

                                     expiery=selected_exp, start_date=start_date)


                return Response(

                    {

                     "data1": json.loads(above_strike_1_ce_df),

                     "data2": json.loads(above_strike_1_pe_df),

                     "data3": json.loads(below_strike_1_ce_df),

                     "data4": json.loads(below_strike_1_pe_df),

                     "data5": json.loads(nearest_ce_df),

                     "data6": json.loads(nearest_pe_df),



                    },


                    status=status.HTTP_200_OK

                )


            if multiplier == 5:

                pf = pd.read_sql_query(

                    f"""select * from indiacharts.fno_price_eod fpe 

                         WHERE created_at ='{yesterday_string}'

                        AND instrument_name = '{instrument}'

                        AND symbol ='{symbol}' AND expiry_date = '{selected_exp}'

                       AND option_type = 'CE'


                        order by created_at desc

                                           """, con=engine)


                strike_prices_list = pf['strike_price'].astype(int).tolist()  # Convert to integers

                # print(strike_prices_list)

                nearest_strike_price = min(strike_prices_list, key=lambda x: abs(x - ltp))

                print(nearest_strike_price)

                nearest_strike_index = strike_prices_list.index(nearest_strike_price)


                above_strike_1 = strike_prices_list[max(nearest_strike_index - 1, 0)]

                above_strike_2 = strike_prices_list[max(nearest_strike_index - 2, 0)]

                below_strike_1 = strike_prices_list[min(nearest_strike_index + 1, len(strike_prices_list) - 1)]

                below_strike_2 = strike_prices_list[min(nearest_strike_index + 2, len(strike_prices_list) - 1)]


                print("1st Above Strike Price:", above_strike_1)

                print("2nd Above Strike Price:", above_strike_2)

                print("1st Below Strike Price:", below_strike_1)

                print("2nd Below Strike Price:", below_strike_2)


                above_strike_1_ce_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                              strikeprice=above_strike_1,

                                                              option_type="CE",

                                                              expiery=selected_exp, start_date=start_date)

                above_strike_1_pe_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                              strikeprice=above_strike_1,

                                                              option_type="PE",

                                                              expiery=selected_exp, start_date=start_date)


                above_strike_2_ce_df=u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                              strikeprice=above_strike_2,

                                                              option_type="CE",

                                                              expiery=selected_exp, start_date=start_date)


                above_strike_2_pe_df=u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                              strikeprice=above_strike_2,

                                                              option_type="PE",

                                                              expiery=selected_exp, start_date=start_date)


                below_strike_1_ce_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                              strikeprice=below_strike_1,

                                                              option_type="CE",

                                                              expiery=selected_exp, start_date=start_date)

                below_strike_1_pe_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                              strikeprice=below_strike_1,

                                                              option_type="PE",

                                                              expiery=selected_exp, start_date=start_date)


                below_strike_2_ce_df= u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                              strikeprice=below_strike_2,

                                                              option_type="CE",

                                                              expiery=selected_exp, start_date=start_date)


                below_strike_2_pe_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                              strikeprice=below_strike_2,

                                                              option_type="PE",

                                                              expiery=selected_exp, start_date=start_date)



                nearest_ce_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                       strikeprice=nearest_strike_price,

                                                       option_type="CE",

                                                       expiery=selected_exp, start_date=start_date)

                nearest_pe_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                       strikeprice=nearest_strike_price,

                                                       option_type="PE",

                                                       expiery=selected_exp, start_date=start_date)


                return Response(

                    {

                        "data1": json.loads(above_strike_1_ce_df),

                        "data2": json.loads(above_strike_1_pe_df),


                        "data3": json.loads(below_strike_1_ce_df),

                        "data4": json.loads(below_strike_1_pe_df),


                        "data5": json.loads(above_strike_2_ce_df),

                        "data6": json.loads(above_strike_2_pe_df),


                        "data7": json.loads(below_strike_2_ce_df),

                        "data8": json.loads(below_strike_2_pe_df),


                        "data9": json.loads(nearest_ce_df),

                        "data10": json.loads(nearest_pe_df),


                    },


                    status=status.HTTP_200_OK

                )






            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


class GetTrendingStrikAPI(APIView):

    permission_classes = [permissions.AllowAny]

    authentication_classes = []



    def post(self, request: Request):

        engine = connection

        serializer = GetTrendingStrike(data=request.data)

        if serializer.is_valid():

            symbol = request.data["symbol"]

            monthly_exp= request.data["monthly_exp"]

            selected_exp = request.data["selected_exp"]

            instrument = request.data["instrument"]

            start_date = request.data["start_date"]


            global today_string, yesterday_string, tomorrow_string

            detect_day(today=start_date)


            if (symbol == "NIFTY") or (symbol == "BANKNIFTY") or (symbol == "MIDCPNIFTY") or (symbol == "FINNIFTY"):

                ins = "FUTIDX"


            else:

                ins = "FUTSTK"


            df = pd.read_sql_query(

                # isme date current date se jada honi chaiee bs

                f"""select * from indiacharts.current_fno_price cfp

                                where instrument_name = '{ins}' and symbol in ('{symbol}')

                                and created_at > '{start_date}'

                                order by created_at desc

                                """, con=engine)


            df['expiry_date'] = df['expiry_date'].astype(str)

            df = df[df['expiry_date'] == monthly_exp]

            ltp = int(df['last_traded_price'].iloc[0])

            print(ltp)


            pf = pd.read_sql_query(

                f"""select * from indiacharts.fno_price_eod fpe 

                                 WHERE created_at ='{yesterday_string}'

                                AND instrument_name = '{instrument}'

                                AND symbol ='{symbol}' AND expiry_date = '{selected_exp}'

                               AND option_type = 'CE'


                                order by created_at desc

                                                   """, con=engine)


            strike_prices_list = pf['strike_price'].astype(int).tolist()  # Convert to integers

            # print(strike_prices_list)

            nearest_strike_price = min(strike_prices_list, key=lambda x: abs(x - ltp))

            print(nearest_strike_price)

            nearest_strike_index = strike_prices_list.index(nearest_strike_price)


            above_strike_1 = strike_prices_list[max(nearest_strike_index - 1, 0)]

            above_strike_2 = strike_prices_list[max(nearest_strike_index - 2, 0)]

            above_strike_3 = strike_prices_list[max(nearest_strike_index - 3, 0)]

            above_strike_4 = strike_prices_list[max(nearest_strike_index - 4, 0)]

            above_strike_5 = strike_prices_list[max(nearest_strike_index - 5, 0)]

            above_strike_6 = strike_prices_list[max(nearest_strike_index - 6, 0)]

            above_strike_7 = strike_prices_list[max(nearest_strike_index - 7, 0)]

            above_strike_8 = strike_prices_list[max(nearest_strike_index - 8, 0)]

            above_strike_9 = strike_prices_list[max(nearest_strike_index - 9, 0)]

            above_strike_10 = strike_prices_list[max(nearest_strike_index - 10, 0)]


            below_strike_1 = strike_prices_list[min(nearest_strike_index + 1, len(strike_prices_list) - 1)]

            below_strike_2 = strike_prices_list[min(nearest_strike_index + 2, len(strike_prices_list) - 1)]

            below_strike_3 = strike_prices_list[min(nearest_strike_index + 3, len(strike_prices_list) - 1)]

            below_strike_4 = strike_prices_list[min(nearest_strike_index + 4, len(strike_prices_list) - 1)]

            below_strike_5 = strike_prices_list[min(nearest_strike_index + 5, len(strike_prices_list) - 1)]

            below_strike_6 = strike_prices_list[min(nearest_strike_index + 6, len(strike_prices_list) - 1)]

            below_strike_7 = strike_prices_list[min(nearest_strike_index + 7, len(strike_prices_list) - 1)]

            below_strike_8 = strike_prices_list[min(nearest_strike_index + 8, len(strike_prices_list) - 1)]

            below_strike_9 = strike_prices_list[min(nearest_strike_index + 9, len(strike_prices_list) - 1)]

            below_strike_10 = strike_prices_list[min(nearest_strike_index + 10, len(strike_prices_list) - 1)]


            # ABOVE

            df_CE_above_strike_1 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_1,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)


            df_CE_above_strike_1 = df_CE_above_strike_1.iloc[-1]


            df_CE_above_strike_2 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_2,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_above_strike_2 = df_CE_above_strike_2.iloc[-1]


            df_CE_above_strike_3 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_3,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_above_strike_3 = df_CE_above_strike_3.iloc[-1]


            df_CE_above_strike_4 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_4,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_above_strike_4 = df_CE_above_strike_4.iloc[-1]


            df_CE_above_strike_5 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_5,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_above_strike_5 = df_CE_above_strike_5.iloc[-1]


            df_CE_above_strike_6 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_6,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_above_strike_6 = df_CE_above_strike_6.iloc[-1]


            df_CE_above_strike_7 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_7,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_above_strike_7 = df_CE_above_strike_7.iloc[-1]


            df_CE_above_strike_8 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_8,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_above_strike_8 = df_CE_above_strike_8.iloc[-1]


            df_CE_above_strike_9 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_9,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_above_strike_9 = df_CE_above_strike_9.iloc[-1]


            df_CE_above_strike_10 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                         strikeprice=above_strike_10,

                                                         option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_above_strike_10 = df_CE_above_strike_10.iloc[-1]


            df_PE_above_strike_1 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_1,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_above_strike_1 = df_PE_above_strike_1.iloc[-1]


            df_PE_above_strike_2 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_2,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_above_strike_2 = df_PE_above_strike_2.iloc[-1]


            df_PE_above_strike_3 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_3,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_above_strike_3 = df_PE_above_strike_3.iloc[-1]


            df_PE_above_strike_4 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_4,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_above_strike_4 = df_PE_above_strike_4.iloc[-1]


            df_PE_above_strike_5 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_5,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_above_strike_5 = df_PE_above_strike_5.iloc[-1]


            df_PE_above_strike_6 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_6,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_above_strike_6 = df_PE_above_strike_6.iloc[-1]


            df_PE_above_strike_7 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_7,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_above_strike_7 = df_PE_above_strike_7.iloc[-1]


            df_PE_above_strike_8 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_8,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_above_strike_8 = df_PE_above_strike_8.iloc[-1]


            df_PE_above_strike_9 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=above_strike_9,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_above_strike_9 = df_PE_above_strike_9.iloc[-1]


            df_PE_above_strike_10 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                         strikeprice=above_strike_10,

                                                         option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_above_strike_10 = df_PE_above_strike_10.iloc[-1]


            # BELOW

            df_CE_below_strike_1 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_1,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_below_strike_1 = df_CE_below_strike_1.iloc[-1]


            df_CE_below_strike_2 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_2,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_below_strike_2 = df_CE_below_strike_2.iloc[-1]


            df_CE_below_strike_3 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_3,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_below_strike_3 = df_CE_below_strike_3.iloc[-1]


            df_CE_below_strike_4 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_4,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_below_strike_4 = df_CE_below_strike_4.iloc[-1]


            df_CE_below_strike_5 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_5,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_below_strike_5 = df_CE_below_strike_5.iloc[-1]


            df_CE_below_strike_6 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_6,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_below_strike_6 = df_CE_below_strike_6.iloc[-1]


            df_CE_below_strike_7 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_7,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_below_strike_7 = df_CE_below_strike_7.iloc[-1]


            df_CE_below_strike_8 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_8,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_below_strike_8 = df_CE_below_strike_8.iloc[-1]


            df_CE_below_strike_9 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_9,

                                                        option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_below_strike_9 = df_CE_below_strike_9.iloc[-1]


            df_CE_below_strike_10 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                         strikeprice=below_strike_10,

                                                         option_type="CE", expiery=selected_exp, start_date=start_date)

            df_CE_below_strike_10 = df_CE_below_strike_10.iloc[-1]


            df_PE_below_strike_1 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_1,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_below_strike_1 = df_PE_below_strike_1.iloc[-1]


            df_PE_below_strike_2 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_2,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_below_strike_2 = df_PE_below_strike_2.iloc[-1]


            df_PE_below_strike_3 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_3,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_below_strike_3 = df_PE_below_strike_3.iloc[-1]


            df_PE_below_strike_4 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_4,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_below_strike_4 = df_PE_below_strike_4.iloc[-1]


            df_PE_below_strike_5 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_5,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_below_strike_5 = df_PE_below_strike_5.iloc[-1]


            df_PE_below_strike_6 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_6,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_below_strike_6 = df_PE_below_strike_6.iloc[-1]


            df_PE_below_strike_7 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_7,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_below_strike_7 = df_PE_below_strike_7.iloc[-1]


            df_PE_below_strike_8 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_8,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_below_strike_8 = df_PE_below_strike_8.iloc[-1]


            df_PE_below_strike_9 = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                        strikeprice=below_strike_9,

                                                        option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_below_strike_9 = df_PE_below_strike_9.iloc[-1]


            df_PE_below_strike_10 =u. User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                         strikeprice=below_strike_10,

                                                         option_type="PE", expiery=selected_exp, start_date=start_date)

            df_PE_below_strike_10 = df_PE_below_strike_10.iloc[-1]


            df_PE_nearest_strike_price =u. User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                              strikeprice=below_strike_10,

                                                              option_type="PE", expiery=selected_exp,

                                                              start_date=start_date)

            df_PE_nearest_strike_price = df_PE_nearest_strike_price.iloc[-1]


            df_CE_nearest_strike_price = u.User_Selected_Strike_df(symbol=symbol, instrument=instrument,

                                                              strikeprice=below_strike_10,

                                                              option_type="CE", expiery=selected_exp,

                                                              start_date=start_date)

            df_CE_nearest_strike_price = df_CE_nearest_strike_price.iloc[-1]


            data_frames = [df_PE_below_strike_1, df_PE_below_strike_2, df_PE_below_strike_3, df_PE_below_strike_4,

                           df_PE_below_strike_5, df_PE_below_strike_6,

                           df_PE_below_strike_7, df_PE_below_strike_8, df_PE_below_strike_9, df_PE_below_strike_10,

                           df_PE_nearest_strike_price, df_PE_above_strike_1, df_PE_above_strike_2,

                           df_PE_above_strike_3, df_PE_above_strike_4, df_PE_above_strike_5, df_PE_above_strike_6,

                           df_PE_above_strike_7, df_PE_above_strike_8, df_PE_above_strike_9, df_PE_above_strike_10]


            # Create a list to store the absolute values and their corresponding strike_price

            abs_values = []


            # Iterate through the data frames

            for i, df in enumerate(data_frames):

                # Get the absolute value of the 'Change In Oi' column

                abs_change_in_oi = abs(df['Change In Oi'])


                # Append the absolute value and the corresponding strike_price to the list

                abs_values.append((abs_change_in_oi, df['strike_price']))


            # Sort the list in descending order based on the absolute values

            abs_values.sort(reverse=True)


            # Get the values for the top two strikes

            (first_highest_value_PE, first_strike_price_PE), (

            second_highest_value_PE, second_strike_price_PE) = abs_values[:2]


            print("first_highest_value_PE= ", int(first_highest_value_PE))

            print("first_strike_price_PE= ", int(first_strike_price_PE))

            print("second_highest_value_PE= ", int(second_highest_value_PE))

            print("second_strike_price_PE= ", int(second_strike_price_PE))


            #         for call

            data_frames = [df_CE_below_strike_1, df_CE_below_strike_2, df_CE_below_strike_3, df_CE_below_strike_4,

                           df_CE_below_strike_5, df_CE_below_strike_6,

                           df_CE_below_strike_7, df_CE_below_strike_8, df_CE_below_strike_9, df_CE_below_strike_10,

                           df_CE_nearest_strike_price, df_CE_above_strike_1, df_CE_above_strike_2,

                           df_CE_above_strike_3, df_CE_above_strike_4, df_CE_above_strike_5, df_CE_above_strike_6,

                           df_CE_above_strike_7, df_CE_above_strike_8, df_CE_above_strike_9, df_CE_above_strike_10]


            # Create a list to store the absolute values and their corresponding strike_price

            abs_values = []


            # Iterate through the data frames

            for i, df in enumerate(data_frames):

                # Get the absolute value of the 'Change In Oi' column

                abs_change_in_oi = abs(df['Change In Oi'])


                # Append the absolute value and the corresponding strike_price to the list

                abs_values.append((abs_change_in_oi, df['strike_price']))


            # Sort the list in descending order based on the absolute values

            abs_values.sort(reverse=True)


            # Get the values for the top two strikes

            (first_highest_value_CE, first_strike_price_CE), (

            second_highest_value_CE, second_strike_price_CE) = abs_values[

                                                               :2]


            print("first_highest_value_CE= ", int(first_highest_value_CE))

            print("first_strike_price_CE= ", int(first_strike_price_CE))

            print("second_highest_value_CE= ", int(second_highest_value_CE))

            print("second_strike_price_CE= ", int(second_strike_price_CE))


            first_strike_price_CE_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                            strikeprice=int(first_strike_price_PE),

                                                            option_type="CE", expiery=selected_exp,

                                                            start_date=start_date)

            second_strike_price_CE_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                             strikeprice=int(second_strike_price_PE),

                                                             option_type="CE", expiery=selected_exp,

                                                             start_date=start_date)


            first_strike_price_PE_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                            strikeprice=int(first_strike_price_CE),

                                                            option_type="PE", expiery=selected_exp,

                                                            start_date=start_date)

            second_strike_price_PE_df = u.User_Selected_Strike(symbol=symbol, instrument=instrument,

                                                             strikeprice=int(second_strike_price_CE),

                                                             option_type="PE", expiery=selected_exp,

                                                             start_date=start_date)


            return Response(

                {

                    "data1": json.loads(first_strike_price_CE_df),

                    "data2": json.loads(second_strike_price_CE_df),


                    "data3": json.loads(first_strike_price_PE_df),

                    "data4": json.loads(second_strike_price_PE_df),




                },


                status=status.HTTP_200_OK

            )


        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)




Comments

Popular posts from this blog

MQL5 : Add time to current time in mins

MQL5 : Get current trading session