【Code With SOLO】用 SOLO 30 分钟搭出我梦寐以求的 A 股信息看板

摘要

每个交易日早上 9:25,我都会做同一件事:打开同花顺看行情,切到东方财富查评级,再打开通达信看技术指标——三个 App 来回切,光平安银行一只股票就要点十几下。

我用一句话把这个痛点丢给 TRAE SOLO,30 分钟后,它给了我一个完整的 Web 应用:自选股管理、截图 OCR 识别添加股票、一键刷新获取机构评级/目标价/MACD/RSI/KDJ/布林带/市场主线板块……所有我想要的信息,一个页面全部搞定

更离谱的是,我全程没写一行代码。

背景:一个散户的日常崩溃

我是一名个人投资者,持仓 4-5 只 A 股。每天最痛苦的不是亏钱(好吧也很痛苦),而是查信息

  • 想看机构评级?打开东财,搜索股票,找到研报栏目,翻好几页
  • 想看目标价?同上,还要自己算平均价
  • 想看 MACD 金叉死叉?切到通达信,打开指标面板
  • 想看今天什么板块在涨?再切回东财,找板块排行

每天光查信息就要花 15-20 分钟,而且经常漏看。

我一直想有一个统一的看板,把所有信息汇总到一起。但我是做运营的,不会写代码,这个想法就一直搁着。

直到我遇到了 TRAE SOLO。

实践过程

第一步:一句话描述需求

我对 SOLO 说:

“我想做一个股票信息获取的 app,用户可以添加自己的持仓或者自选股,支持截图和输入股票代码、名称之类的,支持 autocomplete,加了之后在用户点击刷新的时候获取这些股票机构的评级以及目标价等信息。”

就这么一句话,没有技术术语,没有架构设计,就是把我的痛点用大白话说出来。

:camera_with_flash: 截图:我在 SOLO 中输入需求的对话界面

第二步:SOLO 自动拆解和调研

SOLO 没有直接开始写代码,而是先做了两件事:

1)需求拆解——它把我的话拆成了 8 个功能模块:

模块 我说的 SOLO 理解的
自选股管理 “添加持仓” 增删改查 + 分组 + 成本价/持仓数量
股票搜索 “输入代码名称” 300ms 防抖自动补全
截图识别 “支持截图” OCR 识别 + 批量添加
数据刷新 “点击刷新获取” 行情+评级+技术指标一键拉取
机构评级 “机构评级” 评级分布 + 平均目标价 + 历史记录
技术指标 (我没提) MACD/RSI/KDJ/布林带/均线系统
市场主线 (我也没提) 概念板块 + 行业板块涨幅榜

注意最后两项——技术指标和市场主线是我自己都没想到的,SOLO 主动帮我加了。

2)数据源调研——它对比了 4 个数据源:

数据源 注册 机构评级 实时行情 技术指标
AKShare 不需要 :white_check_mark: 636条 :white_check_mark: 需自行计算
BaoStock 不需要 :cross_mark: :cross_mark: 需自行计算
Tushare 需要 部分 延迟 需自行计算
东财 Skills 需要 :white_check_mark: :white_check_mark: 需自行计算

最终选了 AKShare——免费、无需注册、覆盖最全

:camera_with_flash: 截图:SOLO 输出的数据源对比分析

第三步:翻车了(当然要翻车)

开发过程不是一帆风顺的。SOLO 遇到了两个大坑:

坑 1:AKShare 的 API 参数名变了

SOLO 写完代码后调用评级接口,直接报错:stock_institute_recommend_detail() got an unexpected keyword argument 'stock'

原因是 AKShare 新版本把参数名从 stock 改成了 symbol,但网上大部分教程和文档还是旧的。

SOLO 的处理方式让我印象深刻:它没有瞎猜,而是直接用 Python 反射检查了函数签名,发现正确参数是 symbol,然后自动修复了所有调用点。

:camera_with_flash: 截图:SOLO 发现参数名变更并修复的对话

坑 2:NaN 值导致 JSON 序列化崩溃

AKShare 返回的评级数据里,很多目标价是空的(NaN)。直接转 JSON 会报错:ValueError: Out of range float values are not JSON compliant

SOLO 的解决方案很优雅——写了一个递归清理函数 clean_nan(),配合自定义的 SafeJSONResponse 类,在框架层面统一处理,所有接口自动生效,不用每个 API 单独处理。

def clean_nan(obj):
    if isinstance(obj, float):
        if math.isnan(obj) or math.isinf(obj):
            return None
    ...

这两个坑如果是我自己处理,可能要卡一整天。SOLO 用了大概 2 分钟就搞定了。

第四步:技术指标——没有现成的就自己算

没有任何免费数据源直接提供计算好的 MACD/RSI/KDJ。SOLO 的做法是:先用 AKShare 拉取 K 线数据,然后用 pandas 从零实现了所有技术指标的计算。

比如 MACD:

ema12 = close.ewm(span=12, adjust=False).mean()
ema26 = close.ewm(span=26, adjust=False).mean()
dif = ema12 - ema26
dea = dif.ewm(span=9, adjust=False).mean()

而且不只是算出来,还自动判断了金叉/死叉信号

DIF 上穿 DEA → 金叉 :green_circle:
DIF 下穿 DEA → 死叉 :red_circle:

第五步:截图识别——一个我没想到的功能

SOLO 主动帮我加了 OCR 截图识别功能。什么意思呢?

比如你在群里看到别人分享的一张持仓截图,上面有好多股票代码和名称。以前你要一个一个手动搜索添加,现在直接截图上传,OCR 自动识别出所有股票,勾选一下就能批量加到自选股

用的是 Tesseract 开源 OCR 引擎,支持中文识别,完全本地运行,不用调任何付费 API。

:camera_with_flash: 截图:截图识别功能的实际使用效果

成果展示

先看数据:平安银行的完整画像

一键刷新后,平安银行(000001)的所有信息汇总如下:

机构评级:636 条评级记录

  • 买入 509 家 | 增持 119 家 | 中性 7 家
  • 平均目标价:15.71 元

技术指标

指标 数值 信号
MACD DIF=0.104, DEA=0.059 :green_circle: 多头
RSI 68.18 :white_circle: 中性
KDJ K=73.15, D=58.34, J=102.79 :green_circle: 多头
布林带 上轨=11.51, 下轨=10.83 :white_circle: 中轨附近
均线 MA5 > MA10 > MA20 > MA60 :green_circle: 多头排列

以前我要打开 3 个 App、点 20+ 下才能看到的信息,现在点一下刷新,30 秒全部出来。

:camera_with_flash: 截图 1:自选股列表主界面(显示所有持仓的行情+评级+技术信号,一目了然)

:camera_with_flash: 截图 2:股票详情弹窗(实时行情 + 机构评级表格 + 技术指标面板)

:camera_with_flash: 截图 3:市场主线板块(技术指标解析,追踪市场热点)

项目技术栈

选型 为什么
前端 React + TypeScript + Ant Design 组件丰富,表格/卡片开箱即用
后端 FastAPI (Python) 原生支持 AKShare,异步高性能
数据 AKShare 免费、无需注册、覆盖东财/新浪
存储 SQLite 轻量零配置,自选股本地持久化
OCR Tesseract 开源免费,中文识别,本地运行

14 个 API 端点

接口 功能
GET /api/stocks/search 股票搜索自动补全
GET /api/watchlist 获取自选股列表
POST /api/watchlist 添加到自选股
DELETE /api/watchlist/{code} 删除自选股
GET /api/stocks/quote/{code} 单只股票实时行情
GET /api/stocks/rating/{code} 个股机构评级详情
GET /api/stocks/technical/{code} 技术指标(MACD/RSI/KDJ/布林带/均线)
GET /api/market/sectors 市场板块行情
POST /api/ocr/recognize 截图 OCR 识别
GET /api/watchlist/refresh :star: 一键刷新所有数据
还有 4 个辅助接口

启动方式

# 后端
cd backend && pip install -r requirements.txt && python3 main.py

# 前端
cd frontend && npm install && npm run dev

# 访问 http://localhost:3000

效果与总结

提效数据

之前 现在 提升
查 5 只股票的评级+指标 切 3 个 App,15-20 分钟 一键刷新,30 秒
添加自选股 手动搜索输入 截图 OCR 批量识别
判断技术信号 打开行情软件逐个看 自动显示金叉/死叉
追踪市场主线 分别查概念/行业板块 一个 Tab 同时展示

SOLO 在这个项目里做了什么

说实话,如果让我自己来做这件事,流程大概是:

  1. 先花 2 天学 Python 基础 :cross_mark:
  2. 再花 1 天学 FastAPI :cross_mark:
  3. 花 3 天研究 AKShare 文档 :cross_mark:
  4. 花 2 天写后端 :cross_mark:
  5. 花 3 天学前端 :cross_mark:
  6. 花 2 天联调 :cross_mark:
  7. 放弃 :cross_mark:

SOLO 把这个过程压缩到了 30 分钟。

它不只是写代码,它在帮我想产品:

  • 我没想到要加技术指标 → 它主动加了
  • 我没想到要做截图识别 → 它主动加了
  • 我没想到要看市场主线 → 它主动加了
  • AKShare 参数名变了 → 它自己发现并修复了
  • NaN 导致 JSON 崩溃 → 它自己设计了解决方案

这不是一个代码生成工具,这是一个能帮你思考的搭档。

一个散户的感悟

做投资最重要的两件事:信息纪律

这个工具帮我解决了信息的问题——所有关键数据一个页面看完,不用再东奔西跑。至于纪律……那就是另一个故事了 :joy:

但至少现在,我每天早上多出了 15 分钟。可以多睡一会儿,也可以多研究一下盘面。

感谢 SOLO,让一个不会写代码的散户,也能拥有自己的量化工具。

1 个赞