跨平台、轻量、无登录的个人持仓盈亏跟踪工具。 A 股 / 港股 / 美股 / 场内基金 / 场外基金 一页看完,不带分析、不带社区、不带广告。
做股票基金这几年,账户越开越多——A 股同花顺、港美股富途/老虎、基金天天基金/支付宝。 每次想知道「现在到底赚还是亏」,要打开 4 个 App 算半天。
雪球能合一起看,但社区噪音 + 推送 + AI 推荐我都不想要。我只想要一眼盈亏。
所以做了这个。
- 🌏 跨市场:A 股 / 港股 / 美股 / 场内基金 / 场外基金 一个池子
- 💱 多币种:原币种各自显示 + 实时汇率折算人民币算总账
- 📈 走势图:分时 / 日K / 周K / 月K 自由切换(klinecharts)
- 📷 OCR 截图导入:截一张券商持仓截图,AI 自动识别批量录入
- 💾 数据完全本地:localStorage + IndexedDB,无账户、无登录、无云同步
- 🔄 JSON 导入导出:换设备一键迁移
- 📱 PWA 响应式:桌面双栏 + 手机单列,可装到主屏离线打开
- 🎨 涨跌配色可切:默认红涨绿跌,国际习惯也支持
- 🚫 无分析、无社区、无广告、无埋点
截图待补充。Fork 部署后可访问 demo 体验。
| 类别 | 技术 |
|---|---|
| 构建 | Vite 8 |
| 框架 | React 19 + TypeScript 6 |
| 样式 | TailwindCSS 4 |
| 状态 | Zustand 5(含 persist middleware) |
| K线图 | klinecharts 9 |
| PWA | vite-plugin-pwa 1 |
| 后端 | Cloudflare Pages Functions(无数据库) |
| AI | Cloudflare Workers AI - @cf/meta/llama-3.2-11b-vision-instruct |
| 部署 | Cloudflare Pages(前端 + Functions 同仓) |
| 包管理 | pnpm 10 |
| 市场 / 数据 | 上游 |
|---|---|
| A 股 / 港股 / 美股 / 场内基金 实时行情 | 新浪 hq.sinajs.cn |
| 股票 K 线 | 新浪 money.finance.sina.com.cn |
| 场外基金估值 | 天天基金 fundgz.1234567.com.cn |
| 场外基金历史净值 | 天天基金 fund.eastmoney.com/pingzhongdata |
| 汇率 | jsdelivr @fawazahmed0/currency-api |
全部通过 Cloudflare Workers 代理(绕 CORS),开 5s / 60s / 12h 三档边缘缓存。
都是公开接口,不保证 100% 稳定。哪天断了欢迎 PR 补救。
需要 Node 20+ 和 pnpm 10+。
git clone https://github.com/knrlos/chicang.git
cd chicang
pnpm install
# 纯前端开发(不含 Functions)
pnpm dev
# → http://localhost:5173
# 前后端联调(含 Cloudflare Pages Functions)
pnpm wrangler pages dev --local
# → http://localhost:8788
# 生产构建
pnpm build完整步骤见 DEPLOY.md,简要:
- Fork 本仓库到你自己的 GitHub
- Cloudflare Dashboard → Workers & Pages → Connect to Git → 选你 fork 的仓库
- 构建命令
pnpm install && pnpm build,输出目录dist - Settings → Functions → AI bindings 加
AI(OCR 功能必需) - 想要自定义域名 → Custom domains 绑上
零运维,全免费额度内运行。
chicang/
├── src/
│ ├── components/ # UI 组件
│ │ ├── layout/ # AppLayout / TopBar / Desktop/MobileLayout
│ │ ├── holdings/ # 持仓列表/表单/卡片/OCR
│ │ ├── chart/ # K 线相关
│ │ ├── settings/ # 设置抽屉
│ │ ├── common/ # Modal / ConfirmDialog / Toast
│ │ ├── providers/ # ThemeProvider
│ │ └── pwa/ # InstallPrompt
│ ├── stores/ # Zustand stores
│ ├── lib/
│ │ ├── api/ # 客户端 fetch 封装
│ │ ├── calc/ # 盈亏 / 总市值计算
│ │ ├── chart/ # klinecharts 主题
│ │ ├── hooks/ # 自定义 hooks
│ │ ├── idb.ts # IndexedDB 封装
│ │ ├── marketRules.ts # 市场规则
│ │ └── marketHours.ts # 交易时段
│ └── types/
├── functions/ # Cloudflare Pages Functions(后端)
│ ├── _middleware.ts # CORS
│ ├── lib/ # cache / response / sinaParser / visionPrompt
│ └── api/
│ ├── quote.ts # 股票行情
│ ├── kline.ts # K 线
│ ├── fund/quote.ts # 基金估值
│ ├── fund/history.ts # 基金历史净值
│ ├── fx.ts # 汇率
│ └── ocr.ts # 截图 OCR
├── public/ # 静态资源 + PWA icons
├── wrangler.toml
└── vite.config.ts
- 所有持仓数据仅存储在浏览器(localStorage / IndexedDB)
- Cloudflare Workers 端不持久化任何用户数据,只做行情/OCR 转发
- OCR 图片一次性传给 AI 模型,处理完即丢,不落盘
- 无埋点、无 Analytics、无三方追踪
欢迎 Issue / PR。详见 CONTRIBUTING.md。
常见可贡献方向:
- 接入新行情源(雪球 / 东方财富 / Yahoo Finance)
- 接入新数据类型(可转债 / 期权 / 加密货币)
- 优化 OCR 提示词,提高识别准确率
- 加更多 PWA 增强(推送通知盘中提醒等)
- 翻译(English / 繁體中文)
如果这个工具帮你省了打开 4 个 App 的麻烦,请我喝杯咖啡呗 👇
详见 SPONSOR.md。
行情数据通过第三方公开接口获取,仅供参考,不构成投资建议。请以您所使用的券商终端为准。本工具不提供任何投资分析、推荐或预测。
MIT © 2026 knrlos