别再切屏看行情了:在 IDEA 里盯 A股、美股、基金和期货
我做了一个 JetBrains 插件,在 IDE 里悄悄看 A股/基金/期货行情(附 AI 分析)
写代码的间隙想瞄一眼自选股,又不想切屏、不想开网页被同事看到大红大绿的 K 线?我用 Kotlin/Swing 撸了一个原生 JetBrains 插件 StockLite,把股票、基金、期货、全球指数行情直接塞进了 IDE 侧边栏,还接入了 DeepSeek 做 AI 深度分析。本文介绍功能、技术实现和踩过的坑。
一、为什么要做这个插件
作为一个既写代码又炒股(被套)的程序员,我的痛点很具体:
- 打开东方财富/同花顺网页看盘,切屏动作太大,而且满屏红绿非常显眼;
- 手机看盘要掏手机,更明显;
- 市面上一些 IDE 看盘插件要么只支持股票不支持基金/期货,要么数据源挂了没人修,要么 UI 停留在上个时代。
所以干脆自己写一个,要求是:
- 原生集成:JetBrains Tool Window,跟 IDE 主题自动适配,亮色暗色都不违和;
- 全品种:A股、港股、美股、场内外基金、国内/国际期货、18 个全球指数;
- 低调:默认只显示名称/价格/涨跌幅,支持自定义别名(把"贵州茅台"改名叫"项目A"你懂的);
- 免费数据源:新浪、腾讯、天天基金、Yahoo Finance,不需要任何付费 API。
二、功能一览
1. 四大行情面板
| 面板 | 数据源 | 刷新频率 |
|---|---|---|
| 股票(A股/港股/美股) | 新浪 / 腾讯 / Yahoo Finance | 5 秒(可配置 3~60s) |
| 基金(含 QDII) | 天天基金 fundgz + F10 | 30 秒(可配置) |
| 期货(国内/国际) | 新浪期货接口 | 5 秒 |
| 全球指数(18 个) | Yahoo Finance / 新浪 | 5 秒 |
- 持仓管理:成本价、持仓数量、市值、浮动盈亏、盈亏比例,红涨绿跌着色(也支持绿涨红跌,懂的都懂);
- 分组管理:自定义分组 + "全部 / 我的持仓"虚拟分组;
- 搜索添加:输入名称或代码即可搜索,支持 A股、5 位港股代码、美股 ticker;
- 右键菜单:编辑、删除、到价提醒、复制代码、浏览器打开、改名;
- 到价提醒:设置目标价 + 上穿/下穿方向,触发后弹 IDE 气泡通知,触发一次自动失效;
- 数据导入导出:JSON 一键备份/恢复,换电脑无痛迁移。

2. 内嵌走势图:点击涨跌幅,面板底部直接展开
点击任意标的的涨跌幅列,面板底部展开一块 260px 高的图表区,支持 日内 / 日K / 周K / 月K 四档切换:
- 日内是分时折线图,Y 轴显示相对昨收的涨跌幅 %,0% 处画虚线基准;
- 日K/周K/月K 是真实 OHLC 蜡烛图(涨红跌绿),覆盖股票、指数、期货;
- 数据源没有真实开高低收时自动回退折线图,绝不用收盘价伪造 K 线;
- 鼠标悬停 Tooltip 显示开/高/低/收和相对上一根 K 线的涨跌幅。
图表基于 TradingView 开源的 lightweight-charts,通过 JCEF(JBCefBrowser)嵌入,复用同一个浏览器实例避免重复创建开销。

3. A股大盘概览 + 盘后多空信号
全球指数面板底部有一块"大盘仪表盘":
- 涨跌家数(沪深 + 北交所)、涨停/跌停家数;
- 两市成交额、大/中/小盘代理指数(沪深300/中证500/中证1000);
- 领涨/领跌板块 TOP6、主力资金净流入;
- 股指期货多空持仓摘要:汇总中信期货及前 20 名主力机构在 IH/IF/IC/IM 四大品种全部合约月份的净持仓变化,悬浮查看明细;
- 盘后多空信号:收盘后综合 A50/纳指期货、股指期货持仓、主力资金、大盘宽度,给出 -100~100 的启发式倾向评分(每个因子的依据都能悬浮查看,不是玄学黑盒)。

4. AI 深度分析(DeepSeek)
在任意股票/基金/期货/指数上右键 → AI 深度分析,打开多轮对话面板:
- 内置 5 种专业 System Prompt 一键切换:宏观 / 技术 / 基本面 / 量化 / 风险分析;
- 自动注入当前实时行情作为上下文;
- 支持 Tavily 联网搜索,AI 可以自己去查最新公告和新闻(Tavily 免费额度每月 1000 次);
- 支持
deepseek-reasoner深度推理模式; - 回复用 HTML 富文本渲染 Markdown,跟随 IDE 主题配色;
- 分析过程实时显示进度:
🔍 正在搜索:xxx 2026年最新公告。
只需要一个 DeepSeek API Key(Settings → Tools → StockLite → AI 分析),按量计费非常便宜。

三、技术实现:几个值得聊的点
插件用 纯 Kotlin + Swing 实现,没有引入任何重量级 UI 框架,适配所有 JetBrains IDE(2024.1+):IDEA、WebStorm、PyCharm、GoLand、Rider……
src/main/kotlin/com/stocklite/plugin/
├── StockliteToolWindowFactory.kt # Tool Window 入口
├── state/ # 数据模型 + XML 持久化
├── service/ # 行情/搜索 HTTP 调用、K线数据
├── util/ # HTTP 工具(GBK 解码)、开市时间判断
└── ui/ # 四个面板 + JCEF 图表 + 各种对话框
1. 免费数据源的整合与踩坑
免费行情接口的水很深,分享几个实战踩坑:
- 新浪 A股接口返回 GBK 编码,直接按 UTF-8 读会乱码,需要手动指定
Charset.forName("GBK")解码; - Yahoo 的
v7/finance/quote接口悄悄加了鉴权,返回 401,导致节假日休市判断失效。解决方案是改用无需鉴权的v8/finance/chart接口自带的currentTradingPeriod字段判断当日是否为真实交易日,并按市场缓存 30 分钟; - 韩国 KOSPI 的 Yahoo 分钟线在实际收盘前 30 分钟就截断了,直接取"最后一个数据点"当收盘价,涨跌幅能偏差 1 个百分点以上。修复方式是校验数据点时间是否接近该市场官方收盘时间,不通过就回退到 Yahoo 官方的
previousClose字段; - 东方财富涨跌停接口的
date参数不能为空,否则返回rc:102无数据——这种坑只能靠抓包对比才能发现; - QDII 基金的估值和净值来自两个接口,更新时间不同步,会出现数据交替闪烁。最终方案是统一双源流程:按净值日期比较,永远取较新的那份。
2. 请求频率与缓存策略
行情插件最容易犯的错误是无脑轮询把免费接口打挂。StockLite 做了几层防护:
- 股票/基金/全球指数三套刷新间隔独立可配;
- 面板隐藏时暂停刷新(Tool Window 生命周期监听),不看盘就不发请求;
- 仅 Yahoo 提供数据的指数加 60 秒本地缓存,避免每次切换面板都重新请求;
- 遇到 HTTP 429 自动退避(最长 60 秒),然后逐步恢复;
- 大盘概览各子项独立缓存 + 磁盘持久化快照兜底:收盘后或 IDE 重启后继续显示最后一次成功获取的数据,而不是一排"–",超过 3 天没有新数据才隐藏。
3. Swing 表格的体验细节
- 价格闪烁动画:行情更新时价格变化的单元格短暂闪烁 350ms(涨闪红/跌闪青),用继承
QuoteRenderer的FlashRenderer实现; - 列宽记忆:拖动列宽后自动持久化,重启恢复;
- 自动小数位:价格根据量级自动显示 2/3/4 位小数,兼容 ETF 的三位数报价;
- 中英文界面切换:Settings 里一键切换。
四、安装方式
方式一:Marketplace 安装(推荐)
Settings → Plugins → Marketplace → 搜索 StockLite → Install → 重启 IDE。
五、常见问题
Q:数据是实时的吗?
A:沪深 A股、港股为实时(新浪/腾讯直连);美股和其他海外指数约有 15 分钟延迟(免费接口限制),面板上有常驻提示条明确标注,AI 分析上下文中也会注明。
Q:需要付费吗?
A:插件完全免费,行情数据全部来自公开免费接口。AI 分析功能需要自备 DeepSeek API Key(可选,不配置不影响其他功能)。
Q:支持哪些 IDE?
A:所有 JetBrains 系 IDE 2024.1+:IDEA、WebStorm、PyCharm、GoLand、Rider、CLion、PhpStorm 等。
Q:会不会影响 IDE 性能?
A:面板隐藏时自动暂停所有刷新;图表复用单个 JCEF 实例;网络请求全部在后台线程。日常使用无感。
六、写在最后
这个插件从 v1.0 迭代到 v1.7,加了 40+ 个功能点,基本覆盖了我自己看盘的全部需求。如果你也是"上班摸鱼看盘党",欢迎试用:
- Marketplace:在插件市场搜索
StockLite(https://plugins.jetbrains.com/plugin/32115-stocklite/versions/stable/1097171)
觉得有用的话,求一个 Marketplace 五星好评 ⭐,有功能建议或 Bug 欢迎在评论区留言,我会持续迭代。
免责声明:本插件仅提供行情数据展示与工具功能,盘后多空信号为启发式评分、AI 分析为模型生成内容,均不构成任何投资建议。股市有风险,入市需谨慎。
更多推荐




所有评论(0)