OpenStock:免费股票分析平台,如何5分钟搭好行情监控与价格预警
【免费下载链接】OpenStockOpenStock is an open-source alternative to expensive market platforms. Track real-time prices, set personalized alerts, and explore detailed company insights — built openly, for everyone, forever free.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenStock
OpenStock 是一个完全免费的开源股票分析平台:实时行情、个性化价格预警、详细公司洞察,全部功能零成本可用。项目基于 Next.js 15、MongoDB 与 Finnhub 行情数据构建,代码以 AGPL-3.0 协议公开,数据从获取到展示的每个环节都可以读源码验证。
它是什么:一套面向个人投资者的免费行情工具
OpenStock 是一个用 Next.js 15(App Router)和 React 19 写的 Web 应用,全程 TypeScript,UI 层是 Tailwind CSS v4 加 shadcn/ui。账号体系用 Better Auth(邮箱/密码登录,数据落在 MongoDB),行情来自 Finnhub API,K 线图、热图和报价列表来自 TradingView 可嵌入组件,后台任务交给 Inngest。适合两类人:想边看盘边学市场的新手,以及想改代码、部署自己实例的开发者。注册时会填国家、投资目标、风险偏好和关注行业,这些信息后续会被用于生成个性化欢迎邮件,界面默认深色主题。
核心能力拆解:从看全局到做决策
📊 市场全景:首页一次看完行情
打开首页,布局是上下两排:上排左侧"市场概览"、右侧"股票热图",下排是实时报价列表和市场新闻时间线。全部由 TradingView 嵌入组件驱动,统一封装在 components/TradingViewWidget.tsx 里,每张卡片右上角都能一键展开全屏。热图用颜色深浅表示涨跌,你不用逐个看数字就能定位今天哪个板块在动。页面拼装逻辑集中在 app/(root)/page.tsx/page.tsx) 这个路由文件中。
🔍 找到个股:命令面板搜索并加入自选
按 Cmd/Ctrl + K 唤起全局搜索,输入几个字符就会走 Finnhub 查询,搜索带 300ms 防抖,避免每次击键都发请求;没输关键词时显示热门股票列表。选中股票后直达个股页。自选页可以搜索添加股票,每只股票按用户隔离存储、代码保证同一用户下不重复,数据模型见 database/models/watchlist.model.ts,搜索交互实现见 components/SearchCommand.tsx。
📈 个股页:图表、财务与情绪分析
个股页是双栏布局:左栏放代码信息、K 线图和基线图,每张图表都能展开占满屏幕;右栏放加入自选按钮、技术面评级、公司概况、财务数据,外加一张可选的情绪卡片——聚合 Reddit、X、新闻和 Polymarket 的舆情快照,需要配置 Adanos 密钥才生效。整页定义在 app/(root)/stocks/[symbol]/page.tsx。
🔔 价格预警:定时任务替你盯盘
你可以给自选股设置目标价,方向只有两种:涨到之上(ABOVE)或跌到之下(BELOW)。一个 Inngest cron 任务每 5 分钟跑一次,拉取所有生效预警的最新报价,命中后把记录标记为已触发;预警默认 90 天有效。模型定义在 database/models/alert.model.ts,巡检逻辑在 lib/inngest/functions.ts。
部署指南:从克隆到启动的完整步骤
前置条件:Node.js 20+、pnpm 或 npm、一个 MongoDB 连接(Atlas 或本地 Docker 均可)、Finnhub API key(免费额度够起步)、一个 Gmail 账号(发邮件用),以及可选的 Gemini key(AI 文案生成用)。
git clone https://gitcode.com/GitHub_Trending/ope/OpenStock cd OpenStock pnpm install在项目根目录创建.env,最少要填:MONGODB_URI(数据库连接串)、BETTER_AUTH_SECRET、NEXT_PUBLIC_FINNHUB_API_KEY。邮件、AI 供应商等其余可选项照 README 的环境变量一节补齐即可。配置完先验证数据库连通性,再启动开发服务:
pnpm test:db pnpm dev然后打开 http://localhost:3000。需要欢迎邮件、周报这类后台工作流时,另开一个终端跑npx inngest-cli@latest dev启动 Inngest 本地服务。用 Docker 的话,docker-compose.yml 里已经定义好应用和 MongoDB 两个服务,执行docker compose up -d mongodb && docker compose up -d --build就能一次拉起来。
进阶玩法:三个值得尝试的定制方向
- 换 AI 供应商或做主备切换:lib/ai-provider.ts 把 Gemini、MiniMax、Siray 三家抽象成统一接口,改
AI_PROVIDER和对应 API key 就能切换,主供应商失败时自动落到备用。 - 调整数据源与图表参数:行情 API 端点
FINNHUB_BASE_URL和所有 TradingView 组件参数都集中在 lib/constants.ts,换交易所、改图表主题都在这里改,支持的交易所清单可查 MARKET_SUPPORT.md。 - 加自己的工作流:服务端动作统一放在 lib/actions/,新增一个取数函数后搭配 Inngest cron 就能做定时任务;欢迎邮件、周度新闻摘要都是现成的参考实现。
适用边界:这些局限要心里有数
- 数据时效:Finnhub 免费额度下,非美股报价延迟 15 分钟以上,调用频率限制 60 次/分钟;要真时需要付费档。
- 新兴市场覆盖:TradingView 免费组件对印度 NSE、越南等部分代码可能提示 "This symbol is only available on TradingView",或缺图表、缺技术指标。
- 预警目前完成的是"检测与标记",通知送达通道还没接好,依赖推送的话需要自己扩展。
- 它不是经纪商:没有下单、持仓管理功能,只做分析、监控和资讯聚合。
- 许可证:AGPL-3.0。修改后重新分发或作为服务部署时,需要以同一协议开源你的修改并注明原作者。
写在最后
OpenStock 把行情、图表、自选、预警这条工具链整体放到了免费可修改的位置,但图表、报价和预警都只是参考信息,买不买、什么时候买,决策权始终在你手上。
免责声明:OpenStock 是社区构建的项目,不是经纪商。市场数据可能因供应商规则和你的配置而延迟。本文内容不构成任何投资建议。
【免费下载链接】OpenStockOpenStock is an open-source alternative to expensive market platforms. Track real-time prices, set personalized alerts, and explore detailed company insights — built openly, for everyone, forever free.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenStock
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考