私有化部署 · 开箱即用 · 无第三方 SaaS 依赖

把策略研究
放进自己的服务器

A 股量化回测与行情信号监控平台。双均线 + 波动率过滤策略的可视化回测、 交易时段定时扫描、买卖信号 Webhook 推送,附带完整的 RBAC 权限、审计日志与限流防护。

  • FastAPI + SQLAlchemy 2.0
  • Vue 3 + Element Plus + ECharts
  • SQLite 单机部署,零运维
功能

从策略配置到信号推送,一条链路走完

所有参数可视化配置,改参数不用改代码。每个环节都有明确的边界提示,不会让你误以为系统在做它没做的事。

可视化回测

快慢均线周期、波动率窗口与阈值全部可调。股票池最多 50 只,回测区间自选。 佣金(含最低佣金)、印花税(仅卖出)、滑点都算进去 —— 成本不计入的回测没有意义。

  • 净值 / 收益率 / 回撤三种曲线视图
  • K 线与买卖点标记
  • 仓位变化与交易明细导出 CSV

定时行情扫描

监控任务在后台按间隔扫描,只在 A 股交易时段生效。网页开关即可启停, 调度器状态实时可见。信号去重由数据库唯一索引兜底,并发下也不会重复推送。

  • 仅交易时段扫描
  • 数据库级信号去重
  • 调度器运行状态实时可见

信号推送

对接 QXBot Webhook,支持 XML 卡片与纯文本两种格式。推送失败可以手动重推, 每条信号的推送状态一目了然。

  • XML 卡片 / 纯文本格式
  • 失败可手动重推
  • Webhook 连通性可发测试消息

安全防护

JWT + bcrypt(cost=12),密码绝不明文存储。验证码一次性使用、恒定时间比较, 连续失败锁定账号,滑动窗口限流按 IP + 路由分组。

  • SSRF 防护,Webhook 拒绝内网地址
  • 越权返回 404 而非 403
  • 异常堆栈只入库,不返回客户端

独立管理后台

用户端与后台是两个独立的前端应用,同域不同路径部署。 后台管用户、角色、日志、缓存、黑名单与系统设置,权限点细粒度可配。

  • RBAC 细粒度权限点
  • 操作日志可筛选、导出 CSV
  • 系统设置热改,无需重启

双主题响应式

浅色 / 深色 / 跟随系统三选一,基于 CSS 变量驱动,切换零重渲染。 桌面端固定侧边栏,手机端自动变抽屉,表格与弹窗在窄屏不撑破布局。

  • 首屏不闪白
  • 图表配色跟随主题重建
  • 移动端抽屉式导航
架构

前后端彻底分离,三端同域部署

用户端、管理后台、产品官网是三个独立的前端应用,后端只提供 /api。 各自独立构建、独立发布,互不影响。

用户端 /app
  • 策略配置与回测
  • 行情监控与信号
  • 模拟下单与订单
  • 个人中心与推送配置
管理后台 /admin
  • 用户与角色权限
  • 日志、报错与缓存
  • IP 黑名单与系统设置
  • 全站数据与监控
产品官网 /
  • 产品特性介绍
  • 技术架构说明
  • 部署方案与配置
  • 联系方式
FastAPI 后端 /api
  • JWT 认证 + RBAC 权限
  • 滑动窗口限流 + IP 黑名单
  • 审计日志与异常兜底
  • 回测引擎 / 行情缓存 / 调度器
数据层
  • SQLite(单写者,WAL 模式)
  • tushare 行情接口 + 本地缓存
后端 FastAPI 0.115 SQLAlchemy 2.0 Pydantic v2 PyJWT bcrypt
前端 Vue 3.5 Element Plus 2.9 ECharts 5.5 Pinia Vite 6
部署 Nginx Supervisor / systemd 宝塔面板 原生 Linux
界面

为长时间盯盘设计的界面

深色省眼,白天投屏切浅色。两套主题都是完整实现,不是把深色反色敷衍一下。

策略管理 · A股量化平台
概览策略回测 监控信号订单
12我的策略
+18.4%最佳收益
36回测次数
用户端 · 深色主题
管理后台 · 数据概览
概览用户角色 设置日志缓存
248总用户
1,032回测总数
386信号总数
管理后台 · 浅色主题
部署

一条命令起来,一个文件搬走

不依赖 Redis、不依赖 Celery、不依赖外部数据库。单机一台 2 核 2G 的云服务器足够跑起来。

快速开始
# 克隆并进入目录
git clone <repo> quant-platform && cd quant-platform

# 后端(自动建 venv、装依赖、初始化数据库)
./start.sh --daemon

# 构建三个前端应用
cd frontend && npm install && npm run build
cd ../frontend-admin && npm install && npm run build
cd ../website

# 检查服务状态
./start.sh --status

单机够用

SQLite 开了 WAL 模式,单写者限制反而成了保护 —— 不用操心并发写冲突。 回测同步跑只需几十毫秒,不需要任务队列。

配置即文件

所有配置走环境变量与 .env,不用数据库。 tushare token、密钥、限流阈值都是启动期读取,改完重启即可。

代理友好

Nginx 反代已配好 X-Forwarded-For 覆盖, 限流与 IP 黑名单取到的都是真实客户端 IP,不会被伪造绕过。

两种面板都支持

宝塔面板按现成配置改几个路径就能用; 原生 Linux 用 Supervisor 拉起 uvicorn,systemd 也行。

安全

每个攻击面都有对应防护

下面每一项都是代码里真实存在的实现,不是清单上的漂亮话。

项目实现方式
认证JWT(HS256),payload 不含任何个人隐私字段
密码存储bcrypt cost=12,绝不明文落库
SQL 注入全项目零字符串拼接,全部走 ORM 参数绑定
越权防护统一附加 owner 条件;越权返回 404 而非 403,避免探测资源存在性
接口限流滑动窗口,按 IP + 路由分组;登录 10 次/分、注册 5 次/分
验证码一次性使用,恒定时间比较,防重放
账号锁定连续失败 5 次锁定 15 分钟,阈值可配
SSRF 防护Webhook 地址白名单校验,拒绝内网与云元数据地址
目录穿越静态文件路径解析后校验是否在产物目录内
敏感配置tushare token、券商密码 AES 加密入库,接口只回显掩码
审计日志所有 API 请求与业务动作记录用户、IP、耗时、结果

把它跑起来看看

内置合成行情数据,没配 tushare token 也能完整走通回测流程 —— 但指标没有投资参考价值。