AKShare绘制贵州茅台K线图:布林线与MACD指标详解
创作时间:
2025-01-22 07:31:06
作者:
@小白创作中心
AKShare绘制贵州茅台K线图:布林线与MACD指标详解
本文将演示如何使用Python编程语言和AKShare库获取贵州茅台(股票代码:600519)的股票历史数据,并绘制包含布林线和MACD指标的K线图。
代码实现
import akshare as ak
import matplotlib.pyplot as plt
import pandas as pd
from mplfinance.original_flavor import candlestick_ohlc
import matplotlib.dates as mdates
import numpy as np
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 获取股票数据
stock_code = "600519"
start_date = "20240307"
end_date = "20240605"
print(f"正在获取股票 {stock_code} 从 {start_date} 到 {end_date} 的历史行情数据...")
stock_data = ak.stock_zh_a_hist(symbol=stock_code, start_date=start_date, end_date=end_date, adjust="qfq")
print("数据获取成功!")
# 将日期列转换为 matplotlib 可识别的日期格式
stock_data['日期'] = pd.to_datetime(stock_data['日期']).apply(lambda x: mdates.date2num(x))
# 重新排列列顺序以适应 mplfinance 的格式
stock_data = stock_data[['日期', '开盘', '最高', '最低', '收盘', '成交量']]
# 计算布林线
stock_data['中轨'] = stock_data['收盘'].rolling(window=20).mean()
stock_data['上轨'] = stock_data['中轨'] + 2 * stock_data['收盘'].rolling(window=20).std()
stock_data['下轨'] = stock_data['中轨'] - 2 * stock_data['收盘'].rolling(window=20).std()
# 计算 MACD
exp1 = stock_data['收盘'].ewm(span=12, adjust=False).mean()
exp2 = stock_data['收盘'].ewm(span=26, adjust=False).mean()
stock_data['MACD'] = exp1 - exp2
stock_data['信号线'] = stock_data['MACD'].ewm(span=9, adjust=False).mean()
stock_data['MACD柱'] = stock_data['MACD'] - stock_data['信号线']
# 绘制K线图
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True, figsize=(14, 10))
# 绘制K线
candlestick_ohlc(ax1, stock_data[['日期', '开盘', '最高', '最低', '收盘']].values, width=0.6, colorup='red', colordown='green')
ax1.plot(stock_data['日期'], stock_data['中轨'], label='中轨')
ax1.plot(stock_data['日期'], stock_data['上轨'], label='上轨')
ax1.plot(stock_data['日期'], stock_data['下轨'], label='下轨')
ax1.xaxis_date()
ax1.legend()
ax1.set_title('贵州茅台 K线图与布林线')
# 绘制MACD
ax2.plot(stock_data['日期'], stock_data['MACD'], label='MACD')
ax2.plot(stock_data['日期'], stock_data['信号线'], label='信号线')
ax2.bar(stock_data['日期'], stock_data['MACD柱'], label='MACD柱')
ax2.xaxis_date()
ax2.legend()
ax2.set_title('贵州茅台 MACD')
plt.tight_layout()
plt.show()
热门推荐
编程转码:从零开始的转型之路
射频工程师职业定义,职责内容以及技术力
增强免疫力,这么补充营养素!
如何管理团队周报工作
玻璃上的胶水怎么去除?8种实用方法详解
凝固很久的玻璃胶怎么软化
一文读懂,牛市思维和熊市思维差异
艾灸时注意事项和禁忌症
什么是焦灰,焦丁,焦粉,以及他们的用途分别是什么?
电力是如何传输到你家的?
云图相关的概念如何理解及怎样进行分析?这种理解和分析存在哪些难点?
如何确保需求评审中各方的利益平衡
在美国生孩子能否获得中国国籍?——解读跨国生育与国籍归属的复杂议题
人工智能如何帮助盲人
便秘的中医名及其相关探讨
马拉松装备指南 | 跑者该准备哪些参赛物资,如何选择?
Excel快捷方式打不开怎么办?多种实用解决方案帮你轻松应对
血型能决定寿命?血型与中风风险有关?
鸡腿菇的功效与作用、禁忌和食用方法
医保查询个人账户明细有哪些方法?
团队协作中如何做到包容
急性肠胃炎的症状、表现及预防措施
瓶装水"花名"多,挑选时应该看什么?
陶艺与家居装饰:如何让陶艺作品点亮生活空间
空腹血糖6.8应注意些什么
误解鲁迅,是“遗忘”他的另一种形式
中国光刻胶行业发展趋势分析与未来前景预测报告(2024-2031年)
猪油、花生油、玉米油……到底哪种油更健康?
朱砂根的养殖方法和注意事项
肝脏病变恶化,应对之策速看!