在量化交易中,布林带(Bollinger Bands)是一种广泛使用的技术分析工具,它能够帮助我们识别市场的超买和超卖情况。本文将介绍如何使用 Python 的 akshare
库获取 A 股数据,并结合 mplfinance
库绘制带有布林带的 K 线图。
1. 安装依赖
在开始之前,请确保已安装 akshare
、mplfinance
、pandas
和 matplotlib
,可以使用以下命令进行安装:
pip install akshare mplfinance pandas matplotlib
2. 获取股票数据
akshare
是一个强大的金融数据接口库,我们可以使用 stock_zh_a_hist
方法获取指定股票的历史数据。例如,我们以 300750(宁德时代) 为例:
import akshare as ak
import pandas as pd
df = ak.stock_zh_a_hist(symbol="300750", period="daily", start_date="20241101", end_date='20250218', adjust="")
该数据包含了日期、开盘价、收盘价、最高价、最低价、成交量等信息。
3. 数据预处理
我们需要筛选相关列,并调整格式,以便后续绘图:
# 选择所需列
df = df.iloc[:, [0, 2, 3, 4, 5, 6]]
df['日期'] = pd.to_datetime(df['日期'])
# 调整列名
df.columns = ['Date', 'Open', 'Close', 'High', 'Low', 'Volume']
df.set_index('Date', inplace=True)
4. 计算布林带
布林带由中轨线(均线)、上轨线(均线 + 标准差 * 2)、下轨线(均线 - 标准差 * 2)组成,计算方法如下:
def Boll(data, n, m):
mid = data['Close'].rolling(n).mean()
upper = mid + m * data['Close'].rolling(n).std()
lower = mid - m * data['Close'].rolling(n).std()
return mid, upper, lower
if len(df) >= 20:
df['mid'], df['upper'], df['lower'] = Boll(df, 20, 2)
else:
raise ValueError("数据量不足 20,无法计算布林带")
5. 绘制带布林带的 K 线图
使用 mplfinance
绘制 K 线图,并叠加布林带:
import mplfinance as mpf
import matplotlib.pyplot as plt
apds = [
mpf.make_addplot(df['upper'], color='red', linestyle='dashed'),
mpf.make_addplot(df['mid'], color='blue', linestyle='dashed'),
mpf.make_addplot(df['lower'], color='green', linestyle='dashed')
]
mpf.plot(
df, type='candle', style='charles',
title='Stock 300750 with Bollinger Bands',
ylabel='Price', volume=True, addplot=apds,
mav=(5, 10)
)
plt.show()
6. 结论
通过本文的示例,演示了如何使用 akshare
获取 A 股数据,并使用 mplfinance
绘制 K 线图和布林带。布林带是一种有效的技术指标,可用于分析市场趋势和波动性。