mplfinance金融方面使用方法
1. 安装与数据准备
pip install mplfinance yfinance pandas
mplfinance
:画图的核心库yfinance
:下载股票数据pandas
:处理数据表格
数据格式要求
- 必须为
pandas DataFrame
,索引为时间序列(DatetimeIndex
)。 - 列名必须包含
Open
,High
,Low
,Close
,可选Volume
。
示例数据获取(使用 yfinance
)
用 yfinance
下载苹果公司(AAPL)的股票数据:
import yfinance as yf
import mplfinance as mpf
# 下载苹果公司股票数据(日线)
data = yf.download("AAPL", start="2023-01-01", end="2023-12-31")
# 查看数据格式(确保有 Open, High, Low, Close, Volume 这几列)
print(data.head())
2. 基本图表绘制
绘制 K 线图(Candlestick)
mpf.plot(data, type='candle', volume=True, style='charles', title='AAPL 2023 K 线图')
参数说明
type
:图表类型(candle
,ohlc
,line
,renko
,heikinashi
),画K线图(默认就是蜡烛图,不写也行)。volume
:是否显示成交量(True
/False
)显示成交量(柱子图)。style
:预设样式('charles'
,'binance'
,'nightclouds'
)。title
:图表标题。
OHLC 条形图
用竖线表示价格区间。
mpf.plot(data, type='ohlc') # 适合简化分析
折线图
仅用收盘价连线。
mpf.plot(data, type='line') # 简洁趋势图
Renko 图(砖形图)
需手动生成数据(见下文)。
3. 高级图表类型
Heikin-Ashi 图
mpf.plot(data, type='heikinashi', volume=True, style='binance', title='Heikin-Ashi Chart')
Renko 图(需预处理数据)
def generate_renko(data, brick_size=2):
prices = data['Close']
renko_prices = []
last_price = prices.iloc[0]
for price in prices:
delta = price - last_price
steps = int(abs(delta) // brick_size)
if steps == 0:
continue
direction = 1 if delta > 0 else -1
for _ in range(steps):
last_price += direction * brick_size
renko_prices.append(last_price)
return pd.Series(renko_prices, index=data.index[:len(renko_prices)], name='Close')
renko_data = generate_renko(data, brick_size=3)
mpf.plot(renko_data, type='candle', title='Renko Chart', volume=False)
4. 添加技术指标
内置移动平均线(MA)
mpf.plot(data, type='candle', mav=(5, 20, 50), volume=True, style='binance', title='AAPL with MAs')
mav
:移动平均线(如mav=(5, 20, 50)
显示5日、20日、50日均线)(均线显示在K线上)
自定义指标(MACD、RSI、布林带)
MACD是常见的技术指标,分三步添加:
步骤1:计算MACD数据(直接复制代码)
# 计算MACD(不需要理解公式)
exp12 = data['Close'].ewm(span=12, adjust=False).mean() # 12日指数均线
exp26 = data['Close'].ewm(span=26, adjust=False).mean() # 26日指数均线
macd = exp12 - exp26 # MACD线
signal = macd.ewm(span=9, adjust=False).mean() # 信号线
步骤2:创建子图对象
# 创建MACD子图
ap = [
mpf.make_addplot(macd, panel=1, color='blue', ylabel='MACD'), # 第2个面板
mpf.make_addplot(signal, panel=1, color='red') # 信号线
]
步骤3:画图
mpf.plot(data, type='candle',
volume=True,
addplot=ap, # 添加子图
style='binance',
title='苹果股票带MACD')
效果:主图是K线,下方会多出一个MACD图表,蓝线是MACD,红线是信号线。
5. 样式自定义
自定义颜色方案
# 自定义颜色方案
custom_style = mpf.make_mpf_style(
base_mpf_style='binance', # 基于币安主题改
marketcolors=mpf.make_marketcolors(
up='red', # 上涨为红色
down='green',# 下跌为绿色
wick={'up':'red', 'down':'green'}, # 影线颜色
volume='blue' # 成交量柱子颜色
)
)
# 应用自定义样式
mpf.plot(data, type='candle', volume=True, style=custom_style, title='红涨绿跌')
调整图表布局
mpf.plot(data, type='candle', volume=True,
figratio=(12, 6), # 图表宽高比
tight_layout=True, # 紧凑布局
datetime_format='%Y-%m', # 日期格式
ylabel='Price (USD)',
ylabel_lower='Volume')
6. 多时间周期数据处理
日内数据(分钟级)
# 获取比特币分钟级数据
btc_data = yf.download("BTC-USD", start="2023-12-01", end="2023-12-31", interval="15m")
# 绘制紧凑型图表(隐藏非交易时间)
mpf.plot(btc_data, type='candle', volume=True, style='binance',
show_nontrading=False, # 隐藏非交易时间
title='BTC-USD 15分钟线')
周线图
weekly_data = data.resample('W').agg({
'Open': 'first',
'High': 'max',
'Low': 'min',
'Close': 'last',
'Volume': 'sum'
})
mpf.plot(weekly_data, type='candle', volume=True, style='charles', title='AAPL 周线图')
7. 保存与导出图表
# 保存为 PNG 文件
mpf.plot(data, type='candle', volume=True, savefig='aapl_chart.png')
# 保存为 SVG 矢量图
mpf.plot(data, type='candle', volume=True, savefig=dict(fname='aapl_chart.svg', dpi=300))
图片会保存在你代码所在的文件夹,名字是 apple_chart.png
或aapl_chart.svg
8. 完整示例:综合图表
# 0. 导入库
import yfinance as yf
import mplfinance as mpf
# 1. 下载数据
data = yf.download("AAPL", start="2023-01-01", end="2023-12-31")
# 2. 计算MACD
exp12 = data['Close'].ewm(span=12, adjust=False).mean()
exp26 = data['Close'].ewm(span=26, adjust=False).mean()
macd = exp12 - exp26
signal = macd.ewm(span=9, adjust=False).mean()
# 3. 设置子图
ap = [mpf.make_addplot(macd, panel=1, color='blue', ylabel='MACD'),
mpf.make_addplot(signal, panel=1, color='red')]
# 4. 画图并保存
mpf.plot(data, type='candle',
volume=True,
addplot=ap,
style='binance',
title='苹果股票2023',
savefig='apple.png')
9.总结
安装库 → 2. 下载数据 → 3. 画图
-
核心功能:K线图、成交量、技术指标叠加、多子图布局、样式自定义。
-
高级技巧:
-
使用
make_addplot()
添加自定义指标。 -
通过
make_mpf_style()
完全控制颜色和字体。 -
处理不同时间周期(分钟、日、周线)。
-
今天就到这里,byb~