画出静态股票K线图
采用yfinance来下载股票数据, mplfinance 画图。
import yfinance as yf
import mplfinance as mpf
ticker = 'AMZN' # 亚马逊的股票
start = '2021-06-11'
period = '1d'
interval = '5m'
# 下载股票, 开始日期, 1天的数据 5分钟间隔
data = yf.download(tickers=ticker, start=start, period=period, interval=interval)
print(data)
# mpf.plot(data)
print("OK")
# 设置上升的颜色是橘黄色,下降的颜色是蓝色
color = mpf.make_marketcolors(up='#ff8500', down='#1b90a7', inherit=True)
style = mpf.make_mpf_style(base_mpf_style='nightclouds', marketcolors=color)
# 画出vwap曲线
data['vwap'] = (((data['High'] + data['Low'])/2)*data['Volume']).cumsum()/data['Volume'].cumsum()
add = mpf.make_addplot(data['vwap'])
# volume是总成交量 mav=(6,12)添加半小时的均线和一小时的均线
kwargs = dict(type='candle', volume=True, style=style, mav=(6,12), addplot=add)
mpf.plot(data, **kwargs)
下图为亚马逊的K线图
画出动态股票K线图
# yfinance 金融数据获取
# mplfinance 金融方面的画图
import yfinance as yf
import mplfinance as mpf
import matplotlib.animation as animation
ticker = 'AMZN' # 亚马逊的股票
start = '2021-06-03' # 起始时间
period = '1d'
interval = '5m' # 最小时间间隔
# 下载股票, 开始日期, 1天的数据 5分钟间隔
data = yf.download(tickers=ticker, start=start, period=period, interval=interval)
# 设置k线的颜色
col = mpf.make_marketcolors(up='#ff8500', down='#1b90a7', inherit=True)
sty = mpf.make_mpf_style(base_mpf_style='nightclouds', marketcolors=col)
# 计算vwap,并讲该曲线添加到图表中
data['vwap'] = (((data['High'] + data['Low'])/2)*data['Volume']).cumsum()/data['Volume'].cumsum()
add = mpf.make_addplot(data['vwap'])
# 计算半小时区间和一小时区间的均线, 6*5min=半个小时 12*5min=1个小时
kwargs = dict(type='candle', volume=True, style=sty, mav=(6, 12), addplot=add)
warmup = 40
_add = mpf.make_addplot(data.iloc[0:warmup]['vwap'])
_kwargs = dict(type='candle', volume=True, style=sty, mav=(6,12), addplot=_add, title=ticker
+ ' ' + interval + ' ' + start)
fig, axes = mpf.plot(data.iloc[0:warmup], returnfig=True, **_kwargs)
ax1 = axes[0] # price
ax2 = axes[2] # volume
def animate(i):
_data = data.iloc[0:(warmup+i)]
_add = mpf.make_addplot(_data['vwap'], ax=ax1) # 指明坐标轴是价格
ax1.clear()
ax2.clear() #把各个坐标轴擦掉,速度会快一点
_kwargs = dict(type='candle', style=sty, mav=(6, 12), addplot=_add)
mpf.plot(_data, ax=ax1, volume=ax2, returnfig=True, **_kwargs)
ani = animation.FuncAnimation(fig, animate, interval=10) # 第一张图片fig, 0.1s刷新
mpf.show()