OpenStock 本地量化工作台

本地跑的插件化股票工作台

OpenStock 把「宿主」和「功能」彻底分开:底座只是一层薄壳(静态托管 + 取数子进程 + 常驻脚本监督), 所有功能都是自包含插件。它绑在 127.0.0.1,不需要注册、不上传任何东西。

21
插件
开箱可用(无需本地终端)
第三方 pip 依赖
带常驻采样脚本的插件
Windows · Python 3.12+ · 纯本地 http://127.0.0.1:8080/ · 无账号体系
重要:本项目不含任何行情数据。 行情 / 财务 / 资金流数据一律由使用者自备数据源取得(掘金终端、tushare 积分或公开网页接口), 数据版权属各数据源方。OpenStock 只提供本地分析工具 —— 不代跑数据、不转售数据、不提供数据服务。

为什么这样拆

不是为了"插件化"好看,而是为了三件事:插件崩了不拖垮宿主、数据按人分离、单机部署零运维。

🧩

一切皆插件

每个插件目录自包含(页面 + script/ + 数据读写),宿主不 import 插件代码,异常天然隔离。 协议就一句话:stdin JSON → stdout 末行 JSON。

⏱️

长任务不阻塞页面

取数秒回 + 后台工人脱离父进程 + 心跳 10s + 文件锁(O_EXCL)+ 原子落盘(tmp 后 os.replace), 任务列表刷新不丢进度。

🔁

常驻采样有监督

交易时段采样类插件放一个 script/daemon.py,宿主自动拉起、异常指数退避重启、壳退出统一回收。

🗂️

个人数据收口

所有个人数据落在 database/<插件>/,不进版本库、不与其他人的数据混在一起;新机器首次访问自动播种。

🪶

依赖极轻、无构建

前端是原生 HTML/CSS/JS(没有打包步骤),后端只有一层 Python 子进程。核心依赖仅 fastapi uvicorn httpx requests

🔀

数据源可插拔

插件与数据源解耦:同一套页面结构可以接不同的取数实现,换数据源只换插件, 宿主一行代码都不用改。

开箱可用:不依赖本地终端的那几个

下面这些插件只需要 Python 与少量依赖即可运行,数据来自公开网页接口 —— 适合作为第一次试用的起点。 完整清单(含需要掘金终端或自备凭证的插件)见 插件目录

正在读取插件目录…(若一直停在这一行,说明页面脚本没跑起来:F12 看 Console 报错)

跑起来只要三步

便携包(推荐):内置 Python 3.13 与全部依赖(含 gm SDK / tushare),机器上不用装任何东西

1 · 拿到包

openstock-0.1.0-portable.zip
(54.3 MB,解压到任意目录)

想改代码也可以走源码:git clone + 自备 Python 3.11+,依赖自己装。

2 · 自检

双击 setup.bat

检查包内运行时与依赖是否完整(幂等,可重复跑)。出现 MISSING ... 说明包不完整,重新下载。

3 · 启动

双击 start.bat

浏览器自动打开 127.0.0.1:8080。数据源(掘金客户端 / tushare 等)需另行自备。

当前状态

本页与插件目录均由仓库实际内容生成(site/tools/build_registry.py,生成于 )。下面是明确还没做完的部分,不做粉饰:

已经能用

· 宿主薄壳:静态托管 + /api/plugin/run 取数子进程 + daemon 监督 + /api/health
· 21 个插件,围绕掘金数据源与公开网页接口
· 原子落盘、长任务工人、自举播种、两套数据源同构
· 便携发行包:内置 Python + 全部依赖,解压即用(含 gm SDK / tushare)

还没做完(分发前必修)

· requirements-core/data/optional.txt 三件套(源码方式目前按文档手装)
· GET /api/env/status 环境自检 + 首页按「可用 / 缺依赖 / 需配置」三档分组
· 插件 / 宿主在线更新通道(/api/updates
· 独立的数据来源声明文件(LICENSE 已加:MIT,第三方清单见 NOTICE