AI炒股:自动画出A股股票的K线图并添加技术指标

2024-06-24 11:28

本文主要是介绍AI炒股:自动画出A股股票的K线图并添加技术指标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在deepseek中输入提示词:

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

用AKShare库获取股票贵州茅台(股票代码:600519)在2024年3月7日到2024年6月5日期间的历史行情数据-前复权。

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

注意:

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

日期格式是YYYYMMDD;

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

源代码:

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

这篇关于AI炒股:自动画出A股股票的K线图并添加技术指标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1090016

相关文章

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

Spring AI 实现 STDIO和SSE MCP Server的过程详解

《SpringAI实现STDIO和SSEMCPServer的过程详解》STDIO方式是基于进程间通信,MCPClient和MCPServer运行在同一主机,主要用于本地集成、命令行工具等场景... 目录Spring AI 实现 STDIO和SSE MCP Server1.新建Spring Boot项目2.a

python利用backoff实现异常自动重试详解

《python利用backoff实现异常自动重试详解》backoff是一个用于实现重试机制的Python库,通过指数退避或其他策略自动重试失败的操作,下面小编就来和大家详细讲讲如何利用backoff实... 目录1. backoff 库简介2. on_exception 装饰器的原理2.1 核心逻辑2.2

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

使用Python实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏