
写在前面的话:如今市面上存在众多的选股指标工具,能够实现多指标灵活筛选股票。然而,倘若您期望定制选股策略,于私域内对个股在某个周期内的动态予以监控,从而抢占市场先机,那么借助 AI 自动生成股票多技术指标K线图,并将其作为后续的分析依据,想必会是一种上佳之选。本文将会凭借一个简易的例子向诸位阐述具体的操作方法。
一、准备工作
在开始前,需要先去招两个只干活不用发工资的免费员工(注册两个工具),一个是Deepseek,我们要用到他的代码助手V2来完成基础代码生成。自己动手写一行代码都是不可能的,全程主打一个剥削AI劳动力。顺便介绍下,除了其代码助手比较符合国人习惯外,Deepseek主打一个便宜,注册就送500万Tokens,几乎等于免费。


接下来还要去注册一个豆包 MarsCode 平台,不管前面AI代码助手生成什么语言的代码在它上面基本上都跑的起来,避免自己的计算机上装一大堆没用的、甚至相互冲突的环境,测试服务器都免了。而且还有智能代码补全为代表的 AI 功能也蛮好用的。这段是官方介绍:豆包 MarsCode支持了多种编程语言以及主流的 IDE,它能够在开发过程中对单行代码乃至整个函数提供编写提议。除此之外,它还对代码解释、单元测试生成以及问题修复等功能提供支持,进而提升了开发的效率与质量。

二、代码实现
召唤你家的免费码农(打开刚刚注册的Deepseek代码助手V2),告诉他:
1.你是一个Python编程专家,要完成一个编写Python脚本的任务。
2.用AKShare库获取股票金山办公(股票代码:688111)在2024年3月7日到2024年7月11日期间的历史行情数据-前复权。然后绘制K线图,并在K线图上添加布林线、MACD。
3.注意以下三点:每一步都要输出信息到屏幕上;日期格式是YYYYMMDD; 设置中文字体,以解决中文显示乱码问题。

这上面的提示词需要注意几点:
1.语言其实Java、Go啥的都可以,就看你对什么语言熟就让它写啥。
2.AKShare是一个基于 Python 的开源金融数据接口库 ,其数据实际上是来源于网络,它所做的是爬取某个公开页面的数据,其本身并不维护和提供数据服务。另外,不同的接口可能有不同的参数要求和返回格式,请根据具体的接口文档进行相应的调用和处理。同时,在使用时需遵守相关网站的使用规则和法律法规,避免过度频繁的请求,以免被封禁 IP 或违反相关规定。使用 AKShare 库时,首先需要安装该库。可以在终端或命令提示符中运行以下命令来安装:
pip install akshare --upgrade
然后“免费码农”就开始劈里啪啦的给你出活了,代码如下:
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 # 用来正常显示负号
# 获取股票数据
print("正在获取金山办公(股票代码:688111)的历史行情数据...")
stock_data = ak.stock_zh_a_hist(symbol="688111", start_date="20240307", end_date="20240711", adjust="qfq")
print("数据获取完成。")
# 将日期列转换为datetime格式
stock_data['日期'] = pd.to_datetime(stock_data['日期'])
stock_data.set_index('日期', inplace=True)
# 计算布林线
print("正在计算布林线...")
stock_data['MA20'] = stock_data['收盘'].rolling(window=20).mean()
stock_data['STD20'] = stock_data['收盘'].rolling(window=20).std()
stock_data['UpperBand'] = stock_data['MA20'] + (stock_data['STD20'] * 2)
stock_data['LowerBand'] = stock_data['MA20'] - (stock_data['STD20'] * 2)
print("布林线计算完成。")
# 计算MACD
print("正在计算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['Signal'] = stock_data['MACD'].ewm(span=9, adjust=False).mean()
stock_data['Histogram'] = stock_data['MACD'] - stock_data['Signal']
print("MACD计算完成。")
# 绘制K线图
print("正在绘制K线图...")
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True, figsize=(14, 10))
# 绘制K线图
ohlc = stock_data[['开盘', '最高', '最低', '收盘']].reset_index()
ohlc.columns = ['Date', 'Open', 'High', 'Low', 'Close']
ohlc['Date'] = ohlc['Date'].map(mdates.date2num)
candlestick_ohlc(ax1, ohlc.values, width=0.6, colorup='red', colordown='green')
# 绘制布林线
ax1.plot(ohlc['Date'], stock_data['MA20'], label='MA20')
ax1.plot(ohlc['Date'], stock_data['UpperBand'], label='Upper Band')
ax1.plot(ohlc['Date'], stock_data['LowerBand'], label='Lower Band')
# 绘制MACD
ax2.plot(ohlc['Date'], stock_data['MACD'], label='MACD')
ax2.plot(ohlc['Date'], stock_data['Signal'], label='Signal')
ax2.bar(ohlc['Date'], stock_data['Histogram'], label='Histogram')
# 设置图形标签
ax1.xaxis_date()
ax1.legend()
ax2.legend()
plt.xticks(rotation=45)
plt.tight_layout()plt.show()
print("K线图绘制完成。")
这个脚本首先使用AKShare库获取金山办公的股票数据,然后计算布林线和MACD指标,最后绘制K线图并在图上添加布林线和MACD。每一步都会输出信息到屏幕上,并且设置了中文字体以解决中文显示乱码问题。
股票代码和时间区间根据实际情况自己输入,后面还可以让你家的“免费码农”写个更方便的交互页面。
接下来继续升级
1、把股票代码,时间期间这两项做成可输入项;
2、编写一个前台html页面来输入股票代码,时间期间,
3、输出就在本页面显示K线图

三、运行调试
打开前面注册好的豆包 MarsCode平台,创建一个Python项目,将前面“免费码农”生成的代码粘贴覆盖main.py页面,这个AI豆包劳力会帮你智能代码补全,这里是帮着完善了一个最终生成图片的功能点。

另外,用豆包 MarsCode平台的其他好处还包括,点击运行如果报错,AI助手会出来帮你解决,下图就是一个环境变量没有安装,按照提示很快解决问题。

点击运行,就可以看到终端输出提示,目录里面也多了一个png图片,打开如下图。

这次为了让大家看得更清晰,我只在K线图上添加了布林线和MACD,你们也可以根据自己的需要自行添加其他技术指标。
好了,今天就写到这里,后面我会在“手把手教你AI顾投”这个专题里面给大家分享更多相关的内容。
本文内容仅仅是技术探讨和学习,并不构成任何投资建议。
Be First to Comment