T

tick-stock-panel

SHA-256
6.2k stars·开发工具·已提供 SHA-256 校验码,下载后可自行核对文件完整性

自托管、零运维的 A 股量化工作台:策略、回测、监控一站搞定,支持 AI 助手与 MCP 接入。

智能下载

下载 Download 版本

v0.3.9 · 252.9 MB

一个 Docker 跑起来的 A 股策略回测与盯盘工具

核心功能

  • 策略引擎:自定义策略与信号,毫秒级扫描全 A 股
  • 统一回测:支持 T+1、手续费与滑点,回测与实盘同一条执行路径,杜绝未来函数
  • 异动监控:竞价、盘中、偏移全时段异动,支持语音播报与飞书推送
  • AI 对话助手:一句话查询全站数据,取数过程逐条可核对
  • 开放能力:65 个 API 端点加 12 个 MCP 工具,Token 六档权限

避坑指南

  • •注意:本项目仅供学习研究,不是投资或看盘软件,作者明确不对标同花顺、通达信,也不提供 AI 荐股或涨停预测;项目不自带行情数据,需自行接入合规的第三方数据源;仅覆盖 A 股市场;回测结果不构成投资建议,据此实盘操作盈亏自负。

适用场景

  • 个人量化爱好者在本地搭建策略研究、回测与盯盘的一体化环境
  • 通过开放 API 或 MCP 把面板数据交给 AI 客户端,搭建自己的投研机器人
  • 盘中实时监控自选股异动,第一时间推送到飞书

详细介绍

TSP 是自托管、零运维的 A 股量化工作台,将策略、回测、因子研究、实时监控与复盘统一到同一数据口径:本地只存基础行情 Parquet,68 列指标信号由 Polars 引擎现算,各环节结果一致。回测支持 T+1、手续费与滑点,进程隔离并杜绝未来函数。开放能力是亮点:65 个 API 端点、Token 六档权限、12 个 MCP 工具,AI 客户端即插即用。相比 vnpy、Qlib 等需折腾 Python 环境的框架,TSP 一个 Docker 容器即可运行、零外部数据库;相比聚宽等云平台,数据完全留在本地。

常见问题与排障 (2)

故障排除
如何修复使用 TSP 桌面 AI 聊天助手时出现的“405 Method Not Allowed”错误?

这是 TSP v0.3.3 中的一个打包 bug。app/custom/* 后端扩展模块是在运行时通过 importlib + pkgutil 动态发现的,PyInstaller 的静态分析无法检测到它们。packaging/tsp.spec 文件缺少针对 app/custom 的 datas + hiddenimports 声明,因此 assistant 模块未被打包进安装程序,其 API 路由从未被注册,请求最终落入 SPA 的兜底 GET 路由,返回 405。

诊断线索:
- GET http://127.0.0.1:3018/api/custom/assistant/status 返回 HTML 而非 JSON(路由未注册)
- 安装目录中缺少 _internal/app/custom 目录,而 _internal/app/plugins/fuyao 存在
- 其他 AI 功能(例如设置页的连通性检查、盘后复盘)工作正常

修复方法:升级到 TSP v0.3.5 或更高版本,该版本的 spec 文件已包含针对 app/custom 的 datas + hiddenimports 声明。升级后,请确认安装目录中存在 _internal/app/custom/assistant。下载地址:https://github.com/shy3130/tick-stock-panel/releases/tag/v0.3.5

来源 Issue #459
故障排除
为什么 depth5(五档订单簿)在自定义 YAML 数据提供程序中不起作用,以及如何解决?

这是一个 bug:自定义数据源管线从未路由 depth5。config_from_dict() 中的数据集白名单在解析时丢弃了 depth5,_sanitize_for_yaml() 在保存时又将其丢弃了一次,provider 既没有针对 /depth5 的字段契约,也没有 get_depth_batch() 方法,而且 validate() 错误地把 depth5 当作需要 start/end 参数的日期范围数据集。该问题已在 commit 384094b(PR #479)中修复——升级到包含该 commit 的版本,然后在你的 YAML 中声明 datasets.depth5,面板的自定义 eltdx_source 路由就会调用适配器的 /depth5 端点。修复内容(backend/app/data_providers/custom/):1) config.py——在 DatasetName Literal 和 config_from_dict() 的 datasets 白名单中加入 "depth5";2) loader.py——在 _sanitize_for_yaml() 的 allowlist 中加入 "depth5";3) provider.py——向 _REQUIRED 添加 "depth5": {"symbol", "asks", "bids"},像 realtime 一样将 depth5 从 symbols/start/end 重复参数检查中排除,并新增 GenericHTTPProvider.get_depth_batch():按 cfg.batch 对 symbols 分块并进行 rpm 节流,带重试地请求 /depth5,跳过失败的批次并给出警告,将 asks/bids 的 price/volume 规范化为数值,并派生出 ask_volumes/bid_volumes;4) test_dataset() 新增 depth5 分支,仅发送不带日期的测试 symbols。

来源 Issue #478

标签

quantitative-tradinga-sharebacktestingself-hostedllmmcpdockerstock-analysis

快速上手

1

下载安装包

点击上方按钮下载对应系统的安装包

2

安装软件

双击下载的安装程序,按提示完成安装

3

安装 Docker,从 GitHub 仓库获取官方镜像或 docker-compose 配置

4

运行 docker compose up -d 启动单容器服务

5

浏览器打开面板地址,设置面板密码后登录系统

安装指引
  1. 安装 Docker,从 GitHub 仓库获取官方镜像或 docker-compose 配置
  2. 运行 docker compose up -d 启动单容器服务
  3. 浏览器打开面板地址,设置面板密码后登录系统
文件完整性

已提供 SHA-256 校验码,下载后可自行核对文件完整性

该校验码提取自 GitHub 官方 Release 页面

SHA256 校验码

1a6ae6bcdcd3bec010b3f11998e5894a05138f9df630e80b80b076014c0090d0

该校验码提取自 GitHub Release 页面,下载后请自行核对文件完整性

本平台所有 SHA-256 校验码均提取自项目在 GitHub 官方 Release 页面发布的文件,未做任何修改。你可以通过 GitHub Releases 页面自行验证。

运维指引

卸载说明

先执行 docker compose down 停止服务,再用 docker rmi 删除对应镜像,最后删除本地数据目录(内含 Parquet/DuckDB 数据与配置)即可完全卸载,系统无残留。

无额外依赖

下载后即可直接使用,无需安装其他运行环境

项目信息
开源协议MIT
最后更新2026-10-21 00:42:40
GitHub 仓库官方网站

遇到问题?查看下方 FAQ

2 FAQs

相似推荐