使用mplfinance画出K线

1,665 阅读1分钟
import mplfinance as mpl
import pandas as pd
import tushare as ts


# 设置tushare的token
ts.set_token('xxx')
pro = ts.pro_api()
df = pro.daily(ts_code='601988.SH',  end_date='20201130')
# 数据必须是Pandas DataFrame格式,必须包含开盘价,收盘价,最高价和最低价,
# 需要使用DatetimeIndex作为索引
# 删除 tushare 提供的不需要的数据,保留 Date, Open, High, Low, Close, Volume
# 保留Volume是可选的,保留了就可以在后面画图成交量的图
print(df.columns)
df = df.drop(labels=["ts_code", "pct_chg", "pre_close", "amount", "change"], axis=1)

# 对数据进行改名,mplfinance名字必须是Date, Open, High, Low, Close, Volume
df.rename(columns={'trade_date': 'Date', 
                  'open': 'Open', 'high': 'High',
                   'low': 'Low', 'close': 'Close', 'vol': 'Volume'}, inplace=True)

# 从 tushre下载的数据是按时间倒叙的,也就是从现在到过去的数据,这里把它改成从过去到现在的数据
df = df[::-1]

# 把 Date 这列数据设置成索引,必须的,不设置会报错
df.set_index(["Date"], inplace=True)

# 把 Date这列数据装换成datetime 格式,也是 mplfinance 要求
df.index = pd.to_datetime(df.index)

# 绘图
# type='candle'是绘制 k 线图,也可以指定其他的图,
# 例如:type='ohlc', type='line', type='renko', 或type='pnf,默认是ohlc
# mav是设置均线,就是下图中的三条不同颜色的线;volume是成交量图,
# 就是图下方的柱状图,如果数据中没有Volume则无法绘制此图。

mpl.plot(df, type='candle', mav=(3, 6, 9), volume=True)

参考:
https://www.pythonheidong.com/blog/article/608094/ffbe1acc95c357b1f47a/#3mplfinance_16