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
Post a Comment