0% found this document useful (0 votes)
10 views

yahoo code plot

Uploaded by

Vinay Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

yahoo code plot

Uploaded by

Vinay Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

import yfinance as yf

import pandas as pd
import plotly.graph_objs as go
import time
from scipy.signal import find_peaks

# Function to calculate the simple moving average (SMA)


def calculate_sma(data, window):
return data['Close'].rolling(window=window).mean()

# Function to detect support and resistance lines


def detect_support_resistance(data):
peaks, _ = find_peaks(data['High'], prominence=10)
troughs, _ = find_peaks(-data['Low'], prominence=10)
return peaks, troughs

# Function to calculate Fibonacci retracement levels


def calculate_fibonacci_levels(data):
high = data['Close'].max()
low = data['Close'].min()
diff = high - low

levels = {
'0%': high,
'23.6%': high - (0.236 * diff),
'38.2%': high - (0.382 * diff),
'50%': high - (0.5 * diff),
'61.8%': high - (0.618 * diff),
'100%': low
}
return levels

# Main loop
while True:
try:
# Fetch live stock prices
df = yf.download('^NSEI', period='1d', interval='1m', auto_adjust=True)

# Calculate the moving averages


df['SMA 9'] = calculate_sma(df, window=9)
df['SMA 21'] = calculate_sma(df, window=21)

# Detect support and resistance lines


peaks, troughs = detect_support_resistance(df)

# Calculate Fibonacci retracement levels


fibonacci_levels = calculate_fibonacci_levels(df)

# Create candlestick chart


candlestick = go.Candlestick(x=df.index,
open=df['Open'],
high=df['High'],
low=df['Low'],
close=df['Close'],
name='Candlestick')

# Create moving averages traces


sma_9_trace = go.Scatter(x=df.index, y=df['SMA 9'], mode='lines', name='SMA
9')
sma_21_trace = go.Scatter(x=df.index, y=df['SMA 21'], mode='lines',
name='SMA 21')

# Convert DatetimeIndex to a list


troughs_list = list(troughs)
peaks_list = list(peaks)

# Create Fibonacci retracement levels traces


fibonacci_traces = []
for level, price in fibonacci_levels.items():
trace = go.Scatter(
x=df.index,
y=[price] * len(df),
mode='lines',
name=level,
line=dict(color='green' if level == '0%' else 'blue' if level ==
'50%' else 'orange')
)
fibonacci_traces.append(trace)

# Create plot layout


layout = go.Layout(
title='Stock Data - 1-minute Time Frame',
xaxis=dict(title='Date'),
yaxis=dict(title='Price'),
hovermode='x',
annotations=[
# Annotation for support
dict(
x=df.index[troughs_list[-1]],
y=df['Low'][troughs_list[-1]],
xref='x',
yref='y',
text=f"S-{round(df['Low'][troughs_list[-1]])}",
showarrow=True,
arrowhead=4,
arrowsize=1.5,
arrowwidth=2,
arrowcolor='green',
ax=20,
ay=-40,
bordercolor='black',
borderwidth=2,
borderpad=4,
bgcolor='green',
opacity=0.8,
font=dict(family='Arial', size=12, color='white')
),
# Annotation for resistance
dict(
x=df.index[peaks_list[-1]],
y=df['High'][peaks_list[-1]],
xref='x',
yref='y',
text=f"R-{round(df['High'][peaks_list[-1]])}",
showarrow=True,
arrowhead=4,
arrowsize=1.5,
arrowwidth=2,
arrowcolor='red',
ax=20,
ay=-40,
bordercolor='black',
borderwidth=2,
borderpad=4,
bgcolor='red',
opacity=0.8,
font=dict(family='Arial', size=12, color='white')
)
]
)

# Plot the data


fig = go.Figure(data=[candlestick, sma_9_trace, sma_21_trace] +
fibonacci_traces, layout=layout)
fig.show()

except Exception as e:
print(f'An error occurred: {e}')

# Delay before fetching data again


time.sleep(60) # 60-second interval

==================================================================
# imports and installs
import os
import yfinance as yf
import mplfinance as mpf
import matplotlib.pyplot as plt
import datetime
import time

# variables to tune your plots


# valid periods: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
period = '1d'

# valid intervals: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo
interval = '5m'

# the stocks you want to plot


stocks = ['^NSEI', '^NSEBANK', 'HDFCBANK.NS', 'RELIANCE.NS']

# method to grab data and plot the data


def plot_live_data(stocks, period='1d', interval='1m'):
while True:
for stock in stocks:
plt.figure()
hist = yf.download(tickers=stock, period=period, interval=interval)
mpf.plot(hist, type='candle',
volume=True, mav=(20,5), title=stock + " " +
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
tight_layout=True, figratio=(10,5))
plt.show()
# Delay for 30 seconds before fetching data again
time.sleep(30)

# call the method


plot_live_data(stocks, period, interval)
^NSEI India VIX ^NSEBANK HDFCBANK.NS) RELIANCE.NS
===================================================================================
========
import yfinance as yf
import pandas as pd
from dash import Dash, html, dcc, callback, Input, Output
import plotly.graph_objs as go
import time

# Fetch live stock prices


df_nsei = yf.download('^NSEI', period='1d', interval='1m', auto_adjust=True)
df_indiavix = yf.download('^INDIAVIX', period='1d', interval='1m',
auto_adjust=True)
df_hdfcbank = yf.download('HDFCBANK.NS', period='1d', interval='1m',
auto_adjust=True)

# Define Dash app


app = Dash(__name__)

# Define layout
app.layout = html.Div([
dcc.Graph(id='graph-nsei'),
dcc.Graph(id='graph-indiavix'),
dcc.Graph(id='graph-hdfcbank'),
dcc.Interval(id='interval', interval=30*1000) # Update every 30 seconds
])

# Define callback to update NSEI graph


@app.callback(
Output('graph-nsei', 'figure'),
Input('interval', 'n_intervals')
)
def update_nsei_graph(n_intervals):
return {
'data': [go.Scatter(x=df_nsei.index, y=df_nsei['Close'], mode='lines')],
'layout': {
'title': 'NSEI Stock Price'
}
}

# Define callback to update INDIAVIX graph


@app.callback(
Output('graph-indiavix', 'figure'),
Input('interval', 'n_intervals')
)
def update_indiavix_graph(n_intervals):
return {
'data': [go.Scatter(x=df_indiavix.index, y=df_indiavix['Close'],
mode='lines')],
'layout': {
'title': 'INDIAVIX Stock Price'
}
}

# Define callback to update HDFCBANK graph


@app.callback(
Output('graph-hdfcbank', 'figure'),
Input('interval', 'n_intervals')
)
def update_hdfcbank_graph(n_intervals):
return {
'data': [go.Scatter(x=df_hdfcbank.index, y=df_hdfcbank['Close'],
mode='lines')],
'layout': {
'title': 'HDFCBANK Stock Price'
}
}

# Run the app


if __name__ == '__main__':
app.run_server(debug=True)

You might also like