python绘制A股股票的K线图并添加技术指标

用AKShare库获取股票景旺电子(股票代码:603228)在2024年6月1日到2024年7月2日期间的历史行情数据-前复权。 然后绘制K线图,并在K线图上添加布林线、MACD

首先,确保已经安装了Python环境和pip工具,然后通过pip安装AKShare库:

pip install akshare

还要安装matplotlib库和mplfinance库:

pip install matplotlib mplfinance

结合如下提示词:

你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下:

用AKShare库获取股票景旺电子(股票代码:603228)在2024年6月1日到2024年7月2日期间的历史行情数据-前复权。

然后绘制K线图,并在K线图上添加布林线、MACD

注意:

每一步都要输出信息到屏幕上;

日期格式是YYYYMMDD;

设置中文字体,以解决中文显示乱码问题;

编写如下编写Python脚本:

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 = "603228"

start_date = "20240601"

end_date = "20240702"

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()

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在python中画股票k线图添加均线,可以按照以下步骤进行操作: 1. 导入必要的库:使用`import`语句导入需要的库,例如`import matplotlib.pyplot as plt`和`import mpl_finance as mpf`。 2. 准备数据:将股票的历史数据存储在一个数据框中,确保数据框包含日期、开盘价、最高价、最低价和收盘价等必要的列。 3. 计算均线数据:使用`rolling`函数和`mean`函数计算5日均线和10日均线的数据,并将结果存储在数据框的新列中。例如,使用以下代码计算5日均线和10日均线: ``` df['M5'] = df['close'].rolling(5).mean() # 5日均线 df['M10'] = df['close'].rolling(10).mean() # 10日均线 ``` 4. 创建画布和子图:使用`plt.subplots`函数创建画布和子图,并设置画布的大小。例如,使用以下代码创建一个大小为15x6的画布和子图: ``` fig, ax = plt.subplots(figsize=(15, 6)) ``` 5. 绘制k线图:使用`mpf.candlestick_ochl`函数绘制k线图,传入子图名称、股票历史数据、k线柱的宽度、涨跌颜色和柱形透明度等参数。例如,使用以下代码绘制k线图: ``` mpf.candlestick_ochl(ax, df_arr, width=0.6, colorup='r', colordown='g', alpha=1) ``` 6. 添加均线图:使用`plt.plot`函数在同一子图中绘制均线图。例如,使用以下代码绘制5日均线和10日均线: ``` plt.plot(df_arr[:, 0], df['M5']) # 绘制5日均线 plt.plot(df_arr[:, 0], df['M10']) # 绘制10日均线 ``` 7. 添加标题和坐标轴标签:使用`plt.title`、`plt.xlabel`和`plt.ylabel`函数分别设置标题、x轴标签和y轴标签。例如,使用以下代码添加标题和标签: ``` plt.title('股票名称') # 设置标题 plt.xlabel('日期') # 设置x轴标签 plt.ylabel('价格') # 设置y轴标签 ``` 8. 设置刻度格式:使用`ax.xaxis_date`函数将x轴刻度设置为常规日期格式。 9. 显示图像:使用`plt.show`函数显示绘制的图像。 请注意,上述步骤中的变量名和参数值应根据实际情况进行调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python绘制股票k线图](https://blog.csdn.net/hjhlln/article/details/127282449)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值