news 2026/7/2 11:35:35

影刀RPA新手教程:股票数据自动化完全指南——实时行情采集K线数据保存与异动提醒

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
影刀RPA新手教程:股票数据自动化完全指南——实时行情采集K线数据保存与异动提醒

影刀RPA新手教程:股票数据自动化完全指南——实时行情采集K线数据保存与异动提醒

作者:林焱

案例主线:老张的股票数据全自动监控

老张是业余股票投资者,每天要手动查看50只自选股的实时行情,记录K线数据到Excel,并设置价格异动提醒。人工操作每天耗时3小时以上,且经常因为工作忙碌错过最佳买卖点。本教程用影刀RPA搭建股票数据全自动监控系统。


一、认识影刀与安装配置

影刀RPA是零代码自动化工具,支持网页自动化、桌面软件自动化、Excel处理、HTTP请求等核心能力,特别适合股票数据抓取和监控这类需要定时执行的场景。

股票数据来源环境准备

股票数据可以通过多个渠道获取:

  1. 东方财富网:免费、数据全面、更新快,适合国内A股
  2. 同花顺网页版:数据准确、支持实时行情
  3. 新浪财经:API接口简单、易于抓取
  4. 雪球网:社区数据丰富、适合基本面分析

本教程以东方财富网为主要数据源,在Chrome浏览器中操作。在影刀设置中,将默认浏览器设置为Chrome,并开启"自动携带登录态"选项。

安装配置要点

下载影刀安装包,安装路径必须为纯英文,例如D:\StockRPA\。安装完成后重启电脑,确保浏览器插件正确加载。首次打开影刀时,按照向导完成设备激活和账号登录。


二、元素定位四合一

股票网站通常使用传统Java或PHP架构,元素ID相对稳定,但仍需四种定位方式组合使用。

1. 智能匹配

东方财富网的自选股列表中的股票名称、价格等元素相对稳定,优先使用智能匹配。捕获后无需特殊设置,东方财富网的元素ID不会频繁变化。

2. XPath定位

股票列表中的行数据可以使用XPath按位置定位:

//table[@id='table_wrapper-table']//tr[1]//td[2]

东方财富网常用XPath语法:

  • //input[@id='search-input']按ID定位搜索框
  • //table[@id='table_wrapper-table']//tr定位表格所有行
  • //span[@class='stock-price']按类名定位股票价格
  • //a[contains(text(),'加入自选')]按文字定位按钮

3. CSS选择器

东方财富网的CSS类名相对稳定,使用CSS选择器是最优选择:

#search-input/* 搜索输入框 */.table-wrapper-table tr/* 股票列表行 */.stock-price/* 股票价格 */.rise/* 涨 */.fall/* 跌 */

4. 图像识别

股票网站的"加入自选"、"查看K线"等图标按钮可能没有文字标识,使用图像识别。截取按钮截图,使用"点击图像"指令,设置相似度0.85。

实战:定位股票价格元素

东方财富网的股票价格在<span class="stock-price rise"><span class="stock-price fall">标签中。正确做法是:使用//span[contains(@class,'stock-price')]定位价格元素,然后获取其文本内容。


三、变量与数据类型

老张的股票数据需要存储在本地Excel表中,并用变量在流程中传递和处理。

数据表结构

使用"启动Excel"指令打开股票数据表,字段包括:股票代码、股票名称、当前价格、涨跌幅、成交量、成交额、市盈率、市净率、更新时间。使用"读取Excel内容"指令读取A2到J500区域,保存为数据表变量stock_table

字典变量应用

每只股票的基础信息用字典存储:

店群矩阵自动化突破运营极限!

股票基础信息 = { "代码": "600519", "名称": "贵州茅台", "所属板块": "白酒", "成本价": 1850.00, "持有数量": 100 }

使用"在字典中设置"和"从字典中获取"指令操作字典变量。

列表变量应用

需要批量监控多只股票时,使用列表存储股票代码。使用"在列表中添加"指令,将每只股票的代码依次加入列表变量stock_code_list


四、流程控制

条件判断

股票价格异动需要根据涨跌幅判断。使用"如果…否则"指令:

如果 涨跌幅 >= 5 执行:发送"大涨提醒"通知 否则如果 涨跌幅 <= -5 执行:发送"大跌提醒"通知 否则如果 涨跌幅 >= 3 或 涨跌幅 <= -3 执行:发送"明显波动提醒"通知 否则 执行:不发送通知,继续监控 结束如果

循环遍历

需要监控多只自选股。使用"循环Excel内容"指令遍历自选股列表,对每只股票执行:获取实时行情、与成本价比较、判断是否需要提醒。

异常捕获

整个数据抓取流程使用"尝试捕获错误"指令包裹。如果某只股票数据抓取失败(如停牌、退市),捕获错误后记录失败原因到日志表,继续处理下一只股票。


五、网页自动化——实时行情采集

登录态管理

东方财富网的大部分数据不需要登录即可查看,但自选股管理和高级数据需要登录。使用"获取浏览器Cookie"指令,将Cookie保存为JSON格式到本地文件:C:\yingdao_workspace\stock\cookies.json。每次运行前用"设置浏览器Cookie"指令注入。

实时行情抓取

进入东方财富网自选股页面(或单个股票页面)。使用"循环网页相似元素"指令,遍历股票列表中的每一行。对每只股票,使用"获取网页元素内容"指令读取:股票代码、股票名称、当前价格、涨跌幅、成交量、成交额。

数据写入Excel

将抓取到的实时行情数据写入本地Excel表。使用"写入Excel内容"指令,在行情数据表的末尾追加行。字段包括:抓取时间、股票代码、股票名称、当前价格、涨跌幅、成交量、成交额、市盈率。


六、数据处理

K线数据保存

K线数据(开盘价、收盘价、最高价、最低价、成交量)需要按日期保存。使用"发送HTTP请求"指令调用东方财富网的K线数据API:

GET https://push2his.eastmoney.com/api/qt/stock/kline/get?secid=1.600519&fields1=f1,f2,f3,f4,f5,f6&fields2=f51,f52,f53,f54,f55,f56,f57,f58&klt=101&fqt=1&beg=20240101&end=20241231

解析返回的JSON数据,提取K线数据并写入Excel。

涨跌幅计算

使用"计算表达式"指令,计算涨跌额和涨跌幅:

涨跌额 = 当前价格 - 昨收价格 涨跌幅 = (涨跌额 / 昨收价格) * 100

计算结果使用"四舍五入"指令保留2位小数,并添加"%"符号。

异动判断

使用"如果…否则"指令判断是否需要发送异动提醒:

如果 (当前价格 - 成本价) / 成本价 >= 0.1 执行:发送"盈利10%提醒"通知 否则如果 (当前价格 - 成本价) / 成本价 <= -0.05 执行:发送"亏损5%提醒"通知 否则如果 涨跌幅 >= 5 执行:发送"单日大涨提醒"通知 否则如果 涨跌幅 <= -5 执行:发送"单日大跌提醒"通知 结束如果

七、鼠标键盘图像自动化

处理股票网站弹窗

东方财富网偶尔弹出"关注我们"、"下载APP"等营销弹窗。使用"按键盘按键"指令发送Esc键关闭弹窗。在关键操作前先发送一次Esc。

鼠标滚轮操作

股票列表较长时需要滚动加载更多。使用"执行JavaScript"指令执行滚动:

function(element,input){window.scrollTo(0,document.body.scrollHeight);return"滚动完成";}

截图取证

股票价格出现异动时,使用"网页截图"指令截取股票行情页面,保存为PNG文件,命名格式:股票代码_异动类型_时间戳.png。截图保存在C:\yingdao_workspace\stock\screenshots\目录下。


八、进阶技能

定时监控

老张希望每5分钟自动监控一次自选股行情。在影刀"计划任务"中新建定时任务,触发方式选择"按间隔执行",间隔设置为5分钟。

多市场监控

如果同时监控A股、港股、美股,需要管理多个数据源。在Excel配置表中添加"市场名称"和"数据源URL"两列,循环中根据当前行读取对应URL并抓取数据。

企业微信通知

股票价格异动时,使用"发送企业微信消息"指令,向老张发送异动提醒。消息内容包含:股票名称、当前价格、涨跌幅、异动类型、建议操作(买入/卖出/持有)。


九、平台实战——K线数据保存

K线数据API调用

使用"发送HTTP请求"指令调用东方财富网的K线数据API。请求示例:

GET https://push2his.eastmoney.com/api/qt/stock/kline/get Query Parameters: secid: 1.600519 (1代表深圳,0代表上海) fields1: f1,f2,f3,f4,f5,f6 fields2: f51,f52,f53,f54,f55,f56,f57,f58 klt: 101 (101=日K,102=周K,103=月K) fqt: 1 (是否复权,1=前复权,2=后复权) beg: 20240101 (开始日期) end: 20241231 (结束日期)

JSON数据解析

API返回的数据是JSON格式。使用"解析JSON"指令将响应解析为字典。K线数据在data.klines字段中,是字符串数组,每个元素格式为:日期,开盘,收盘,最高,最低,成交量,成交额,振幅

使用"Python脚本"指令解析K线数据:

defparse_kline_data(klines):""" 解析东方财富网K线数据 klines: 字符串数组,每个元素格式为"日期,开盘,收盘,最高,最低,成交量,成交额,振幅" """importdatetime result=[]forlineinklines:parts=line.split(',')iflen(parts)>=7:kline={"日期":parts[0],"开盘":float(parts[1]),"收盘":float(parts[2]),"最高":float(parts[3]),![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7301ce70136e484289ac8f9b05240e85.png#pic_center)"最低":float(parts[4]),"成交量":int(parts[5]),"成交额":float(parts[6]),}# 计算涨跌幅iflen(result)>0:prev_close=result[-1]["收盘"]kline["涨跌幅"]=round((kline["收盘"]-prev_close)/prev_close*100,2)else:kline["涨跌幅"]=0.0result.append(kline)returnresult

Excel保存

将解析后的K线数据写入Excel。使用"写入Excel内容"指令,在K线数据表中追加多行。字段包括:日期、开盘价、收盘价、最高价、最低价、成交量、成交额、涨跌幅。


十、系统联动

Excel数据分析

每日收盘后,使用"Python脚本"指令执行数据分析:

importpandasaspddefanalyze_stock_data(kline_data):""" 分析K线数据,计算技术指标 """df=pd.DataFrame(kline_data)df['日期']=pd.to_datetime(df['日期'])df=df.sort_values('日期')# 计算5日均线df['MA5']=df['收盘'].rolling(window=5).mean()# 计算10日均线df['MA10']=df['收盘'].rolling(window=10).mean()# 计算20日均线df['MA20']=df['收盘'].rolling(window=20).mean()# 计算MACD指标(简化版)df['EMA12']=df['收盘'].ewm(span=12).mean()df['EMA26']=df['收盘'].ewm(span=26).mean()df['DIF']=df['EMA12']-df['EMA26']df['DEA']=df['DIF'].ewm(span=9).mean()df['MACD']=(df['DIF']-df['DEA'])*2returndf.to_dict('records')

邮件推送

每日收盘后,使用"发送邮件"指令将当日行情汇总和K线数据分析报告作为附件发送给老张。邮件主题格式:【股票日报】YYYY年MM月DD日,正文简要说明:监控股票数量、异动股票数量、建议关注的股票列表。

飞书多维表格同步

如果团队共享股票研究数据,可以将股票数据同步到飞书多维表格。使用影刀的飞书多维表格指令,在数据表中追加记录,字段包含:日期、股票代码、股票名称、收盘价、涨跌幅、成交量、MA5、MA10、MACD。


十一、工程化与规范

temu店群自动化报活动案例

应用结构规范

规范的应用结构:配置区(读取配置、校验必要参数)、初始化区(启动浏览器、设置超时时间)、主流程区(行情抓取、K线数据保存、异动判断)、异常处理区(错误捕获与记录)、收尾区(生成报表、发送通知、关闭浏览器)。

用"注释"指令在关键步骤前添加说明,格式为:【步骤N】操作说明 - 预计耗时XX秒

变量命名规范

  • 全局变量前缀g_g_cookie_pathg_notify_threshold
  • 循环变量前缀loop_loop_stock_codeloop_kline
  • 临时变量小写下划线:temp_pricetemp_change_percent

配置外部化

股票代码列表、监控阈值、通知方式等配置信息存储在外部Excel配置表中,不硬编码在应用内。使用"读取Excel内容"指令从配置表读取配置。

配置表示例(C:\yingdao_workspace\stock\config.xlsx):

配置项配置值说明
监控间隔(分钟)5每5分钟监控一次
大涨提醒阈值(%)5单日涨幅超过5%时提醒
大跌提醒阈值(%)-5单日跌幅超过-5%时提醒
盈利提醒阈值(%)10盈利超过10%时提醒
亏损提醒阈值(%)-5亏损超过-5%时提醒
通知方式企业微信支持:企业微信、邮件、钉钉
数据源东方财富网支持:东方财富、同花顺、新浪财经

运行日志

使用"写入日志"指令记录关键操作。日志文件按日期命名,保存在C:\yingdao_logs\stock\目录下。

日志格式示例:

[2025-01-15 09:30:15] [INFO] 定时任务启动,开始监控自选股行情 [2025-01-15 09:30:16] [INFO] 本次监控股票数量:50只 [2025-01-15 09:30:45] [WARN] 股票"600519 贵州茅台"数据抓取失败,已记录到失败清单 [2025-01-15 09:31:22] [INFO] 成功抓取49只股票行情数据 [2025-01-15 09:31:30] [INFO] 发现3只股票异动:600519(涨+5.2%)、000001(跌-6.1%)、600036(涨+7.8%) [2025-01-15 09:31:35] [INFO] 异动提醒已发送到企业微信 [2025-01-15 09:31:40] [INFO] 本次监控任务完成,耗时25秒

十二、速查表与常见报错

常见报错速查

报错信息可能原因解决方法
TimeoutException: Message: timeout页面加载超时(股票网站服务器响应慢或网络问题)增加"等待元素出现"的超时时间至30秒;检查网络连接;避开股市开盘和收盘的流量高峰时段(9:30-10:00、14:30-15:00)
ElementNotInteractableException元素被遮挡(弹窗、遮罩层、广告)先按Esc关闭弹窗;使用"等待元素可见"指令等待元素进入视口;检查是否有iframe嵌套
StaleElementReferenceException页面刷新导致元素失效在循环内重新获取元素后再操作;使用For次数循环代替相似元素循环
Cookie失效登录态过期(通常7天后)重新手动登录东方财富网,使用"获取浏览器Cookie"指令更新Cookie文件
API调用失败API接口变更或请求参数错误检查API请求URL和参数是否正确;查看东方财富网官方文档或开发者工具中的网络请求
数据解析失败API返回的数据格式变更使用"调试变量"面板查看API返回的原始数据,调整解析逻辑
发送通知失败企业微信Webhook失效或网络问题检查企业微信机器人Webhook地址是否正确;重新获取Webhook地址
Excel写入失败Excel文件被其他程序占用确保Excel文件没有被手动打开;使用"关闭Excel"指令关闭所有Excel进程后再写入

股票网站元素定位速查

# 东方财富网 - 搜索框 //input[@id='search-input'] # 东方财富网 - 自选股列表行 //table[@id='table_wrapper-table']//tr # 东方财富网 - 股票价格 //span[contains(@class,'stock-price')] # 东方财富网 - 涨跌幅 //span[contains(@class,'rise') or contains(@class,'fall')] # 同花顺 - 股票搜索框 //input[@id='searchBox'] # 新浪财经 - 股票价格 //div[@id='price']
/* 东方财富网常用样式 */#search-input/* 搜索输入框 */.table-wrapper-table tr/* 自选股列表行 */.stock-price/* 股票价格 */.rise/* 涨 */.fall/* 跌 */.stock-name/* 股票名称 *//* 同花顺常用样式 */#searchBox/* 搜索框 */.stock-item/* 股票项 */.price-now/* 当前价格 */

股票数据API调用示例

# 1. 东方财富网 - 实时行情(单个股票) GET https://push2.eastmoney.com/api/qt/stock/get?secid=1.600519&fields=f43,f44,f45,f46,f47,f48,f49,f50,f51,f52,f57,f58,f84,f85,f86,f168,f169,f170,f171 # 2. 东方财富网 - K线数据(日K) GET https://push2his.eastmoney.com/api/qt/stock/kline/get?secid=1.600519&fields1=f1,f2,f3,f4,f5,f6&fields2=f51,f52,f53,f54,f55,f56,f57,f58&klt=101&fqt=1&beg=20240101&end=20241231 # 3. 新浪财经 - 实时行情(多个股票,逗号分隔) GET https://hq.sinajs.cn/list=sh600519,sz000001 # 4. 腾讯财经 - 实时行情 GET https://qt.gtimg.cn/q=sh600519

Python股票数据分析脚本汇总

# 1. 计算移动平均线(MA)defcalculate_ma(prices,window=5):""" 计算移动平均线 prices: 价格列表(按时间顺序) window: 窗口大小(如5日、10日、20日) """importpandasaspd series=pd.Series(prices)ma=series.rolling(window=window).mean().tolist()returnma# 2. 计算MACD指标defcalculate_macd(prices,fast=12,slow=26,signal=9):""" 计算MACD指标 """importpandasaspd series=pd.Series(prices)ema_fast=series.ewm(span=fast).mean()ema_slow=series.ewm(span=slow).mean()dif=ema_fast-ema_slow dea=dif.ewm(span=signal).mean()macd=(dif-dea)*2return{"DIF":dif.tolist(),"DEA":dea.tolist(),"MACD":macd.tolist()}# 3. 计算KDJ指标defcalculate_kdj(high,low,close,n=9):""" 计算KDJ指标 """importpandasaspdimportnumpyasnp high=pd.Series(high)low=pd.Series(low)close=pd.Series(close)lowest=low.rolling(window=n).min()highest=high.rolling(window=n).max()rsv=(close-lowest)/(highest-lowest)*100k=rsv.ewm(com=2).mean()d=k.ewm(com=2).mean()j=3*k-2*dreturn{"K":k.tolist(),"D":d.tolist(),"J":j.tolist()}# 4. 计算RSI指标defcalculate_rsi(prices,period=14):""" 计算RSI指标 """importpandasaspdimportnumpyasnp series=pd.Series(prices)delta=series.diff()gain=delta.where(delta>0,0)loss=-delta.where(delta<0,0)avg_gain=gain.rolling(window=period).mean()avg_loss=loss.rolling(window=period).mean()rs=avg_gain/avg_loss rsi=100-(100/(1+rs))returnrsi.tolist()# 5. 判断金叉/死叉defcheck_golden_death_cross(ma_short,ma_long):""" 判断均线金叉(买入信号)或死叉(卖出信号) ma_short: 短期均线(如MA5) ma_long: 长期均线(如MA20) 返回:1=金叉,-1=死叉,0=无信号 """iflen(ma_short)<2orlen(ma_long)<2:return0# 前一天:短期均线 <= 长期均线;今天:短期均线 > 长期均线 => 金叉ifma_short[-2]<=ma_long[-2]andma_short[-1]>ma_long[-1]:return1# 金叉# 前一天:短期均线 >= 长期均线;今天:短期均线 < 长期均线 => 死叉ifma_short[-2]>=ma_long[-2]andma_short[-1]<ma_long[-1]:return-1# 死叉return0# 无信号

调试技巧

股票数据抓取涉及实时数据,调试时建议:不要在股市交易时段(9:30-15:00)进行调试,因为实时数据不断变化,可能导致调试结果不稳定。

调试技巧:

  1. 在抓取数据前打断点,确认股票代码列表正确
  2. 在解析数据前打断点,确认API返回的数据格式正确
  3. 在写入Excel前打断点,确认解析后的数据正确
  4. 使用"调试变量"面板查看每次循环中的股票数据,确认无异常值
  5. 如果必须使用断点调试循环内部,设置一个"调试模式"全局变量,只有在调试模式下才暂停

总结

通过本文搭建的股票数据全自动监控系统,老张每天3小时的人工监控工作压缩到0(全自动运行),只有在收到异动提醒时才需要人工判断是否操作。

系统自动完成:实时行情采集(每5分钟)、K线数据保存(每日收盘后)、异动提醒(实时)、技术指标计算(每日收盘后)、数据分析报告生成与推送(每日收盘后)。

重要提醒

  1. 股票投资有风险,自动化工具仅供参考,不构成投资建议
  2. 不要完全依赖自动化工具进行投资决策,需要结合基本面、政策面、资金面等多方面因素综合判断
  3. 定期检查自动化系统的运行日志,确保数据准确性
  4. 遵守各大数据源的使用条款,不要频繁请求导致IP被封

影刀RPA让普通投资者也能拥有机构级的自动化监控能力,把宝贵的时间用在有价值的分析和决策上。


#影刀RPA #RPA教程 #股票数据 #自动化监控 #K线数据

作者:林焱

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 11:35:25

终极Steam创意工坊下载指南:WorkshopDL轻松获取1000+游戏模组

终极Steam创意工坊下载指南&#xff1a;WorkshopDL轻松获取1000游戏模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否曾因没有Steam账号而无法下载《盖瑞的模组》的创…

作者头像 李华
网站建设 2026/7/2 11:34:55

抖音批量下载技术方案:从零构建高效内容管理工具

抖音批量下载技术方案&#xff1a;从零构建高效内容管理工具 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…

作者头像 李华
网站建设 2026/7/2 11:34:52

【Claude】IDE 集成与编辑器配置全攻略 — 已解决

【Claude】IDE 集成与编辑器配置全攻略 — 已解决 适用版本&#xff1a;Claude Code v1.0.x 及以上受影响场景&#xff1a;VS Code、JetBrains、Neovim、Emacs 集成阅读时长&#xff1a;约 25 分钟 目录 问题现象原理深挖&#xff1a;IDE 集成架构根因分析&#xff1a;集成中的…

作者头像 李华
网站建设 2026/7/2 11:34:33

从全量化到有限量化:算法管理下,平衡业务效率与组织长期价值

我们雇用的是完整的人&#xff0c;算法却常常只看见他们的手指。一家领先的保险公司引入了智能派单与话术导航系统&#xff0c;客服人员的平均处理时长下降22%&#xff0c;单日接单量提升17%。但一年后&#xff0c;管理层发现一个令人不安的趋势&#xff1a;复杂投诉的首次解决…

作者头像 李华
网站建设 2026/7/2 11:33:19

【AI项目管理实战指南】

项目管理实战指南&#xff1a;把事做成的方法论写在前面&#xff1a;这篇文章不教你背PMBOK的定义&#xff0c;也不教你考证技巧。它讲的是一个真正带过项目的人踩过无数坑之后总结出来的实战方法论——怎么在资源永远不够、需求永远在变、老板永远催你的现实里&#xff0c;把一…

作者头像 李华