type 为datetime 的字段如何自动添加数据_Python数据可视化:如何用mplfinance创建蜡烛图...

本文详细介绍了如何使用Python的mplfinance库创建专业的金融蜡烛图,涵盖数据获取、基础图表、样式定制、成交量展示及高级特性。适合金融分析师和初学者学习股票市场分析技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形。

我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,使用matplotlib, seaborn, plotly等工具实现可视化。

本文的主题是如何创建蜡烛图。

蜡烛图在金融领域的应用非常广泛,蜡烛图包含了证券价格的开盘价,最高价,最低价,收盘价和成交量,是技术分析的基础。

创建蜡烛图需要先安装一个三方库:mplfinance,这原本是Matplotlib的子模块,现被剥离成为一个独立的库。

在终端运行命令:pip install mplfinance

import os

import requests
import pandas as pd
import matplotlib.pyplot as plt
import mplfinance as mpf

%matplotlib inline

1. 获取K线数据

先从蜂鸟数据获取股票历史K线,蜂鸟数据提供沪深A股,港股,美股,期货,外汇,数字货币的实时报价和历史数据。查看API文档。

登录蜂鸟官网,注册即可获得API密钥,免费获取金融数据。

# 获取微软(MSFT)的日图历史K线
data = requests.get('https://api.trochil.cn/v1/usstock/history',
params={
'symbol': 'MSFT',
'start_date': '2020-01-01',
'end_date': '2020-08-31',
'apikey': os.getenv("TROCHIL_API") # 使用您的API密钥
})

df = pd.DataFrame.from_records(data.json()["data"])
df["datetime"] = pd.to_datetime(df["datetime"])
df.set_index("datetime", inplace=True)

df.head()
039deaed62abb364ec2349a6f28d99e5.png

2. 基础蜡烛图

要创建蜡烛图,只需要调用mpf.plot接口。

mpf.plot(data, type, title, ylabel, style, volume, ylabel_lower, show_nontrading, figratio, mav)

  • data: pd.DataFrame, 包含'Open','High','Low','Close'字段,如果要显示成交量,还要提供'Volume',默认时间序列索引(DatetimeIndex)

  • type: 图表类型,可选值包含:'ohlc', 'candle', 'line', 'renko', 'pnf'

  • title: 标题

  • ylabel: 纵轴标签

  • style: 蜡烛图样式,mplfinance提供了很多内置样式

  • volume: True表示添加成交量,默认False

  • ylabel_lower: 成交量的Y轴标签

  • show_nontrading: True显示非交易日,默认False

  • figratio: 控制图表大小的元组

  • mav: 整数或包含整数的元组,是否在图表中添加移动平均线

df2 = df["2020-08"]

mpf.plot(df2, type="candle", title="Candlestick for MSFT", ylabel="price($)")
1c09b375108013f6aa96d83d350dc891.png

3. 调整样式

mplfinance提供了很多内置样式,便于用户快速创建美观的蜡烛图。

mpf.available_styles()


['binance',
'blueskies',
'brasil',
'charles',
'checkers',
'classic',
'default',
'mike',
'nightclouds',
'sas',
'starsandstripes',
'yahoo']


mpf.plot(df2, type="candle", title="Candlestick for MSFT", ylabel="price($)", style="binance")
7d84b16c3119b101a90eeb687bbaa566.png

4. 添加成交量

mpf.plot(
data=df2,
type="candle",
title="Candlestick for MSFT",
ylabel="price($)",
style="binance",
volume=True,
ylabel_lower="volume(shares)"
)
473ad975ab0c22f7264cd49e2534021e.png

5. 显示非交易日

mpf.plot(
data=df2,
type="candle",
title="Candlestick for MSFT",
ylabel="price($)",
show_nontrading=True
)
aa8c033c7b95b6912e0774f1b76e343d.png

6. 自定义样式

如果内置样式不满足需求,可以自定义样式,并提供给style参数。

# 调用make_marketcolors函数,定义K线颜色
mc = mpf.make_marketcolors(
up="red", # 上涨K线的颜色
down="green", # 下跌K线的颜色
edge="black", # 蜡烛图箱体的颜色
volume="blue", # 成交量柱子的颜色
wick="black" # 蜡烛图影线的颜色
)

# 调用make_mpf_style函数,自定义图表样式
# 函数返回一个字典,查看字典包含的数据,按照需求和规范调整参数
style = mpf.make_mpf_style(base_mpl_style="ggplot", marketcolors=mc)
# print(style)

mpf.plot(
data=df2,
type="candle",
title="Candlestick for MSFT",
ylabel="price($)",
style=style,
volume=True
)
33c7f60b69ec40bbd21465bac670f00b.png

7. 调整图表大小

mpf.plot(
data=df2,
type="candle",
title="Candlestick for MSFT",
ylabel="price($)",
style="binance",
figratio=(12, 6)
)
b97003c67dc485285574b05222ae36de.png

8. 添加移动平均线

mpf.plot(
data=df,
type="candle",
title="Candlestick for MSFT",
ylabel="price($)",
style="binance",
figratio=(12, 6),
mav=(10, 20, 50) # 整数,或包含整数的列表/元组
)
4ff342f447bdcbaa09a279adca7e4ca1.png

如果喜欢我们的文章,记得点赞和收藏哦,我们每天都会为大家带来Python,数据科学和量化交易的精品内容。

【关于我们】

蜂鸟数据:国内领先的金融数据API提供商。

蜂鸟数据团队由业界顶尖的数据工程师,数据科学家和宽客组成,我们正努力构建一个强大的金融数据库,并提供API接口,目标是令金融数据开源化和平民化。

浏览并测试我们接口吧,目前覆盖股票,外汇,商品期货,数字货币和宏观经济领域,包括实时报价(tick)和历史数据(分钟),提供REST API和Websocket两种接入方式,能够满足金融分析师,量化交易和理财app的需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值