from datetime import datetime
import pandas as pd
import plotly.graph_objects as go
import yfinance as yf
ticker = 'NVDA'
start_date = '2023-01-01'
end_date = '2024-01-01'
df = yf.download(ticker, start=start_date, end=end_date)
df.index = df.index.tz_localize(None)
df.index = df.index.tz_localize('UTC')
fig = go.Figure(data=[go.Candlestick(x=df.index,
open=df['Open'],
high=df['High'],
low=df['Low'],
close=df['Close'])])
fig.update_layout(
title=f'{ticker} Stock Price',
xaxis_title='Date',
yaxis_title='Price (USD)',
xaxis_rangeslider_visible=False
)
fig.show()
Run to view results
import numpy as np
Run to view results
ticker = 'AAPL'
start_date = '2023-01-01'
end_date = '2024-01-01'
data = yf.download(ticker, start=start_date, end=end_date)
# Calculate moving averages
short_window = 50
long_window = 200
data['Short_MA'] = data['Close'].rolling(window=short_window).mean()
data['Long_MA'] = data['Close'].rolling(window=long_window).mean()
# Generate buy/sell signals
data['Signal'] = 0
data['Signal'][short_window:] = np.where(data['Short_MA'][short_window:] > data['Long_MA'][short_window:], 1, 0)
data['Position'] = data['Signal'].diff()
# Plot the stock price with moving averages and signals
fig = go.Figure()
fig.add_trace(go.Scatter(x=data.index, y=data['Close'], mode='lines', name='Close Price'))
fig.add_trace(go.Scatter(x=data.index, y=data['Short_MA'], mode='lines', name=f'{short_window}-Day MA'))
fig.add_trace(go.Scatter(x=data.index, y=data['Long_MA'], mode='lines', name=f'{long_window}-Day MA'))
# Add buy/sell signals to the plot
buy_signals = data[data['Position'] == 1]
sell_signals = data[data['Position'] == -1]
fig.add_trace(go.Scatter(x=buy_signals.index, y=buy_signals['Close'],
mode='markers', marker=dict(color='green', size=8), name='Buy Signal'))
fig.add_trace(go.Scatter(x=sell_signals.index, y=sell_signals['Close'],
mode='markers', marker=dict(color='red', size=8), name='Sell Signal'))
#Layout
fig.update_layout(title=f'{ticker} Moving Average Crossover Strategy',
xaxis_title='Date',
yaxis_title='Price',
legend=dict(yanchor="top", y=0.99, xanchor="left", x=0.01))
fig.show()
Run to view results