ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Go+Vue3构建AI股票分析桌面工具:Wails与NaiveUI实践

Go+Vue3构建AI股票分析桌面工具:Wails与NaiveUI实践 简介这是一套面向金融领域开发者与量化爱好者的技术实践项目基于Go语言构建本地化AI股票分析工具解决自选股监控、盈亏计算、行情预警及情绪与技术指标分析等实际需求。资源包共94个文件涵盖25个Go核心逻辑文件、15张UI图标与截图、8个配置与数据JSON、6份构建脚本sh、6篇说明文档md以及Vue/TypeScript前端组件、Wails框架配置与跨平台构建文件整体压缩后仅2.97MB结构清晰便于快速部署与二次开发。已有392人学习下载适合具备Go基础并关注AI金融交叉应用的中高级开发者。读者可直接运行完整桌面应用获取本地化数据处理流程、多LLM平台DeepSeek/OpenAI/Ollama等接入范式、WailsNaiveUI前端集成方案以及K线分析模块与情绪识别模型调用的实际工程实现。 做股票分析工具这几年我一直在折腾一件事怎么让数据分析和AI能力不依赖浏览器、不依赖那一堆前端工程化框架打包出来还能小而快。直到我遇到 Wails 和 NaiveUI 的组合用 Go 写后端、用 Vue 3 写界面再接入大模型做语义分析——这个思路直接催生了 go-stock 这个项目。今天就把整个项目的设计思路、技术选型、AI 集成方案和踩坑记录完整拆出来给想做桌面端工具或者想接入 AI 能力的朋友一个可复用的参考。先说这个项目能做什么它把行情数据获取、技术指标计算、图表可视化、AI 文本分析整合到一个跨平台桌面应用里。你打开软件就能看到 K 线和指标选中一段行情区域AI 可以基于上下文帮你解读趋势、梳理关键价位、生成分析报告。它适合三类人一是自己平时做股票数据研究、嫌网页端来回切换烦的个人投资者二是想学习 Wails 前端框架做桌面应用开发的 Go 开发者三是对在桌面应用里集成大模型能力感兴趣、想找现成架构参考的技术爱好者。1. 项目解决的核心问题与整体设计思路1.1 为什么桌面端比网页端更适合做股票分析工具很多人第一反应是股票分析工具网页端不是一大把吗为什么非要自己做个桌面应用我自己的使用体验是网页端有几个绕不开的痛点。第一是上下文断裂你在网页上看行情切出去查资料再回来页面刷新之前勾选的股票池、画的辅助线全没了。第二是本地文件与数据的隔离如果你想把自己导出的交易记录、自建的指标参数直接喂给工具做分析网页端出于安全策略往往不让你方便地读本地文件。第三是资源占用的问题一个行情页面上挂几十个 websocket再叠加各种可视化脚本浏览器标签页的内存占用经常飙到 1GB 以上。go-stock 用桌面端这种方式把数据链路、状态、AI 分析能力全部收拢在本地进程中。你可以把行情数据落到本地 SQLite把自选股、分析历史全部存在自己的机器上AI 分析时涉及敏感数据也都在本地处理或按需脱敏后发送到模型服务。这种“数据主权在自己手里”的感觉是网页端给不了的。1.2 整体架构数据层、分析层与AI层的职责划分整个项目在架构上分成三个层次这是我最先确定下来的基石。数据层负责对接行情数据源做定时拉取、增量更新、本地缓存分析层负责技术指标计算MA、MACD、RSI、KDJ 等、K 线序列切片、形态特征的量化提取AI 层负责把指标数据和行情切片转换成自然语言提示词调用大模型接口生成解读与报告再把结果通过前端呈现。这三层之间通过 Wails 的绑定方法衔接。简单说前端 NaiveUI 渲染的页面直接调用 Go 暴露的方法Go 方法内部再去数据层拿数据、到分析层算指标、去 AI 层做推理。整个过程对前端来说是同步的函数调用写起来非常顺手。这个架构的好处是每一层都能独立测试比如我先用命令行把数据层的拉取和缓存逻辑跑通再单独验证指标计算最后才接 UI。2. 技术选型解析Wails、NaiveUI 与 Go 的配合逻辑2.1 Wails 和 Electron/Tauri 的取舍我为什么选它做桌面应用绕不开的先决问题是用什么框架。Electron 生态成熟但打包体积动辄 150MB 起步内存占用也很离谱Tauri 用系统 WebView体积小很多但后端是 Rust对我这种主写 Go 的人来说学习成本有点高。Wails 恰好填了这个空档后端用 Go编译成单个可执行文件前端还是 HTML/JS/CSS 那套Windows 和 macOS 都能跑。实际体验下来Wails 的wails dev模式对开发效率的提升非常明显。你改 Go 代码它会自动重新编译并热重启改前端代码走 Vite 的热更新几乎秒级生效。还有一点很关键Wails 的 bind 机制几乎是无痛的Go 结构体的导出方法会被自动映射到前端 window.go 对象上TypeScript 类型也能同步生成。这意味着我可以在前端写await window.go.api.Stock.GetKline(code)这种调用既有类型提示又不用像 Electron 那样维护一套 IPC 通信协议。2.2 NaiveUI 在数据密集型界面中的优势选 NaiveUI 不是因为它的组件多而是因为它在数据密集型场景下的表现比很多 UI 库更贴合需求。股票分析界面有大量表格、图表、标签页、参数表单NaiveUI 的数据表格组件支持虚拟滚动、列固定、自定义渲染渲染几千行 tick 数据也不卡。它的主题系统走 TypeScript 定义配合 Wails 的暗色界面需求非常方便切换暗色亮色只需要一行配置。另外一个很实际的原因NaiveUI 对 Tree-shaking 支持得很好。按需引入组件和函数打包后的 JS 体积能控制住之前我用某知名 UI 库打包出来光是 JS 就 1.2MB换成 NaiveUI 之后降到 300KB 左右。对桌面应用的启动速度来说这个差距是体感级别的。2.3 Go 负责计算与数据前端只做渲染这种分工方式对股票分析场景特别合适。Go 处理行情数据的解析和指标运算性能比 Node.js 和浏览器里的 JavaScript 高不少。比如我要算一个全市场股票的 MACDGo 遍历几万根 K 线也就几十毫秒如果在前端用 TypeScript 算数据量一大就会让界面掉帧。Wails 的绑定调用是同步接口前端拿到的直接是计算完的结果不需要在主线程与渲染进程之间反复传数据减少了数据拷贝和序列化开销。我在项目里也做了一些调整把高频变动的数据比如分时 tick通过 Wails 的事件机制推送给前端而不是让前端轮询。低频率的数据日 K 线、指标参数直接走绑定方法获取。这种“事件推送 方法调用”混合模式在桌面端用起来非常流畅。3. AI 赋能设计从指标数据到自然语言分析的落地路径3.1 AI 在股票分析中的定位辅助解读而非预测做这个功能之前我很确定一件事不要把 AI 包装成可以预测涨跌的工具那不现实也容易误导人。go-stock 里的 AI 定位是“结构化数据的转译器”——它把一堆冰冷的指标数字和图形形态转成人话版的趋势描述、风险提示和关注点梳理。换句话说你选中一段行情区域点击“AI 分析”它告诉你这段区间里均线怎么排列、成交量有什么特征、MACD 是否出现背离以及这些形态组合在历史中通常意味着什么。这个定位的好处是AI 的输出结果不容易被证伪因为它是基于客观数据的描述而不是对未来走势的断言。实际使用中它更多扮演“复盘秘书”的角色。用户可以快速理解一个陌生股票的技术形态减少翻书查概念的时间。配合自己维护的笔记和标签体系时间久了就能形成一套个人分析框架。3.2 提示词工程把行情切片转换成模型能理解的结构化描述把 K 线数据直接塞给大模型是不现实的Token 消耗大且模型对长数字序列不敏感。我的做法是在 Go 层做一次“特征提取”生成结构化的文本描述再交给模型。这个结构化描述包括几块内容基础信息股票代码、名称、当前价格、区间涨跌幅、区间最高最低价。均线系统MA5 / MA10 / MA20 / MA60 的数值和排列状态多头、空头、纠缠。成交量特征区间平均成交量、放量缩量情况、量价配合关系。技术指标状态MACD 金叉死叉位置、RSI 是否超买超卖、KDJ 的 J 值位置。形态统计区间内出现的显著高低点数量、是否存在跳空缺口。比如提取出来的信息是“MA510.25MA1010.18MA209.96均线呈多头排列MACD 在零轴上方金叉RSI62.5”AI 收到这段文本后输出的分析就不会是空泛的套话而是有具体数字支撑的判断。我在实际调参中发现把数值和判断条件写在一起比如“RSI 处于 60 到 70 区间通常意味着强势但可能有回调需求”模型输出的质量会明显高于只给数字。3.3 模型接入与降级策略本地模型优先云端为辅AI 能力不能做成“没有网络就罢工”的功能。go-stock 设计了多级模型源默认优先尝试本地模型通过 Ollama 启动的量化版本比如 qwen2.5:7b 或 llama3.1:8b本地不可用时自动切换云端 API。这样做的好处很明显本地跑的时候数据不出机器隐私性最强而遇到本地模型对复杂任务理解力不够的情况用户可以手动切换成云端的大模型获得更强的推理能力。这个降级策略的实现在 Go 层就是一个接口抽象。我定义了一个Analyzer接口分别实现LocalAnalyzer和CloudAnalyzer再加一个FallbackAnalyzer做优先级管理。前端配置页面选择模型源后端根据配置按顺序尝试。这种设计是通用的不只适用于股票分析任何桌面工具做 AI 集成都可以参考。3.4 分析报告模板化稳定输出结构提升可读性如果你让 AI 自由发挥很容易生成一篇千篇一律的八股文或者格式忽长忽短。go-stock 的做法是在提示词里强制指定输出结构要求用四个固定小节趋势研判、量价关系、指标信号、风险提示。每个小节限 3 到 5 句话。这样输出结果稳定界面展示也统一用户扫一眼就能找到自己关心的部分。实测下来用固定模板还有一个额外的好处模型很少再输出无关的免责声明和重复的话Tokens 更集中。我还在模板里加了一句“不要输出一般性投资建议只描述数据呈现的特征和常规技术分析含义”这句话在很大程度上减少了模型生成“股市有风险投资需谨慎”这类对分析没有实际价值的空话。4. 核心模块拆解与实操细节4.1 行情数据模块多数据源适配与本地缓存策略行情数据是整个项目的地基。go-stock 的行情数据模块做了两层设计。第一层是数据源接口抽象出DataSource接口目前实现了两个数据源一个是免费的公开行情接口适合 A 股和港股的日 K 线、实时报价另一个是本地 CSV 导入适合用户把自己整理的交易数据或外部导出的历史数据放进系统。接口设计上预留了扩展位后续如果要接入付费行情源只写一个新的实现结构体就行。第二层是缓存策略。每次请求实时行情都直接调外部接口没有意义而且容易触发限流。我在本地用 SQLite 做缓存K 线数据按股票代码 周期 日期做唯一索引增量更新时只拉取最近缺失的区间。比如系统里已经缓存了某只股票过去 500 根日 K再次启动时只请求最新几根补全。实测下来大量股票首次同步之后后续启动几乎秒开不再需要等待网络请求。代码结构大致是这样type Kline struct { Code string json:code Period string json:period Timestamp int64 json:timestamp Open float64 json:open High float64 json:high Low float64 json:low Close float64 json:close Volume int64 json:volume } type DataSource interface { FetchKline(code string, period string, start, end int64) ([]Kline, error) FetchQuote(code string) (Quote, error) }4.2 技术指标计算基于标准算法实现的指标库技术指标这部分我的原则是绝不重复造轮子但也不能盲信别人封装的库。go-stock 里的指标库主要参考了 TA-Lib 的算法定义用纯 Go 实现。目前完成了 MA、EMA、MACD、RSI、KDJ、BOLL、ATR 这七个常用指标基本覆盖了大多数人的日常分析需求。这里有一个非常容易踩的坑RSI 和 MACD 这类递归指标的初始值处理。不同软件对前几个周期的计算方式不一致导致相同数据在不同软件里画出来的线有细微差别。我的解决办法是在指标库内部统一使用“前 N 个周期数据充足后才开始输出有效值”的策略并且在 UI 上标注“指标预热期”。这样即使和同花顺或者通达信的数值有偏差用户也知道是什么原因不会以为程序算错了。还有一个细节值得注意指标计算一定要在 Go 层完成不要在 JavaScript 里做大数据量的循环运算。我一开始图省事在前端用 TypeScript 写了套 EMA 计算日 K 数据量小的时候没感觉换成分钟线数据后界面明显卡顿。把计算搬到 Go 层后同样的数据量计算耗时从几百毫秒降到了十几毫秒。4.3 图表渲染ECharts 和 NaiveUI 的组合实践K 线图用的 ECharts这是前端图表库里的老牌选手。ECharts 的 candlestick 系列直接支持 K 线展示dataZoom 组件能实现拖拽缩放dataZoom 事件和 Wails 的 Go 方法做联动时也很方便。我用 ECharts 主要是因为它内置的 tooltip 和 dataZoom 交互足够成熟不用自己造轮子。图表的选区和 AI 分析的联动是 go-stock 里比较有特点的功能。用户在 ECharts 上通过 dataZoom 划出一个区间前端拿到起始时间和结束时间调用 Go 方法传入这两个时间戳Go 在本地索引出对应 K 线切片再交给 AI 分析层。整个过程一气呵成没有任何冗余的中间步骤。图表部分在暗色模式下需要注意 ECharts 的背景色配置默认的白色背景在暗色主题下会很刺眼。我的做法是监听 NaiveUI 的主题变化事件动态更新 ECharts 的 backgroundColor 和 textStyle 颜色。这个逻辑并不复杂但如果不处理切换主题后图表区域会一直保持白色影响整体观感。4.4 AI 服务模块上下文组装、调用与结果流式返回AI 服务模块的核心逻辑是“组装上下文”。因为大模型没有实时数据所有关于行情的信息必须由程序提供。go-stock 固定了一套上下文格式股票基本资料、区间 K 线统计、指标特征描述、用户自定义的关注点。组装成 markdown 文本后拼接在系统提示词后面控制总长度在 1500 Token 左右为输出留足空间。流式返回这个细节我必须提一下。如果 AI 分析结果一次性返回遇到长报告会让人等得急躁。我通过 Wails 的事件机制把模型输出的内容片段实时推送给前端前端一行一行渲染体验上非常接近 ChatGPT 的打字机效果。实现上Go 层调用 SDK 时开启 Stream 模式每收到一个增量块就通过runtime.EventsEmit推给前端前端监听对应事件追加显示。整个过程代码量不大但体验提升非常明显。这里给出一个简化版的流式调用伪代码func (a *Analyzer) StreamAnalyze(params AnalyzeParams) error { stream, err : a.client.CreateChatCompletionStream(ctx, req) if err ! nil { return err } defer stream.Close() for { resp, err : stream.Recv() if errors.Is(err, io.EOF) { break } if err ! nil { return err } delta : resp.Choices[0].Delta.Content runtime.EventsEmit(a.ctx, ai:stream-delta, delta) } runtime.EventsEmit(a.ctx, ai:stream-done, nil) return nil }4.5 自选股与报告管理SQLite 本地持久化自选股列表、AI 分析历史、用户在报告里添加的自定义笔记这些数据都存本地 SQLite。Wails 的 Go 后端内置了 SQLite 驱动我用的是modernc.org/sqlite它是纯 Go 实现不需要 CGO交叉编译时少了很多麻烦。数据库文件放在用户数据目录下wails的runtime包提供了获取用户配置目录的方法。表结构上做了一个比较简单的设计stocks表存自选股基本信息analysis_history表存每一次 AI 分析的输入参数和输出结果notes表存用户在报告上的批注。历史报告支持按日期和股票代码检索这样用户可以回溯“我在 3 月 5 号对某只股票做过什么判断”形成一个轻量级的复盘档案。这个设计一旦形成习惯对自己的交易复盘帮助非常大。5. 实操过程从零搭建 go-stock 的完整步骤5.1 初始化 Wails 项目与目录结构规划搭建项目的第一步是确保本机安装了 Go 1.21 和 Node.js 18然后安装 Wails CLIgo install github.com/wailsapp/wails/v2/cmd/wailslatest wails init -n go-stock -t vue-ts这个命令会生成一个 Vue 3 TypeScript 的前端模板和 Go 后端骨架。-t vue-ts指定使用 TypeScriptWails 会自动生成前端调用 Go 方法的类型声明文件这个一定要保留后面写前端代码时非常依赖。初始化完成后我做的第一件事是调整目录结构。默认生成的项目把所有 Go 文件都放在根目录下我把它重新组织成backend/data、backend/indicator、backend/ai、backend/service、backend/db几个包。这样每个模块的边界清晰以后加功能或者写测试都方便。5.2 前端接入 NaiveUI 与主题配置安装 NaiveUI 和图标库npm install naive-ui vicons/ionicons5Wails 默认生成的模板没有 UI 库需要自己集成。在main.ts里全局引入import { createApp } from vue import App from ./App.vue const app createApp(App) app.mount(#app)NaiveUI 的高级组件比如NDataTable、NConfigProvider需要依赖主题上下文。我的做法是在根组件包一层NConfigProvider根据用户偏好切换暗色亮色主题n-config-provider :themetheme n-message-provider router-view / /n-message-provider /n-config-provider主题切换直接调用 NaiveUI 的darkTheme和dateZhCN配置代码量不大但能把整个应用的视觉风格统一起来。5.3 Go 后端绑定方法的设计与实现Wails 的运行机制里前端调用 Go 方法是通过 bind 实现的。在main.go里我们需要把要暴露给前端的实例传给wails.Appfunc main() { db, _ : db.InitDB() stockService : service.NewStockService(db) indicatorService : service.NewIndicatorService() aiService : service.NewAIService() app : App{ Stock: stockService, Indicator: indicatorService, AI: aiService, } err : wails.Run(options.App{ Title: go-stock, Width: 1400, Height: 900, Bind: []interface{}{ app, }, }) if err ! nil { log.Fatal(err) } }有一个重要的经验不要把所有方法堆在一个巨大的 App 结构体里。拆成独立的 Service 结构体每个 Service 只暴露某一领域的方法前端调用时按照window.go.service.Stock.GetKline()的方式组织代码可读性会高很多。Wails 会自动把Stock结构体映射到前端对象树里你甚至可以按命名空间组织前端 API。5.4 AI 分析功能的完整调用链示例AI 分析的完整调用链是 go-stock 里最有代表性的流程。前端用户点击“分析”按钮调用window.go.service.AI.Analyze(code, startTs, endTs)后端执行几步从 SQLite 读取该股票在时间区间内的 K 线数据。调用指标服务计算 MA、MACD、RSI 等指标的区间统计值。把这些数值组装成结构化文本描述。根据配置决定调用本地 Ollama 还是云端 API。以流式方式返回结果前端逐字渲染。前端代码如下async function runAnalysis() { const code selectedStock.value const [start, end] getZoomRange() await window.go.service.AI.Analyze(code, start, end) }流式返回的监听部分window.runtime.EventsOn(ai:stream-delta, (delta: string) { analysisContent.value delta }) window.runtime.EventsOn(ai:stream-done, () { saveHistory() })5.5 打包发布跨平台构建与体积控制打包发布这一步Wails 做得比我想象中省心。执行wails build就能生成对应平台的二进制文件。交叉编译时需要注意如果涉及 CGO比如某些 SQLite 驱动目标平台需要有对应的交叉编译工具链。我的项目用的modernc.org/sqlite是纯 Go 驱动所以 Windows 下交叉编译 macOS 版本也没有遇到 CGO 的坑。打包体积上我的实际数据是Windows 版本约 18MBmacOS 版本约 22MB这个体量在桌面应用里算是非常轻量了。如果需要进一步压缩可以配合 UPX 给可执行文件瘦身我试过能压到 12MB 左右代价是启动时间略有增加。发布时还有一个细节把图标文件放在build/appicon.png的位置Wails 会自动嵌入到程序资源里。没有图标的话生成的 exe 会显示为默认的灰色图标看起来很不专业所以发布前的图标设计值得花点心思。6. 常见问题与排查技巧实录6.1 前端调用 Go 方法报错方法未找到或绑定失败这个问题我在开发初期遇到了很多次。最常见的原因是Go 结构体里的方法没有导出Go 要求方法名首字母大写或者结构体实例没有传入Bind数组。还有一个容易被忽略的点前端生成的类型声明文件是旧的需要重新运行wails dev让 Wails 重新生成。排查建议是在浏览器开发者工具的控制台里输入window.go展开查看绑定的对象结构。如果看到undefined或缺少某些方法就去检查 Go 侧是否正确导出。这个技巧特别实用比反复看日志高效得多。6.2 Wails 开发模式下热更新失效wails dev模式下前端代码改动一般会触发 Vite 的热更新但如果同时改了 Go 代码Wails 会重新编译整个应用。在 Windows 上偶尔会遇到编译完成后热更新没有生效的情况。我遇到的原因通常是杀毒软件锁定了 exe 文件导致 Wails 无法重新启动新的进程。解决方法是把项目的编译输出目录加入杀毒软件的白名单。还有一个容易被忽略的点wails dev默认监听的端口可能被占用。如果遇到前端一直连不上开发服务器先看 34115 端口是否被其他进程占用了。改成wails dev -port 34567这类自定义端口就能绕过。6.3 本地模型返回慢或无响应时的处理本地模型通过 Ollama 调用时如果返回速度很慢通常有三个原因。一是模型参数过大机器内存或显存不足推荐使用 7B 或 8B 量化版本二是 Ollama 并行加载了多个模型内存竞争严重可以通过ollama ps查看当前加载的模型用ollama stop清理不需要的模型三是网络代理设置影响了本地回环地址的访问这种问题比较隐蔽。排查这类问题的思路是先用curl http://localhost:11434/api/generate单独测试 Ollama 是否能正常响应再确认 Go 代码中的连接配置。如果 Ollama 正常而 go-stock 仍无响应多半是 SDK 或网络配置的问题检查环境变量里的代理设置即可。6.4 指标数据与行情软件存在细微偏差前面提过指标初始值的处理方式会导致不同软件的显示差异。go-stock 的处理策略是在指标计算时统一预热期而行情软件通常从第一条数据开始计算。如果想要完全对齐某个行情软件可以研究一下它的具体算法实现比如 MACD 的 EMA 周期从第几天开始计算然后在指标库中做对应的偏移处理。不过从实用角度讲差异在 1% 以内通常不影响判断不必过度追求一致。实际开发中建议在指标计算模块里加一个“样本数据集”测试函数用已知结果的少量 K 线数据验证计算逻辑是否正确。这个测试函数对后续增加新指标或修改算法非常有帮助可以避免指标升级后引入诡异的新误差。6.5 打包后 AI 功能无法调用本地模型开发模式下本地模型调用正常打包后失效这个问题在我的项目里出现过一次。原因很直接打包后的程序找不到ollama命令路径。解决方案是在 Go 代码里不要直接依赖PATH环境变量中的ollama而是通过拼接用户主目录下的ollama可执行文件路径来调用或者调用 Ollama 的 HTTP APIlocalhost:11434这种方式不依赖外部命令最稳定。从这之后我归纳了一个固定原则桌面应用里的任何外部依赖都要优先考虑 HTTP 接口而不是命令行调用。命令行调用对环境的要求太多很容易在前端打包场景下踩坑。6.6 常见问题速查表现象可能原因解决思路前端调用 Go 方法返回 undefined方法未导出或未绑定检查方法名首字母大小写和 Bind 数组dev 模式改动 Go 代码后不重启杀毒软件锁文件 / 端口被占用加白名单 / 修改端口本地 AI 模型响应慢模型过大或内存竞争换 7B 量化模型 / 清理已加载模型MACD 和行情软件显示不一致初始值计算策略不同调整预热期 / 忽略 1% 内偏差打包后本地模型不可用依赖 PATH 中的命令调用 Ollama HTTP API图表暗色模式背景刺眼ECharts 未跟随主题监听主题变化动态更新配置7. 后续可以怎么扩展这个项目做到现在我还没打算停在一个“能用的股票分析工具”这个程度。后续有几个方向值得继续投入。第一是增加更多的技术指标和形态识别比如缠论中的笔和线段、斐波那契回调位自动绘制这些都需要扎实的算法实现工程量不小但价值很高。第二是引入事件驱动的实时行情推送目前 go-stock 的行情更新是手动刷新后续计划通过 WebSocket 接收实时 tick 数据让 AI 分析也能基于最新行情触发。第三是支持自定义 AI 提示词模板让用户可以把自己多年总结的分析方法写成模板与系统自带的提示词做叠加这样 AI 输出会更贴合个人风格。另外我最近在实验把多只股票的指标特征拼接成一个长上下文让 AI 做组合对比分析。比如用户选中一个板块里的五只股票AI 可以对比它们的估值、均线结构、资金流向特征生成一张对比表。这种组合分析比单只股票分析更有参考价值也是网页端工具很难提供的体验。在桌面端做数据分析和 AI 集成这条路我目前的感受是工具的价值不在于功能堆得有多高而在于它能否真正嵌入你的工作流程让你用更短的路径完成思考。go-stock 现在的状态离“最顺手的分析工具”还有距离但架构和核心里程碑已经跑通。后续的每一次更新都是在往这个方向靠近。本文还有配套的精品资源点击获取
返回列表