用PYTHON 制股價圖其實都很簡單,幾行代碼便可以完成
第一步要IMPORT Package
from pandas_datareader import data as pdr
from datetime import date
import yfinance as yf
import matplotlib.pyplot as plt
import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
from datetime import datetime

第二步設定要下載那一隻股票和日期
start_date= datetime(1997, 1, 13)
end_date=datetime(2021,5,10)
ticker=”0005.HK”

第三步下載股票數據並存方在 df 內
df = pdr.get_data_yahoo(ticker, start=start_date, end=end_date)

第四步設定日期為INDEX
df.reset_index(inplace=True)
df = df.set_index(pd.DatetimeIndex(df[‘Date’].values))

第五步可以開始製作股價圖
df[‘ma_10’] = df[‘Close’].rolling(10).mean()
df[‘ma_20’] = df[‘Close’].rolling(20).mean()
df[‘ma_50’] = df[‘Close’].rolling(50).mean()
df = df[-90:]
fig = px.line(x=df.index, y=df[‘Close’], title=’股價圖’, labels={‘x’: ‘date’, ‘y’:’price’})
fig.update_xaxes(tickformat=’%Y-%m-%d’, tickangle=15, tickfont=dict(size=12))
fig.add_trace(go.Scatter(x=df.index, y=df.ma_10,name=”10日均線”))
fig.add_trace(go.Scatter(x=df.index, y=df.ma_20,name=”20日均線”))
fig.add_trace(go.Scatter(x=df.index, y=df.ma_50,name=”50日均線”))
fig.show()
頭三行是平均線,分別是10日, 20日和50日,可根據自己需要更改
df[‘ma_10’] <- 是指新加入一行名稱是 ma_10
df[‘Close’].rolling( 10 ).mean() 是計算10天的平均值
以下是製作出來的圖表

再製作蠟燭圖
figure = go.Figure(
data = [
go.Candlestick(
x = df.index,
low = df[‘Low’],
high = df[‘High’],
close = df[‘Close’],
open = df[‘Open’],
increasing_line_color = ‘green’,
decreasing_line_color= ‘red’
)
]
)
x = df.index 是指將 X 軸 設定為 df.index , 而df.index 是指 日期
low , high , close , open 分別代入 df 入面對應的column
increasing_line_color 和 decreasing_line_color 分別設別綠色和紅色
figure.update_layout(
title = ticker,
yaxis_title = ‘股價’,
xaxis_title = ‘Date’
)
設定Title 等於股票號, X 軸名稱設為Date , Y 軸名稱設為 股價
figure.show()
可以顯示圖出來

仲可以將VOLUME 同股價關係圖顯示出來
fig = px.scatter(x=df[‘Volume’], y=df[‘Close’], labels={‘x’: ‘Volume’, ‘y’: ‘price’}, title=’Volume and Price’)
fig.update_layout(width=800, height=600)
fig.show()
將df[‘Volume ‘] 和 df[‘Close’] 伐入 px.scatter 內
layout 大小設定為800 X 600

可以看到$44 至$46股價大多成交額為18M ~ 20M
遲些再加入多一些圖表