QuantDingerQuantDingerv5.0.1 Docs 文档中心
中 / EN GitHub
QuantDinger 标志

QuantDinger

开源AI自动化交易系统

将交易想法转化为 Python 策略、回测、模拟盘、实盘执行和监控——全部运行在一套可自托管系统中。

QuantDinger 是 Open Byte Inc 的产品。

AI 研究 → 策略代码 → 回测 → 模拟盘/实盘执行 → 监控

English · 简体中文 · API · AI Agent 与 MCP

在线应用 · 官方网站 · 视频演示 · 官方支持邮箱

Telegram Discord YouTube X

Apache 2.0 Python 3.12 PostgreSQL 18 Redis 8 Docker Compose 最新版本

QuantDinger 在明确启用实盘交易后可以提交真实订单。请先使用模拟盘, 为交易 API 设置最小权限,并自行确认所在地区的风险和合规要求。 本项目不提供投资建议。

QuantDinger 是什么

QuantDinger 是一套面向独立交易者、Python 策略开发者和小型团队的 开源AI自动化交易系统。它采用本地优先、可自托管的方式,让行情数据、策略代码、 交易凭据和部署环境始终由使用者自己掌控。

项目提供:

  • 多 AI 提供商的市场研究和分析;
  • Python 指标和 Strategy API V2 策略开发;
  • 服务端回测与实验工作流;
  • 加密货币交易所和传统券商的模拟盘、实盘执行;
  • Web、移动 H5、Human API、Agent Gateway 和 MCP 接入;
  • PostgreSQL 状态存储、持久任务、审计日志和可选监控。

它不是黑盒信号服务。策略代码、风控参数、账户凭据和运行环境都由运营者管理。

v5 的主要变化

v5 后端按照清晰的进程职责和运维边界重新组织:

  • HTTP API 不再承载长期运行的交易循环和调度线程;
  • API、交易、调度、Celery、定时投递和数据库迁移使用独立进程;
  • Celery 只处理有限、可序列化、可重试的任务,长期策略仍归交易进程管理;
  • 普通缓存 Redis 与持久任务 Redis 完全分离,使用不同淘汰策略;
  • 高风险 API 契约进入 OpenAPI 和自动化测试;
  • 可通过独立覆盖层启用 JSON 日志、请求 ID、Prometheus 指标、仪表盘和告警;
  • 生产覆盖层启用非 root 用户、只读根文件系统、能力移除和资源限制;
  • CI 检查语法、规范、测试、发布门禁、Compose、依赖安全、密钥、API 兼容性、版本和文本编码。

源码版本记录在 VERSION 中。Git 发布标签在同一语义版本前增加 v,例如 v5.0.1

系统架构

QuantDinger v5 架构图,包含客户端、Agent Gateway、量化核心、独立 Worker、基础设施、可观测性和闭环交易流程

可编辑源文件:architecture-v5.svg

上图展示完整的产品和进程架构;下面的运行拓扑重点说明各容器之间的职责和数据流。

flowchart TB
    C["Web / 移动端 / API / MCP 客户端"]
    FE["Nginx 前端服务"]
    API["Flask + Gunicorn API"]
    PG[("PostgreSQL")]
    CACHE[("Redis 缓存")]
    JOBS[("Redis 任务队列")]
    TW["交易 Worker"]
    SW["调度 Worker"]
    CW["Celery Worker"]
    BEAT["Celery Beat"]
    PROM["Prometheus"]
    GRAF["Grafana"]
    ALERT["Alertmanager"]

    C --> FE --> API
    API --> PG
    API --> CACHE
    API -->|"持久命令"| PG
    TW -->|"租约、订单、心跳"| PG
    SW -->|"计划任务、监控、心跳"| PG
    API -->|"有限异步任务"| JOBS
    BEAT --> JOBS --> CW
    CW --> PG
    API -. 指标 .-> PROM
    PG -. exporter .-> PROM
    CACHE -. exporter .-> PROM
    JOBS -. exporter .-> PROM
    PROM --> GRAF
    PROM --> ALERT

同一个后端镜像由多个容器使用,每个容器执行不同命令:

进程 职责
migration 启动前应用数据库结构,成功后退出。
backend 处理 HTTP、认证、校验和持久命令提交。
trading-worker 管理策略运行、待处理订单、券商会话和状态对账。
scheduler-worker 执行组合、部署、支付和信号相关的计划任务。
celery-worker 执行有限的 AI、回测、实验、报告和维护任务。
celery-beat 定期向 Celery 投递任务。

详细规则见后端进程职责架构说明并发模型

快速启动

方案 A:使用预构建镜像

前置条件:Docker 和 Compose v2。不需要本地安装 Node.js 或 Python 开发环境。

Linux 或 macOS:

curl -fsSL https://raw.githubusercontent.com/brokermr810/QuantDinger/main/install.sh | bash

Windows PowerShell:

irm https://raw.githubusercontent.com/brokermr810/QuantDinger/main/install.ps1 | iex

安装程序会要求设置初始管理员,生成必要密钥,下载 GHCR Compose 配置并启动服务。

启动后访问:

方案 B:从源码启动

git clone https://github.com/brokermr810/QuantDinger.git
cd QuantDinger
cp backend_api_python/env.example backend_api_python/.env
cp .env.example .env

首次启动前,必须替换两个环境文件里的示例值:

文件 生产环境必须设置的变量
backend_api_python/.env SECRET_KEYCREDENTIAL_ENCRYPTION_KEYADMIN_USERADMIN_PASSWORD
.env POSTGRES_PASSWORDREDIS_PASSWORDCELERY_REDIS_PASSWORDGRAFANA_ADMIN_PASSWORD

每个密钥应独立生成:

python -c "import secrets; print(secrets.token_hex(32))"

从本地后端源码启动核心服务:

docker compose up -d --build
docker compose ps

基础服务不会启动 Prometheus、Grafana 和 Alertmanager,从而避免普通开源安装 默认承担完整监控栈的资源开销。

Windows、国内镜像、数据库迁移等问题见 安装故障排查云部署指南

生产部署

启动前校验全部生产密钥:

python backend_api_python/scripts/check_production_config.py \
  --env-file .env \
  --env-file backend_api_python/.env

启用生产加固和可选监控:

docker compose \
  -f docker-compose.yml \
  -f docker-compose.production.yml \
  -f docker-compose.observability.yml \
  up -d --build

资源有限或已经接入外部监控时,可以去掉 docker-compose.observability.yml

生产规则:

  • 只通过 TLS 反向代理对外开放 80/443;
  • PostgreSQL、两套 Redis、Prometheus、Grafana、Alertmanager 不直接暴露公网;
  • 不使用示例密码,不允许核心加密密钥为空;
  • 备份 PostgreSQL 和持久化的 redis-jobs 数据卷;
  • 缓存 Redis 可以淘汰数据,但不能作为 Celery broker;
  • 每次部署后检查 API 就绪状态和 Worker 心跳。

完整清单见生产加固

本机服务地址

所有宿主机端口默认只绑定 127.0.0.1

服务 默认地址 用途
PC Web http://127.0.0.1:8888 PC 客户端和同源 API 代理。
移动 H5 http://127.0.0.1:8889 移动客户端和同源 API 代理。
后端 API http://127.0.0.1:5000 API 与健康检查。
Grafana http://127.0.0.1:3000 监控仪表盘,需要可观测性覆盖层。
Prometheus http://127.0.0.1:9090 指标采集、存储和查询,可选。
Alertmanager http://127.0.0.1:9093 告警分组、静默和通知,可选。

任务 Redis 和 exporter 等仅开放容器内部端口,不映射到宿主机。

可观测性

监控栈默认可选:

  • Prometheus 采集 API、Worker、PostgreSQL 和 Redis 指标;
  • Grafana 把指标展示为运维仪表盘;
  • Alertmanager 对告警分组、去重、静默,并在配置接收器后发送通知。

本地诊断时可以不启用生产覆盖层:

docker compose \
  -f docker-compose.yml \
  -f docker-compose.observability.yml \
  up -d

监控端口仍只绑定本机。远程管理应使用 VPN、SSH 隧道或带认证的反向代理。 仪表盘、规则、数据保留和通知配置见可观测性说明

安全模型

  • 券商凭据和 MFA 密钥使用稳定的 CREDENTIAL_ENCRYPTION_KEY 加密;
  • Agent Token 经过哈希、权限范围、限流和审计控制;
  • Agent 默认只能使用模拟盘,实盘需要 Token 和服务端同时授权;
  • 长期策略所有权通过租约、心跳和 fencing token 管理;
  • 生产容器使用非 root 用户并移除 Linux capabilities;
  • 默认端口只监听本机,公网入口应由 TLS 反向代理统一承接。

安全问题请按照 SECURITY.md 私下报告。不要在公开 Issue 中提供 凭据、账户信息或可以直接利用的漏洞细节。

策略与集成能力

领域 当前能力
指标 Python 图表覆盖、标记、区间和信号。
策略 Strategy API V2 意图、仓位、风控、回测和实盘运行。
加密货币 Binance、OKX、Bitget、Bybit、Gate、HTX、Coinbase Exchange、Kraken 及扩展适配器。
传统券商 IBKR 和 Alpaca 工作流。
AI 提供商 OpenRouter、OpenAI 兼容接口、Google、DeepSeek、Grok、MiniMax 和自定义端点。
自动化 Human API、Agent Gateway、MCP、Celery、计划任务和通知。

开发前建议阅读指标开发指南策略开发指南扩展指南

AI Agent 与 MCP

Agent Gateway 位于 /api/agent/v1。仓库内的 MCP Server 可以让 Cursor、 Claude Code、Codex 等客户端调用经过授权的工具,而不需要获得券商凭据或管理员 JWT。

Agent 实盘交易必须同时满足:

  1. Token 包含交易权限;
  2. Token 设置 paper_only=false
  3. 服务端设置 AGENT_LIVE_TRADING_ENABLED=true
  4. 运营者已经配置限额和白名单。

详细步骤见 MCP 配置Agent 快速入门Agent OpenAPI

开发与验证

后端使用 Python 3.12:

cd backend_api_python
python -m venv .venv
python -m pip install -r requirements-dev.txt
python -m pytest -m "not integration and not stress" --ignore=tests/release_gate -q
ruff check app scripts tests

仓库级检查:

python scripts/check_version.py
python scripts/check_mojibake.py
docker compose -f docker-compose.yml config -q
docker compose -f docker-compose.yml -f docker-compose.production.yml -f docker-compose.observability.yml config -q

修改 API 时应遵守 API 契约规范,按需重新生成 OpenAPI, 并通过兼容性检查。

仓库结构

这个仓库包含后端应用、独立 Worker、部署编排、运维配置、工程文档和 MCP Server。 PC Web 与移动端源码位于各自独立的仓库;本仓库通过 Compose 使用它们发布的镜像。

QuantDinger/
|-- .github/workflows/                 CI、安全、兼容性与发布检查
|-- backend_api_python/                后端应用及全部后端进程
|   |-- app/
|   |   |-- __init__.py                Flask 应用工厂与基础装配
|   |   |-- startup.py                 按进程职责执行启动钩子并管理进程内单例
|   |   |-- celery_app.py              Celery 应用与任务注册
|   |   |-- commands/                  迁移、调度、交易 Worker 与健康检查入口
|   |   |-- config/                    数据库、Redis 和供应商的环境配置
|   |   |-- routes/                    面向 Web 和移动端的 HTTP API 路由外壳
|   |   |   `-- agent_v1/              /api/agent/v1 下的受限 Agent Gateway API
|   |   |-- openapi/                   OpenAPI Schema、标签、注册与导出
|   |   |-- services/                  领域流程与第三方集成
|   |   |   |-- live_trading/          统一封装的加密交易所适配器
|   |   |   |-- alpaca_trading/        Alpaca 券商集成
|   |   |   |-- ibkr_trading/          Interactive Brokers 集成
|   |   |   |-- strategy_runtime/      策略信号、意图、执行和状态
|   |   |   `-- strategy_v2/           带版本的策略契约与运行服务
|   |   |-- data_sources/              原始行情数据源适配器
|   |   |-- data_providers/            行情、宏观、新闻和情绪聚合服务
|   |   |-- markets/                   市场与标的代码标准化
|   |   |-- tasks/                     有限、可重试的 Celery 任务
|   |   |-- workers/                   长期运行的 Worker 进程外壳
|   |   |-- runtime/                   进程角色与任务归属辅助模块
|   |   |-- observability/             请求上下文、指标和 HTTP 监控
|   |   `-- utils/                     数据库、缓存、认证和日志等底层工具
|   |-- migrations/                    PostgreSQL 结构与种子数据迁移
|   |-- scripts/                       后端维护和校验脚本
|   |-- tests/                         单元、契约、集成与发布门禁测试
|   |-- run.py                         本地 Flask 与 Gunicorn 应用入口
|   |-- Dockerfile                     API 和 Worker 共用的后端镜像
|   `-- docker-entrypoint.sh           容器命令分发入口
|-- docs/
|   |-- architecture/                  模块边界、并发、API 与扩展设计
|   |-- deployment/                    安装、生产部署与可观测性运维
|   |-- trading/                       策略和指标开发指南
|   |-- api/                           Human API 文档
|   `-- agent/                         Agent Gateway 与 MCP 文档
|-- mcp_server/                        独立的 QuantDinger MCP Server 包
|   |-- src/quantdinger_mcp/           MCP Server 与安全实现
|   `-- tests/                         MCP 契约与安全测试
|-- ops/                               运行与监控配置
|   |-- prometheus/                    采集配置和告警规则
|   |-- grafana/                       数据源和仪表盘自动配置
|   `-- alertmanager/                  告警路由配置
|-- scripts/                           仓库级版本、编码和安装检查
|-- docker-compose.yml                 本地源码核心服务
|-- docker-compose.ghcr.yml            预构建镜像安装服务
|-- docker-compose.production.yml      生产加固覆盖层
|-- docker-compose.observability.yml   可选监控覆盖层
|-- install.sh / install.ps1           Linux、macOS 与 Windows 安装脚本
`-- VERSION                            唯一的源码版本声明

主要执行链路

场景 仓库内执行路径
同步 API 请求 app/routesapp/services → 数据库、缓存、行情源或交易适配器
持久化策略命令 API 路由 → PostgreSQL 命令记录 → trading-worker → 策略运行时与券商适配器
有限后台任务 API 或 Celery beat → Job Redis → celery-worker 中的 app/tasks → PostgreSQL 结果
定时领域任务 app/commands/scheduler.py → 调度服务 → 持久状态与通知
监控链路 API 与 Worker → app/observability 指标 → Prometheus → Grafana 与 Alertmanager
Agent 或 MCP 调用 MCP 客户端 → mcp_server/api/agent/v1 → 与 Human API 共用的服务层

长期运行的交易循环归 trading-worker 管理;有限且可重试的工作交给 Celery。 HTTP 路由只负责校验、鉴权和结果映射,不应承载交易循环、交易所专属逻辑或大型数据库流程。

修改功能时应该去哪里

修改类型 主要位置 通常还要同步更新
新增或修改 HTTP 接口 backend_api_python/app/routes/ app/openapi/、路由或契约测试、API 文档
新增业务流程 backend_api_python/app/services/ 对应的服务测试
新增加密交易所或券商 app/services/live_trading/ 或对应券商包 凭证策略、适配器测试、接入文档
新增行情数据源 app/data_sources/ 聚合服务、缓存键、数据源测试
新增看板、新闻或宏观数据聚合 app/data_providers/ 路由外壳与缓存策略
新增有限异步任务 app/tasks/ celery_app.py、队列路由、任务测试
新增长期运行进程行为 app/workers/app/commands/app/runtime/ Compose 命令、健康检查、归属测试
修改数据库结构 backend_api_python/migrations/ 迁移测试、发布门禁与相关文档
新增指标或告警 app/observability/ops/ 仪表盘、告警规则、可观测性文档
新增 MCP 工具 mcp_server/src/quantdinger_mcp/ Agent Gateway Scope、安全测试、Agent 文档

Web 和移动端源码仓库独立发布 GHCR 镜像,只有从源码构建客户端时才需要 Node.js。 更详细的归属规则见架构说明模块边界进程职责

文档导航

全部维护中文档见 docs/README.md

主题 文档
贡献者架构 架构说明
模块职责 模块边界
进程与任务职责 进程职责
生产运行 生产加固
指标与告警 可观测性
Human API 契约 API 规范
OpenAPI API 文档
策略开发 策略指南
指标开发 指标指南
MCP 与 Agent Agent 文档
云部署 云部署指南
安装问题 故障排查

参与贡献

提交 Pull Request 前请阅读 CONTRIBUTING.mdDEVELOPMENT.md。保持路由轻量,维护 API 兼容性,把长期任务放到 正确的进程,并为高风险修改补充针对性测试。

交易所合作邀请链接

以下链接属于邀请或返佣链接。用户通过链接注册后,QuantDinger 可能获得佣金或手续费返还。 这不会向用户额外收取独立费用;返佣资格和具体规则由各交易所决定,并可能随时调整。 注册前请仔细核对目标域名。

应用内也可以通过 个人中心 → 立即开户券商账户 → 立即开户 查看这些链接。

交易所 注册链接
Binance 注册开户
Bitget 注册开户
Bybit 注册开户
OKX 注册开户
Gate.io 注册开户
HTX 注册开户

许可与商业说明

  • 后端源代码采用 Apache License 2.0
  • QuantDinger 是 Open Byte Inc 的产品,名称、Logo、产品身份和商业授权与代码许可分开管理。
  • Web 前端源码发布在 QuantDinger Frontend,适用其独立的源码可用许可证。
  • 移动端 H5 和原生客户端源码发布在 QuantDinger Mobile,适用其独立的源码可用许可证。
  • 商标、品牌、署名和水印的使用规则见 TRADEMARKS.md。 Apache 2.0 不授予 QuantDinger 商标使用权。

如需商业授权、前端源码、品牌授权或部署支持,可通过以下方式联系:

法律声明与合规提示

QuantDinger 仅用于合法的研究、教育和合规交易场景,不得用于欺诈、市场操纵、 逃避制裁、洗钱或其他违法活动。部署者和使用者有责任遵守所在司法辖区适用的法律法规、 许可要求、税务规则、券商或交易所条款以及数据合规要求。

本项目不提供法律、税务、投资、金融或监管建议。 交易行为,包括自动化交易和杠杆交易, 可能造成部分或全部本金损失。历史行情、回测结果、模拟结果、AI 输出、指标和策略示例均不代表 或保证未来表现。启用实盘前,使用者必须独立审查策略逻辑、API 权限、订单限制和风险控制。

本软件依照适用许可证提供,使用风险由部署者和使用者自行承担。在法律允许的最大范围内, 项目维护者和贡献者不对因使用或误用本软件产生的交易亏损、数据丢失、服务中断、第三方服务故障、 安全事件或监管后果承担责任。

社区与支持

Telegram Discord YouTube X

支持项目

如果 QuantDinger 对你有帮助,欢迎点一个 GitHub Star、参与贡献或通过打赏支持持续开发与基础设施费用。

加密货币打赏地址:

0x96fa4962181bea077f8c7240efe46afbe73641a7

链上转账不可撤销。发送前请与项目维护者确认地址和目标网络。

Star 趋势

Star History Chart

鸣谢

QuantDinger 建立在优秀的开源生态之上,特别感谢以下项目的维护者和贡献者:

P.S.——关于名字

QuantDinger 是向物理学家 薛定谔(Erwin Schrödinger) 的一份小小致敬——名字里的“-dinger”,正是“Schrödinger”的尾巴。盒子里的猫是一个思想实验; 每一条尚未下单的策略,都是它的小型版本——在订单真正成交之前,既盈利也亏损。 回测打开盒子,实盘交易让波函数坍缩。请谨慎交易。

如果 QuantDinger 对你有帮助,欢迎点一个 GitHub Star。