Files
DinQuant/README_CN.md
T
TIANHE 0b37aa4a67 V2.1.1
Signed-off-by: TIANHE <TIANHE@GMAIL.COM>
2026-01-31 02:59:49 +08:00

27 KiB
Raw Blame History


QuantDinger Logo

QuantDinger

下一代 AI 量化交易平台

🤖 AI 原生 · 🐍 可视化 Python · 🌍 全球多市场 · 🔒 隐私优先

拥有 AI 副驾驶的构建、回测与交易平台。比 PineScript 更强,比 SaaS 更智能。

官方社区 · 在线演示 · 📺 视频演示 · 🌟 加入我们

License Python Vue Docker Stars

Telegram Group Discord X


📖 简介

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),架构清晰,关注点分离。

📺 视频演示

QuantDinger 项目介绍视频

点击上方视频观看 QuantDinger 项目介绍


📚 文档

开发指南

通知配置

📸 功能预览

🗺️ 系统架构总览

QuantDinger AI 驱动的研究、回测和自动化交易功能全景图。

QuantDinger 系统拓扑图

📊 专业量化仪表盘

实时监控市场动态、资产状况和策略状态。

QuantDinger Dashboard

🤖 AI 深度投研

多智能体协作进行市场情绪与技术分析。

AI Market Analysis

💬 智能交易助手

通过自然语言接口获取即时市场洞察。

Trading Assistant

📈 交互式指标分析

丰富的技术指标库,支持拖拽式分析。

Indicator Analysis

🐍 Python 策略生成

内置编辑器,支持 AI 辅助策略代码编写。

Code Generation

📊 资产监测

追踪持仓、设置预警,并通过邮件/Telegram 接收 AI 分析报告。

Portfolio Monitor

关键特性

1. 可视化 Python 策略工作台

比 PineScript 更强,比 SaaS 更智能。

  • Python 原生:用 Python 编写指标和策略。利用完整的 Python 生态(Pandas, Numpy, TA-Lib),而不是 PineScript 这种专用语言。
  • "Mini-TradingView" 体验:直接在内置的 K 线图上运行你的 Python 指标。在历史数据上可视化调试买卖信号。
  • AI 辅助编程:让内置 AI 为你编写复杂的逻辑。从创意到代码只需几秒钟。

2. 完整的交易生命周期

从指标到执行,无缝衔接。

  1. 指标:定义你的市场入场/出场信号。
  2. 策略配置:附加风险管理规则(仓位管理、止损、止盈)。
  3. 回测 & AI 优化:运行回测,查看丰富的性能指标,并让 AI 分析结果以建议改进(例如:“调整 MACD 阈值为 X”)。
  4. 执行模式
    • 实盘交易
      • 加密货币:直接 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(美股)和 AkShareA股/港股)
  • 期货/外汇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["🧠 本地记忆库 SQLitedata/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"
  • 携带结构化 metadatamarket/symbol/timeframe + memory_features(价格、涨跌幅、技术指标等)
  • 检索 Top-K 历史经验:转成一段可读的 memory_prompt
  • 拼进 system_prompt:模型在做本次分析前先“读历史经验”

你可以在这些文件里看到同样的模式:

  • backend_api_python/app/services/agents/base_agent.pyget_memories() + format_memories_for_prompt()
  • backend_api_python/app/services/agents/*_agents.pytrader_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
  • 手动复盘(推荐)
    • 调用 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 为全球用户构建,提供全面的国际化支持:

English Simplified Chinese Traditional Chinese Japanese Korean German French Thai Vietnamese Arabic

所有 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. 访问与配置

注意:为了使用 AI 功能或生产环境安全,请编辑 backend_api_python/.env(添加 OPENROUTER_API_KEY,修改密码),然后执行 docker-compose restart backend 重启服务。

3. 访问应用

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_PORTPROXY_URL
  • 后台服务: ENABLE_PENDING_ORDER_WORKER, ENABLE_PORTFOLIO_MONITOR

🤝 社区与支持


💼 商业授权与赞助(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/官网/应用内等)

联系方式


💝 直接支持(捐赠)

你的贡献帮助我们维护和改进 QuantDinger。

加密货币捐赠 (ERC-20 / BEP-20 / Polygon / Arbitrum)

0x96fa4962181bea077f8c7240efe46afbe73641a7

USDT ETH


🎓 支持伙伴

我们很荣幸获得推动量化金融教育和研究的学术机构和组织的支持。

印第安纳大学量化金融学会

量化金融学会 (QFS)
印第安纳大学布卢明顿分校
培养下一代量化金融专业人才

💡 有兴趣成为支持伙伴吗? 我们欢迎与大学、研究机构和组织合作。请通过 brokermr810@gmail.comTelegram 联系我们。


致谢

QuantDinger 站在这些伟大的开源项目肩膀之上:Flask, Pandas, CCXT, Vue.js, Ant Design Vue, KlineCharts 等。

感谢所有维护者和贡献者! ❤️