Skip to content

About

基于 Rust 的 A 股与港股本地桌面研究、条件选股和 AI 辅助工具

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

StockChoosing 智选股

Important

本项目回测效果不尽人意,已停止维护。有实力的大佬可以发扬光大。

当前版本:0.2.4

StockChoosing 是一款基于 Rust + Tao/Wry + HTML/CSS/JavaScript 构建的本地桌面股票研究工具,面向 A 股与港股的行情查看、自选股管理、K 线分析、条件选股和 AI 研究辅助场景。

本项目仅用于行情展示与研究辅助,不构成任何投资建议,也不承诺收益。

功能概览

  • 行情工作台

    • 查询 A 股、港股代码
    • 展示现价、涨跌幅、开盘、最高、最低、昨收、成交量、成交额、换手率等信息
    • 查看日 K / 周 K / 月 K
    • 支持前复权与不复权 K 线
    • Canvas 绘制 K 线、成交量与鼠标悬浮提示
  • 自选股管理

    • 添加、移除、刷新自选股
    • 自动轮询刷新市场与自选股数据
    • 默认展示常用指数与关注股票池
  • 选股工具

    • 支持导入 Excel 股票池
    • 内置可导出的选股模板
    • 支持换手率、市值、板块、概念、行业等条件筛选
    • 支持均线多头、MACD 日线金叉、KDJ 日线金叉等技术条件
    • 支持单股诊断、保存筛选结果、导出诊断结果、导入/导出筛选方案
  • AI 研究助手

    • 支持 OpenAI-compatible API
    • 可保存 Base URL、模型名和 API Key
    • 支持把当前股票加入研究上下文
    • 支持「分析当前股票」「今日关注」「多股对比」「候选池诊断」「观察计划」任务
    • 任务运行时显示规划、收集数据、分析和完成等进度
    • 支持候选卡片展示理由、来源与观察条件,并可打开行情、加入自选或加入对比
    • 支持多股票横向对比、走势分析、风险提示与观察条件总结
  • 本地桌面体验

    • 基于 Wry 内嵌 WebView
    • 支持明亮 / 深色主题
    • UI 资源从本地 ui/ 目录加载
    • 配置保存在用户目录 %LOCALAPPDATA%\\StockChoosing\\stockchoosing.toml,避免安装目录无权限导致保存失败

技术栈

模块 技术
桌面窗口 tao, wry
后端逻辑 Rust
前端界面 HTML, CSS, JavaScript
HTTP 请求 reqwest
配置与序列化 serde, serde_json, toml
Excel 导入导出 calamine, rust_xlsxwriter
AI Agent rig-core + OpenAI-compatible API
异步/任务 tokio, futures, 标准线程

环境要求

  • Rust 1.75+ 推荐
  • Windows / macOS / Linux
  • Windows 环境建议安装 Microsoft Edge WebView2 Runtime
  • 如需 AI 助手功能,需要可用的 OpenAI-compatible API Key

快速开始

# 进入项目目录
cd C:\Users\30109\Desktop\StockChoosing

# 运行桌面应用
cargo run

运行后会打开桌面窗口,默认加载配置中的股票和市场指数。

测试

cargo test

构建发布版本

cargo build --release

生成的可执行文件位于:

target/release/StockChoosing.exe

发布时请确保可执行文件旁边包含以下资源:

ui/
templates/
docs/
stockchoosing.toml

仓库中已有 release/ 目录,可作为 Windows 发布包示例参考。

构建 Windows 安装包

安装包使用 Inno Setup 生成。Windows 环境下可运行:

.\scripts\build-installer.ps1

脚本会执行 release 构建、复制运行资源到 release/StockChoosing-win-x64/,并在 dist/ 下生成安装程序:

dist/StockChoosing-Setup-0.2.4-win-x64.exe

如已手动完成 release 构建或资源复制,可使用脚本参数跳过对应步骤:

.\scripts\build-installer.ps1 -SkipCargoBuild
.\scripts\build-installer.ps1 -SkipReleaseCopy

配置说明

安装版会优先读取用户目录 %LOCALAPPDATA%\\StockChoosing\\stockchoosing.toml,开发环境也可读取项目根目录下的 stockchoosing.toml 作为初始模板。

示例:

default_symbol = "sh600519"
kline_limit = 120
poll_interval_secs = 15

indices = ["sh000001", "sz399001", "sz399006"]
watchlist = ["sh600519", "hk00700", "sz300750", "sz002594", "sz000001", "sh600036"]

[ai]
base_url = "https://api.example.com/v1"
model = "gpt-5.5"
api_key = ""
temperature = 0.2

[screener]
default_scheme = "默认方案"
recent_file = ""
online_enrichment = true
cache_ttl_secs = 3600
export_dir = ""

常用配置项

配置项 说明
default_symbol 启动后默认展示的股票代码
kline_limit K 线加载条数
poll_interval_secs 自动刷新间隔,单位秒
indices 首页展示的市场指数
watchlist 默认自选股列表
ai.base_url OpenAI-compatible API 地址
ai.model AI 模型名
ai.api_key API Key,可在应用内保存
screener.default_scheme 默认选股方案名称
screener.recent_file 最近导入的 Excel 文件路径
screener.export_dir 结果导出目录,留空则由应用选择

股票代码格式

支持多种常见输入格式:

市场 示例
A 股上海 600519, sh600519, 600519.SH
A 股深圳 000001, sz000001, 000001.SZ
港股 700, 00700, hk00700

系统会自动标准化为内部代码格式,例如:

  • 600519 -> sh600519
  • 000001.SZ -> sz000001
  • 700 -> hk00700

选股工具使用方法

  1. 打开应用左侧「选股」。
  2. 点击「导出模板」,保存 StockChoosing_选股导入模板.xlsx。
  3. 在模板第一个工作表「股票数据模板」中填写股票池。
  4. 回到应用,点击「选择」或直接填写 Excel 路径后点击「导入 Excel」。
  5. 如需补充实时行情与技术指标,点击「载入当前股票与自选股」。
  6. 设置换手率、市值、板块/概念/行业、技术条件等筛选项。
  7. 点击「开始分析」查看通过股票与未通过原因。
  8. 输入单只股票代码后点击「诊断」,可查看该股票逐项诊断结果。
  9. 使用「保存结果」「导出诊断」「导入方案」「导出方案」完成结果管理。

更多说明见:

docs/选股工具使用教程.md

内置模板位于:

templates/StockChoosing_选股导入模板.xlsx

Excel 模板填写规则

  • 股票代码 为必填列,可使用 600519、sh600519、000001.SZ、hk00700、700 等格式。
  • 股票名称 可选,留空时会用股票代码显示。
  • 数值支持普通数字、百分比和中文单位,例如 2.5、12.3%、50亿、3200万。
  • 是否类字段支持 是/否、true/false、1/0。
  • 板块、概念、行业支持多个标签,可用逗号、顿号、斜杠或分号分隔。
  • 空白字段可以导入;如果启用了对应筛选条件,系统会在结果中提示“未补全”。

AI 研究助手配置

进入「研究助手」页面后:

  1. 展开「AI 设置」。
  2. 填写 API Key、Base URL 和模型名。
  3. 点击「保存设置」。
  4. 在行情页选择股票后点击「加入研究助手」,或在助手页点击「加入当前股票」。
  5. 输入问题,或使用快捷任务进行走势分析、今日关注、多股对比、候选池诊断和观察计划。

研究助手会先在本地收集当前股票、上下文股票、自选股、筛选结果、新闻线索与行情 K 线,再调用模型生成结论。任务面板会显示当前阶段;候选卡片可直接打开行情、加入自选或加入对比上下文。

AI 接口要求兼容 OpenAI API 格式。

数据来源

  • 行情与 K 线:腾讯公开行情接口
  • AI 分析:用户配置的 OpenAI-compatible 服务
  • Excel 数据:用户本地导入文件

更新记录

0.2.4

  • AI 请求流式失败时自动降级到普通请求。
  • 优化 API 连接失败、超时、TLS 握手失败时的错误提示。

0.2.2

  • 修复安装版 AI 设置保存失败的问题,配置改为写入 %LOCALAPPDATA%\StockChoosing\stockchoosing.toml。
  • 默认 OpenAI-compatible Base URL 改为 https://api.example.com/v1。
  • 默认模型改为 gpt-5.5。
  • 保存 AI 设置后前端会回显实际保存的 Base URL 和模型。

0.2.1

  • 修复「今日关注」新闻只解析到板块方向时候选为空的问题。
  • 今日关注会从当前股票、Agent 上下文、自选股和筛选结果补充真实候选,避免空跑。
  • 回答会区分新闻方向与本地候选来源。

0.2.0

  • 将 AI Agent 升级为可观察的研究助理工作流。
  • 新增任务进度事件、流式阶段性回答、候选卡片和观察计划展示。
  • 新增 Agent 快捷任务:分析当前股票、今日关注、多股对比、候选池诊断、观察计划。
  • 候选卡片支持理由、来源、观察条件,并可快速打开行情、加入自选、加入对比。
  • 同步 Windows 安装器版本号与打包说明。

项目结构

StockChoosing/
├─ Cargo.toml                 # Rust 项目与依赖配置
├─ Cargo.lock
├─ stockchoosing.toml          # 本地应用配置
├─ README.md
├─ docs/
│  └─ 选股工具使用教程.md
├─ templates/
│  └─ StockChoosing_选股导入模板.xlsx
├─ src/
│  ├─ main.rs                  # 应用入口、窗口、IPC 与业务调度
│  ├─ api.rs                   # 行情与 K 线接口
│  ├─ ai.rs                    # AI Agent 封装
│  ├─ config.rs                # 配置读取与保存
│  ├─ screener.rs              # Excel 选股、诊断、导出
│  └─ stock_code.rs            # 股票代码标准化
├─ ui/
│  ├─ index.html
│  ├─ assets/
│  ├─ scripts/
│  │  ├─ app.js
│  │  ├─ ipc.js
│  │  ├─ market.js
│  │  ├─ screener.js
│  │  ├─ agent.js
│  │  ├─ chart.js
│  │  ├─ state.js
│  │  └─ theme.js
│  └─ styles/
└─ release/                    # 发布包示例

常见问题

1. 启动后提示找不到 ui/index.html

请确认运行目录中存在 ui/ 文件夹。开发环境下建议在项目根目录执行:

cargo run

2. 行情加载失败

可能原因:

  • 网络无法访问行情接口
  • 股票代码格式错误
  • 行情源临时不可用

可先尝试输入标准代码,例如 sh600519、sz000001、hk00700。

3. AI 助手无响应

请检查:

  • API Key 是否正确
  • Base URL 是否为 OpenAI-compatible /v1 地址
  • 模型名是否可用
  • 当前网络是否可访问该 API 服务

4. Excel 导入后很多字段显示“未补全”

说明模板中缺少对应字段,或字段名称无法匹配。请优先使用应用内「导出模板」生成的标准模板填写。

免责声明

StockChoosing 仅用于市场数据展示、条件筛选和研究辅助。行情数据、AI 输出和筛选结果都可能存在延迟、错误或遗漏,不构成投资建议、买卖建议或收益承诺。任何投资决策均需用户独立判断并自行承担风险。

About

基于 Rust 的 A 股与港股本地桌面研究、条件选股和 AI 辅助工具

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages