Candlestick (feito através do ficheiro em ipynb)
! pip install yfinance
import pandas as pd
from pandas_datareader import data as pdr
import yfinance as yfin
import matplotlib.pyplot as plt
yfin.pdr_override()
assets = ['WMT']
df = pdr.DataReader(assets, data_source='yahoo', start='2014-01-01')
df.tail()
# Gráfico OHLC
!pip install plotly==5.2.1
import plotly.graph_objects as go
fig = go.Figure(go.Candlestick(x=df.index,
open=df['Open'],
high=df['High'],
low=df['Low'],
close=df['Close']))
fig.show()
#remover o controle deslizante de intervalo
fig.update_layout(xaxis_rangeslider_visible=False)
# esconder fins de semana
fig.update_xaxes(rangebreaks=[dict(bounds=["sat", "mon"])])
# remover todas as datas vazias
# construir uma linha do tempo completa da data de início até a data de término
dt_all = pd.date_range(start=df.index[0],end=df.index[-1])
# recuperar as datas que ESTÃO no conjunto de dados original
dt_obs = [d.strftime("%Y-%m-%d") for d in pd.to_datetime(df.index)]
# definir datas com valores ausentes
dt_breaks = [d for d in dt_all.strftime("%Y-%m-%d").tolist() if not d in dt_obs]
fig.update_xaxes(rangebreaks=[dict(values=dt_breaks)])
# adicionar médias móveis do df
df['MA20'] = df['Close'].rolling(window=20).mean()
df['MA5'] = df['Close'].rolling(window=5).mean()
# Adicionar as linhas médias móveis
fig.add_trace(go.Scatter(x=df.index,
y=df['MA5'],
opacity=0.7,
line=dict(color='blue', width=2),
name='MA 5'))
fig.add_trace(go.Scatter(x=df.index,
y=df['MA20'],
opacity=0.7,
line=dict(color='orange', width=2),
name='MA 20'))
fig = go.Figure()
# add OHLC trace
fig.add_trace(go.Candlestick(x=df.index,
open=df['Open'],
high=df['High'],
low=df['Low'],
close=df['Close'],
showlegend=False))
# add moving average traces
fig.add_trace(go.Scatter(x=df.index,
y=df['MA5'],
opacity=0.7,
line=dict(color='blue', width=2),
name='MA 5'))
fig.add_trace(go.Scatter(x=df.index,
y=df['MA20'],
opacity=0.7,
line=dict(color='orange', width=2),
name='MA 20'))
# ocultar datas sem valores
fig.update_xaxes(rangebreaks=[dict(values=dt_breaks)])
# remover controle deslizante de intervalo
fig.update_layout(xaxis_rangeslider_visible=False)
# adicionar título do gráfico
fig.update_layout(title="Wallmarket"
Comentários
Enviar um comentário