专栏:【量化学习】
前言
书接上回,在上篇文章中我们详细讲解了如何使用mplfinance和plotly在 QMT 环境中绘制 K 线图,解决了不同软件 K 线不一致的核心问题。本篇将继续介绍另外两款极具特色的 Python 绘图库:国产中文友好的 pyecharts 和专为金融数据优化的 finplot,并给出四大库的终极选型指南,帮你找到最适合自己量化场景的绘图工具。
一、pyecharts:国产交互式 K 线(中文友好 + 大屏展示)
pyecharts是基于百度 Echarts 开发的国产绘图库,最大优势是全中文文档、交互效果丰富、支持大屏可视化,特别适合制作量化分析报告和企业内部展示看板。
1.1 库安装
pip install pyecharts
1.2 基础 K 线绘制代码
from pyecharts.charts import Kline
from pyecharts.options import TitleOpts, TooltipOpts
import pandas as pd
# QMT获取平安银行日线数据
df = get_hq('000001.SZ', start_date='20240101', period='1d')
# 创建K线图对象
kline = Kline()
# 添加X轴(日期)
kline.add_xaxis(list(df['date']))
# 添加Y轴数据 ⚠️ 注意:pyecharts数据顺序是 [open, close, low, high],与其他库不同
kline.add_yaxis(
"K线图",
df[['open', 'close', 'low', 'high']].values.tolist()
)
# 设置全局配置
kline.set_global_opts(
title_opts=TitleOpts(title="平安银行(000001.SZ)日线K线图"),
tooltip_opts=TooltipOpts(trigger="axis")
)
# 渲染为HTML文件,可直接在浏览器打开
kline.render("kline.html")
1.3 核心特点与注意事项
- ✅ 中文原生支持:无乱码问题,文档和社区均为中文,新手友好
- ✅ 大屏适配:完美支持企业级数据大屏展示,动效丰富
- ✅ 组件丰富:可轻松叠加均线、成交量、MACD 等指标
- ⚠️ 数据顺序坑点 :必须严格按照
[开盘价, 收盘价, 最低价, 最高价]的顺序传入数据,否则 K 线会完全错乱
二、finplot:高性能金融绘图库(大数据量首选)
finplot是量化圈的 "隐藏高手",专门为金融时间序列数据优化,运行速度远超其他所有库,特别适合绘制分钟级、秒级等超大数据量的 K 线图,还能直接嵌入 PyQt 界面打造专业交易软件。
2.1 库安装
pip install finplot
安装时会自动安装 PyQt 等依赖,无需额外配置。
2.2 基础 K 线绘制代码
import finplot as fplt
import pandas as pd
# QMT获取行情数据
df = get_hq('000001.SZ', start_date='20240101', period='1d')
# 绘制蜡烛图 ⚠️ 数据顺序:[open, close, high, low]
fplt.candlestick_ochl(df[['open', 'close', 'high', 'low']])
# 显示图表
fplt.show()
2.3 核心优势
- 🚀 极致性能:处理百万级 K 线数据无卡顿,是唯能流畅绘制全市场历史 tick 数据的库
- 🖥️ 桌面集成:可无缝嵌入 PyQt/PySide 应用,打造类似通达信、同花顺的专业交易终端
- 📊 金融专属:内置成交量、MACD、RSI 等常用技术指标绘制函数
- 🎯 轻量简洁:API 设计极简,学习成本低,专注于量化分析本身
三、四大 K 线绘图库终极选型指南
为了方便大家快速选择,我将四款库的核心特点、优势和适用场景整理成下表:
| 绘图库 | 核心优势 | 最大劣势 | 运行速度 | 交互能力 | 适用场景 |
|---|---|---|---|---|---|
| mplfinance | 稳定可靠、数据结构友好、学习成本最低 | 静态图表、无交互 | ★★★★★ | ★☆☆☆☆ | 策略回测、批量生成图表、本地快速复盘 |
| plotly | 交互效果顶级、可嵌入网页 | 大数据量卡顿 | ★★☆☆☆ | ★★★★★ | 分析报告、网页版量化系统、分享展示 |
| pyecharts | 中文友好、大屏适配、国产生态 | 数据顺序特殊 | ★★★☆☆ | ★★★★☆ | 企业内部展示、量化报告、中文项目 |
| finplot | 极致性能、桌面集成、金融专属 | 社区相对较小 | ★★★★★ | ★★★☆☆ | 大数据量分析、专业交易终端开发、高频策略复盘 |
核心选型结论
- 纯策略开发与回测 :首选
mplfinance,清爽简洁,不花里胡哨,专注于策略本身 - 网页展示与分享 :
plotly和pyecharts二选一,英文项目选 plotly,中文项目选 pyecharts - 大数据量 / 高频策略 :唯一选择
finplot,其他库在百万级数据下都会严重卡顿 - 桌面交易软件开发 :必须用
finplot,可直接嵌入 PyQt 打造专业级终端
四、全文总结
通过上下两篇文章,我们完整学习了在 QMT 环境中使用 Python 绘制自定义 K 线的四种主流方案:
- 用 QMT 原生
get_hq接口获取最准确的行情数据,从根源上解决 K 线不一致问题 - 掌握了
mplfinance、plotly、pyecharts、finplot四款库的基本使用方法 - 明确了不同库的优缺点和适用场景,可根据自身需求灵活选择
自定义 K 线是量化分析的基础,后续我们还会在此基础上讲解如何叠加技术指标、绘制买卖点标记、实现实时 K 线更新等进阶功能,敬请期待。
⚠️ 重要风险提示
- 投资有风险,入市需谨慎 。本文所有内容及代码仅用于量化技术学习与交流,不构成任何投资建议、交易指导或收益承诺。历史回测结果不代表未来实际收益,任何基于本文内容进行的投资决策,风险由投资者自行承担。
- 量化交易存在技术风险,包括但不限于:系统故障、网络延迟、行情数据错误、策略逻辑缺陷、交易滑点等,可能导致实际交易结果与回测结果产生重大偏差。
本文为原创文章,转载请注明出处。如有任何问题,欢迎在评论区留言交流。