File size: 4,167 Bytes
1648d9a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
330b065
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1648d9a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from nsepython import *
import seaborn as sns
import pandas as pd
import streamlit as st
from datetime import datetime
from time import gmtime, strftime
from IPython.display import clear_output 
import matplotlib.pyplot as plt
from pytz import timezone 

def get_data():
    a=(nse_fno("BANKNIFTY"))
    last_prices=round(nse_quote_ltp("BANKNIFTY"))
    exp=list(set(a['expiryDates']))
    exp.sort(key = lambda date: datetime.strptime(date, '%d-%b-%Y')) 
    if last_prices%100>50:
        x=(last_prices-last_prices%100+100)
        strike=[x-200,x-100,x,x+100,x+200]
    elif last_prices%100<50:
        x=(last_prices-last_prices%100)
        strike=[x-200,x-100,x,x+100,x+200]
    d={'call change op':[],
        'call vwap':[],
        '% change op':[],
        'strike':[],
        'put change op':[],
        'put vwap':[],
        '% change op put':[]
        }
    for i in a['stocks']:
        for sp in strike: 
            if i['metadata']['expiryDate']==exp[0] and i['metadata']['optionType']=='Call' and i['metadata']['strikePrice']==sp:
                d['strike'].append(sp)
                d['call change op'].append(i['marketDeptOrderBook']['tradeInfo']['changeinOpenInterest'])
                d['% change op'].append(i['marketDeptOrderBook']['tradeInfo']['pchangeinOpenInterest'])
                d['call vwap'].append(i['marketDeptOrderBook']['tradeInfo']['vmap'])

            elif i['metadata']['expiryDate']==exp[0] and i['metadata']['optionType']=='Put' and i['metadata']['strikePrice']==sp:
                d['put change op'].append(i['marketDeptOrderBook']['tradeInfo']['changeinOpenInterest'])
                d['% change op put'].append(i['marketDeptOrderBook']['tradeInfo']['pchangeinOpenInterest'])
                d['put vwap'].append(i['marketDeptOrderBook']['tradeInfo']['vmap'])

    out=pd.json_normalize(d)
    out=out.explode(list(out.columns)).reset_index(drop = True)
    out.fillna(0,inplace=True)
    x=out.astype(float).round(2)
    return x
def get_info(dataset):
    df= pd.DataFrame(columns=['value', 'pcr', 'cal_per','put_per'])
    value= dataset['put change op'].sum() - dataset['call change op'].sum()
    pcr= dataset['put change op'].sum()/dataset['call change op'].sum()
    cal_per= dataset['% change op'].mean()
    put_per= dataset['% change op put'].mean()
    new_row={'time':datetime.now(timezone("Asia/Kolkata")).strftime('%I.%M %p'),'value':value, 'pcr':round(pcr,2), 'cal_per':round(cal_per,2), 'put_per':round(put_per,2)}
    df = df.append(new_row,ignore_index=True, verify_integrity=False, sort=None)
    return df  
def ploting():
        try:
            global final
        except:
             df = pd.DataFrame(columns=['value', 'pcr', 'cal_per','put_per'])
        dataset= get_data()
        main= get_info(dataset)
        final =final.append(main,ignore_index=True, verify_integrity=False, sort=None)
        return dataset,final

final = pd.DataFrame(columns=['value', 'pcr', 'cal_per','put_per','time'])
    

if __name__=='__main__':
    
    st.title('WELCOME BULLS CARTEL')
    today_date =strftime("%d %b %Y", gmtime()),datetime.now(timezone("Asia/Kolkata")).strftime('%I.%M %p')
    st.markdown(f"as at {today_date}")
    option= st.selectbox(
    'How would you like to be contacted?',
    ('5', '10', '15')) 
    st.write('You selected:', option)
    st.header('Important Information')
    st.markdown(""" CALL % INCREASE MEANS MARKET GOES DOWN  
             PUT % INCREASE MEANS MARKET GOES UP
             """)    
    dataset,final=ploting()
    p1=st.empty()
    p2=st.empty()
    p3=st.empty()
    p1.dataframe(dataset.style.highlight_max(['% change op put','% change op'],axis=0)) #Column hightlight 
    p2.dataframe(final.style.highlight_max(['cal_per','put_per'],axis=1)) # row highlight
    fig, ax = plt.subplots(figsize=(6, 2)) 
    ax.plot(final['time'],final['pcr'])
    ax.axhline(y=0, color='black', linestyle='solid') # 0 line graph
    fig.autofmt_xdate(rotation=70)
    p3.pyplot(fig)
    time.sleep(3*60) # how to the start again code check upper condition min * sec
    p1.empty() # then clean all data frame 
    p2.empty()
    p3.empty()