Signed-off-by: TIANHE <TIANHE@GMAIL.COM>
27 KiB
QuantDinger
下一代 AI 量化交易平台
🤖 AI 原生 · 🐍 可视化 Python · 🌍 全球多市场 · 🔒 隐私优先
拥有 AI 副驾驶的构建、回测与交易平台。比 PineScript 更强,比 SaaS 更智能。
📖 简介
QuantDinger 是什么?
QuantDinger 是一个本地优先、隐私优先、自托管的量化交易基础设施。它运行在你的机器/服务器上,提供 PostgreSQL 支持的多用户账号体系,同时让你完全控制自己的策略、交易数据和 API 密钥。
为什么选择本地优先?
与将你的数据和策略锁定在云端的 SaaS 平台不同,QuantDinger 在本地运行。你的策略、交易日志、API 密钥和分析结果都保留在你的机器上。没有供应商锁定,没有订阅费用,没有数据泄露风险。
适合谁使用?
QuantDinger 为以下用户而构建:
- 重视数据主权和隐私的交易员、研究员和工程师
- 需要透明、可审计的交易基础设施
- 更偏好工程而非营销
- 需要完整的工作流:数据、分析、回测和执行
核心功能
QuantDinger 包含一个内置的基于 LLM 的多智能体研究系统,能够从网络收集金融情报,结合本地市场数据,生成分析报告。这与策略开发、回测和实盘交易工作流无缝集成。
核心价值
- 🔓 Apache 2.0 开源(代码):宽松且商业友好。你可以在 Apache 2.0 下 fork/修改代码,但需保留许可与署名等必要声明。
- 🐍 Python 原生 & 可视化:使用标准 Python 编写指标(比 PineScript 更简单),并由 AI 辅助。直接在图表上可视化信号——打造“本地版 TradingView”体验。
- 🤖 AI 闭环优化:不仅运行策略,AI 还会分析回测结果并建议参数调整(止损/止盈/MACD 设置),形成闭环优化。
- 🌍 全球市场接入:统一系统支持加密货币(实盘)、美股/A股、外汇和期货(数据/通知)。
- ⚡ Docker & 清晰架构:4 行命令极速部署。现代技术栈(Vue + Python),架构清晰,关注点分离。
📺 视频演示
📚 文档
开发指南
通知配置
📸 功能预览
🤖 AI 深度投研多智能体协作进行市场情绪与技术分析。
|
💬 智能交易助手通过自然语言接口获取即时市场洞察。
|
📈 交互式指标分析丰富的技术指标库,支持拖拽式分析。
|
🐍 Python 策略生成内置编辑器,支持 AI 辅助策略代码编写。
|
📊 资产监测追踪持仓、设置预警,并通过邮件/Telegram 接收 AI 分析报告。
|
|
✨ 关键特性
1. 可视化 Python 策略工作台
比 PineScript 更强,比 SaaS 更智能。
- Python 原生:用 Python 编写指标和策略。利用完整的 Python 生态(Pandas, Numpy, TA-Lib),而不是 PineScript 这种专用语言。
- "Mini-TradingView" 体验:直接在内置的 K 线图上运行你的 Python 指标。在历史数据上可视化调试买卖信号。
- AI 辅助编程:让内置 AI 为你编写复杂的逻辑。从创意到代码只需几秒钟。
2. 完整的交易生命周期
从指标到执行,无缝衔接。
- 指标:定义你的市场入场/出场信号。
- 策略配置:附加风险管理规则(仓位管理、止损、止盈)。
- 回测 & AI 优化:运行回测,查看丰富的性能指标,并让 AI 分析结果以建议改进(例如:“调整 MACD 阈值为 X”)。
- 执行模式:
- 实盘交易:
- 加密货币:直接 API 执行,支持 10+ 交易所(Binance, OKX, Bitget, Bybit 等)
- 美股/港股:通过盈透证券 (IBKR) 🆕
- 外汇:通过 MetaTrader 5 (MT5) 🆕
- 信号通知:针对不支持实盘交易的市场(A股/期货),通过 Telegram, Discord, Email, SMS 或 Webhook 发送信号。
- 实盘交易:
3. AI 智能分析
快速、准确、专业的分析报告。
QuantDinger 具备精简高效的 AI 分析系统:
- 快速分析模式:单次 LLM 调用架构,快速准确地生成分析(替代复杂的多智能体系统)
- 全球市场集成:实时市场数据、热力图和财经日历集成到分析页面
- 基于 ATR 的交易建议:止损和止盈建议基于技术分析(ATR、支撑/阻力位)
- 分析记忆系统:存储分析结果用于历史回顾和持续学习
- 策略集成:AI 分析可作为策略的"市场过滤器"
4. 通用数据引擎
QuantDinger 提供跨多个市场的统一数据接口:
- 加密货币:直接 API 连接进行交易(10+ 交易所)和 CCXT 集成获取行情数据(100+ 数据源)
- 股票:Yahoo Finance、Finnhub、Tiingo(美股)和 AkShare(A股/港股)
- 期货/外汇:OANDA 和主要期货数据源
- 代理支持:内置代理配置,适应受限网络环境
5. 🧠 AI 记忆增强系统(Memory-Augmented Agents)
QuantDinger 的多智能体不是“每次从零开始”。它内置了一个本地记忆库 + 反思闭环,让每个智能体在生成提示词(prompt)时能检索过往经验,并在事后验证/复盘后把结果写回记忆库。
- 本质:RAG 风格的“经验检索增强”,不是训练/微调模型权重(零外部向量库依赖)。
- 隐私:所有记忆与反思记录默认落盘在本地 SQLite:
backend_api_python/data/memory/。
逻辑图(从请求到记忆闭环)
flowchart TB
%% ===== 🌐 入口层 =====
subgraph Entry["🌐 API 入口"]
A["📡 POST /api/analysis/multi"]
A2["🔄 POST /api/analysis/reflect"]
end
%% ===== ⚙️ 服务编排层 =====
subgraph Service["⚙️ 服务编排"]
B[AnalysisService]
C[AgentCoordinator]
D["📊 构建上下文<br/>price · kline · news · indicators"]
end
%% ===== 🤖 多智能体工作流 =====
subgraph Agents["🤖 多智能体工作流"]
subgraph P1["📈 Phase 1 · 多维分析(并行)"]
E1["🔍 MarketAnalyst<br/><i>技术面分析</i>"]
E2["📑 FundamentalAnalyst<br/><i>基本面分析</i>"]
E3["📰 NewsAnalyst<br/><i>新闻舆情</i>"]
E4["💭 SentimentAnalyst<br/><i>市场情绪</i>"]
E5["⚠️ RiskAnalyst<br/><i>风险评估</i>"]
end
subgraph P2["🎯 Phase 2 · 多空博弈(并行)"]
F1["🐂 BullResearcher<br/><i>看多论据</i>"]
F2["🐻 BearResearcher<br/><i>看空论据</i>"]
end
subgraph P3["💹 Phase 3 · 交易决策"]
G["🎰 TraderAgent<br/><i>综合研判 → BUY / SELL / HOLD</i>"]
end
end
%% ===== 🧠 记忆层 =====
subgraph Memory["🧠 本地记忆库 SQLite(data/memory/)"]
M1[("market_analyst")]
M2[("fundamental")]
M3[("news_analyst")]
M4[("sentiment")]
M5[("risk_analyst")]
M6[("bull_researcher")]
M7[("bear_researcher")]
M8[("trader_agent")]
end
%% ===== 🔄 反思闭环 =====
subgraph Reflect["🔄 反思闭环(可选)"]
R[ReflectionService]
RR[("reflection_records.db")]
W["⏰ ReflectionWorker"]
end
%% ===== 主流程 =====
A --> B --> C --> D
D --> P1 --> P2 --> P3
%% ===== 记忆读写 =====
E1 <-.-> M1
E2 <-.-> M2
E3 <-.-> M3
E4 <-.-> M4
E5 <-.-> M5
F1 <-.-> M6
F2 <-.-> M7
G <-.-> M8
%% ===== 反思流程 =====
C --> R --> RR
W --> RR
W -.->|"验证 + 学习"| M8
A2 -.->|"手动复盘"| M8
1) 记忆是如何“注入提示词”的?
每个 agent 在 analyze() 时会:
- 构造 situation:例如
"{market}:{symbol} fundamental analysis"、"{market}:{symbol} trading decision"等 - 携带结构化 metadata:
market/symbol/timeframe+memory_features(价格、涨跌幅、技术指标等) - 检索 Top-K 历史经验:转成一段可读的
memory_prompt - 拼进 system_prompt:模型在做本次分析前先“读历史经验”
你可以在这些文件里看到同样的模式:
backend_api_python/app/services/agents/base_agent.py:get_memories()+format_memories_for_prompt()backend_api_python/app/services/agents/*_agents.py、trader_agent.py:把memory_prompt拼进 system prompt
2) 记忆检索算法(为什么“像”RAG?)
每个角色的记忆表保存(简化):
- situation / recommendation / result / returns
- market / symbol / timeframe / features_json
- embedding(可选 BLOB):本地“哈希向量”嵌入(无外部依赖)
检索时会从最近 AGENT_MEMORY_CANDIDATE_LIMIT 条候选中打分排序:
[
score = w_{sim}\cdot sim + w_{recency}\cdot recency + w_{returns}\cdot returns_score
]
- sim:默认用 embedding cosine,相同维度的本地哈希向量;没有 embedding 时退化为 difflib 文本相似度
- recency:半衰期衰减(
AGENT_MEMORY_HALF_LIFE_DAYS) - returns_score:对收益做
tanh压缩,避免极值支配排序 - timeframe 惩罚:如果查询 timeframe 与记忆记录 timeframe 不一致,会额外扣分
3) “学习”从哪里来?(两条写入通道)
- 自动反思(可选):
- 分析结束后,系统会把 BUY/SELL/HOLD 记录到
reflection_records.db - 开启
ENABLE_REFLECTION_WORKER=true后,后台线程会按REFLECTION_WORKER_INTERVAL_SEC轮询到期记录,拉取最新价格做验证,并把验证结果写回trader_agent_memory.db
- 分析结束后,系统会把 BUY/SELL/HOLD 记录到
- 手动复盘(推荐):
- 调用
POST /api/analysis/reflect,把你的真实交易结果(returns/result)写回记忆库,用于后续决策增强
- 调用
4) 关键环境变量(.env)
- ENABLE_AGENT_MEMORY:是否启用记忆增强(默认 true)
- AGENT_MEMORY_TOP_K:每次注入的经验条数(默认 5)
- AGENT_MEMORY_CANDIDATE_LIMIT:候选池大小(默认 500)
- AGENT_MEMORY_ENABLE_VECTOR:是否启用 embedding cosine(默认 true;否则退化为文本相似)
- AGENT_MEMORY_EMBEDDING_DIM:哈希 embedding 维度(默认 256)
- AGENT_MEMORY_HALF_LIFE_DAYS:时间衰减半衰期(默认 30)
- AGENT_MEMORY_W_SIM / W_RECENCY / W_RETURNS:三项权重(默认 0.75 / 0.20 / 0.05)
- ENABLE_REFLECTION_WORKER:是否启用自动验证闭环(默认 false)
- REFLECTION_WORKER_INTERVAL_SEC:自动验证周期(默认 86400 秒)
6. 策略运行时
- 基于线程的执行器:独立的线程池用于策略执行
- 自动恢复:系统重启后恢复运行中的策略
- 订单队列:后台工作线程用于订单执行
7. 多LLM提供商支持
QuantDinger 支持多个 AI 提供商,具备自动检测功能:
| 提供商 | 特点 |
|---|---|
| OpenRouter | 多模型网关(默认),100+ 模型 |
| OpenAI | GPT-4o, GPT-4o-mini |
| Google Gemini | Gemini 1.5 Flash/Pro |
| DeepSeek | DeepSeek Chat(性价比高) |
| xAI Grok | Grok Beta |
只需在 .env 中配置您首选提供商的 API 密钥,系统会自动检测可用提供商。
8. 指标社区
分享、发现、交易指标。
- 发布与分享:与社区分享你的 Python 指标
- 购买系统:从其他用户购买优质付费指标
- 评分与评论:对购买的指标进行评分和评论
- 管理员审核:质量控制的审核系统
9. 用户管理与安全
- 多用户支持:基于 PostgreSQL 的用户账户,支持基于角色的权限管理
- OAuth 登录:Google 和 GitHub OAuth 集成
- 邮箱验证:通过邮箱验证码进行注册和密码重置
- 安全功能:Cloudflare Turnstile 人机验证、IP/账户速率限制
- 演示模式:用于公开演示的只读模式
10. 技术栈
- 后端:Python (Flask) + PostgreSQL + Redis(可选)
- 前端:Vue 2 + Ant Design Vue + KlineCharts/ECharts
- 部署:Docker Compose
- 当前版本:V2.1.1 (更新日志)
🔌 支持的交易所和券商
QuantDinger 支持多种市场类型的执行方式:
加密货币交易所(直接 API)
| 交易所 | 市场 |
|---|---|
| Binance | 现货, 合约, 杠杆 |
| OKX | 现货, 永续, 期权 |
| Bitget | 现货, 合约, 跟单交易 |
| Bybit | 现货, 线性合约 |
| Coinbase Exchange | 现货 |
| Kraken | 现货, 合约 |
| KuCoin | 现货, 合约 |
| Gate.io | 现货, 合约 |
| Bitfinex | 现货, 衍生品 |
| Deepcoin | 现货, 永续 |
传统券商
| 券商 | 市场 | 平台 |
|---|---|---|
| 盈透证券 (IBKR) | 美股, 港股 | TWS / IB Gateway 🆕 |
| MetaTrader 5 (MT5) | 外汇 | MT5 终端 🆕 |
行情数据(通过 CCXT)
Bybit、Gate.io、Kraken、KuCoin、HTX 以及 100+ 其他交易所用于行情数据。
多语言支持
QuantDinger 为全球用户构建,提供全面的国际化支持:
所有 UI 元素、错误信息和文档均已完全翻译。语言会根据浏览器设置自动检测,也可以在应用中手动切换。
支持的市场
| 市场类型 | 数据源 | 交易 |
|---|---|---|
| 加密货币 | Binance, OKX, Bitget, + 100 交易所 | ✅ 全面支持 |
| 美股 | Yahoo Finance, Finnhub, Tiingo | ✅ 通过盈透证券 🆕 |
| 港股 | AkShare, 东方财富 | ✅ 通过盈透证券 🆕 |
| A股 | AkShare, 东方财富 | ⚡ 仅数据 |
| 外汇 | Finnhub, OANDA | ✅ 通过 MT5 🆕 |
| 期货 | 交易所 API, AkShare | ⚡ 仅数据 |
架构 (当前仓库)
┌─────────────────────────────┐
│ quantdinger_vue │
│ (Vue 2 + Ant Design Vue) │
└──────────────┬──────────────┘
│ HTTP (/api/*)
▼
┌─────────────────────────────┐
│ backend_api_python │
│ (Flask + 策略运行时) │
└──────────────┬──────────────┘
│
├─ PostgreSQL(多用户支持)
├─ Redis (可选缓存)
└─ 数据提供商 / LLMs / 交易所
仓库目录结构
.
├─ backend_api_python/ # Flask API + AI + 回测 + 策略运行时
│ ├─ app/
│ ├─ env.example # 复制为 .env 进行本地配置
│ ├─ requirements.txt
│ └─ run.py # 入口点
└─ quantdinger_vue/ # Vue 2 UI (开发服务器代理 /api -> 后端)
快速开始
选项 1: Docker 部署 (推荐)
运行 QuantDinger 最快的方式。
1. 一键启动
Linux / macOS
git clone https://github.com/brokermr810/QuantDinger.git && \
cd QuantDinger && \
cp backend_api_python/env.example backend_api_python/.env && \
docker-compose up -d --build
Windows (PowerShell)
git clone https://github.com/brokermr810/QuantDinger.git
cd QuantDinger
Copy-Item backend_api_python\env.example -Destination backend_api_python\.env
docker-compose up -d --build
2. 访问与配置
- 前端 UI: http://localhost:8888
- 默认账号:
quantdinger/123456
注意:为了使用 AI 功能或生产环境安全,请编辑
backend_api_python/.env(添加OPENROUTER_API_KEY,修改密码),然后执行docker-compose restart backend重启服务。
3. 访问应用
- 前端 UI: http://localhost
- 后端 API: http://localhost:5000
Docker 命令参考
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
# 停止并删除卷 (警告:会删除数据库!)
docker-compose down -v
数据持久化
以下数据挂载到主机,重启容器后依然保留:
volumes:
- ./backend_api_python/logs:/app/logs # 日志
- ./backend_api_python/data:/app/data # 数据目录(包含 quantdinger.db)
- ./backend_api_python/.env:/app/.env # 配置文件
选项 2: 本地开发
先决条件
- 推荐 Python 3.10+
- 推荐 Node.js 16+
1. 启动后端 (Flask API)
cd backend_api_python
pip install -r requirements.txt
cp env.example .env # Windows: copy env.example .env
python run.py
后端将在 http://localhost:5000 上可用。
2. 启动前端 (Vue UI)
cd quantdinger_vue
npm install
npm run serve
前端开发服务器运行在 http://localhost:8000 并将 /api/* 代理到 http://localhost:5000。
配置 (.env)
使用 backend_api_python/env.example 作为模板。常用设置包括:
- 认证:
SECRET_KEY,ADMIN_USER,ADMIN_PASSWORD - 服务器:
PYTHON_API_HOST,PYTHON_API_PORT,PYTHON_API_DEBUG - 数据库:
DATABASE_URL(PostgreSQL 连接字符串) - AI / LLM:
LLM_PROVIDER(openrouter/openai/google/deepseek/grok), 各提供商 API 密钥 - OAuth:
GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET,GITHUB_CLIENT_ID,GITHUB_CLIENT_SECRET - 安全:
TURNSTILE_SITE_KEY,TURNSTILE_SECRET_KEY,ENABLE_REGISTRATION - 网络搜索:
SEARCH_PROVIDER,SEARCH_GOOGLE_*,SEARCH_BING_API_KEY - 订单执行:
ORDER_MODE(maker/market),MAKER_WAIT_SEC,MAKER_OFFSET_BPS - 代理 (可选):
PROXY_PORT或PROXY_URL - 后台服务:
ENABLE_PENDING_ORDER_WORKER,ENABLE_PORTFOLIO_MONITOR
🤝 社区与支持
- 贡献: 贡献指南 · 贡献者
- Telegram: QuantDinger 群组
- Discord: 加入服务器
- 📺 视频演示: 项目介绍
- YouTube: @quantdinger
- Email: brokermr810@gmail.com
- GitHub Issues: 报告 Bug / 功能请求
💼 商业授权与赞助(Commercial License & Sponsorship)
QuantDinger 的代码使用 Apache License 2.0 授权。但需要注意:Apache 2.0 不授予商标权。QuantDinger 的名称/Logo/品牌标识受商标与品牌政策约束(与代码许可分离):
- 版权/署名:你必须保留必要的版权与许可声明(例如仓库中的 LICENSE/NOTICE 等,以及代码中的署名信息)。
- 商标(名称/Logo/品牌):你不得使用 QuantDinger 的名称/Logo/品牌来暗示背书或误导来源;若再发布修改版,一般需要移除/替换 QuantDinger 品牌标识,除非获得书面许可。
如果你希望在再发布版本中保留/修改 QuantDinger 品牌展示(包括 UI 品牌、Logo 使用等),请联系我们获取 商业授权。
另见:TRADEMARKS.md
商业授权可获得
- 品牌/版权展示的商用授权(以双方约定为准)
- 运维支持:部署、升级、故障处理与维护建议
- 咨询服务:架构评审、性能调优、策略工作流咨询
- 赞助商权益:成为项目赞助商,可按约定展示你的 Logo/广告(README/官网/应用内等)
联系方式
- Telegram: QuantDinger Group
- Email: brokermr810@gmail.com
💝 直接支持(捐赠)
你的贡献帮助我们维护和改进 QuantDinger。
加密货币捐赠 (ERC-20 / BEP-20 / Polygon / Arbitrum)
0x96fa4962181bea077f8c7240efe46afbe73641a7
🎓 支持伙伴
我们很荣幸获得推动量化金融教育和研究的学术机构和组织的支持。
💡 有兴趣成为支持伙伴吗? 我们欢迎与大学、研究机构和组织合作。请通过 brokermr810@gmail.com 或 Telegram 联系我们。
致谢
QuantDinger 站在这些伟大的开源项目肩膀之上:Flask, Pandas, CCXT, Vue.js, Ant Design Vue, KlineCharts 等。
感谢所有维护者和贡献者! ❤️






