量化交易学习4--Python自动画K线

画出静态股票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()

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南山二毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值