跳到主要内容

架构与项目结构

内置能力模块

单循环运行时的完整链路:

  • 策略层strategy_sdkStrategy + populate_indicators + on_bar → Signal)、strategy_runtime 编译器(AST 校验、防前视、required_history 一致性检查)
  • 执行层execution:订单意图校验 → 风控引擎 → 审批闸门 → 执行适配器(PaperExecutionAdapter 内存撮合 / QmtExecutionAdapter 真实下单)
  • 回测引擎backtest:与实盘同构,支持 walk-forward / 样本外验证 / 迭代建议
  • AI 助手assistant:主 Agent + in-process 工具 + CLI 工具面 + Skill 加载 + Cron 调度
  • 多智能体 swarmswarm:DAG 编排 + preset 投研团(investment_committee / quant_strategy_desk)
  • 可观测性observability / debug:OpenTelemetry span 导出、调试会话、模型调用记录,全部按 run_id 贯穿

React 控制台页面

frontend/ · React 18 + Vite + TypeScript:

页面用途
Assistant对话式选股 / 写策略 / 回测,含 trace / 工具调用 / debug 导出
MarketReview(打板复盘)情绪温度计 / 连板梯队 / 龙虎榜 / 资金流 / 题材热度一页看盘
Knowledge(复盘工作台)交割单归因 / 知识图谱(邻域 · 寻路 · 溯源)/ 战法库 / 全库文件(本地私有)
Tasks / TaskDetail交易任务生命周期、回测配置与结果
Strategies策略定义(sd-…)管理与源码查看
AccountsQMT 连接与账户配置(accounts 表唯一来源)
Agents / ModelSettings智能体配置、模型 Provider / Route
Settings(设置)系统全局配置与 QMT 服务端配置在网页里直接改
Approvals需审批订单的人工审批
Stocks / StockDetail / StockMonitor行情、个股详情、盘中监控
Watchlist / CronJobs自选股(含盘口列)、定时任务
ModelInvocations / Swarm模型调用日志、多智能体运行

可观测性贯穿关系

每一次 cycle / 回测 / 模型调用都可按 run_id 或 OpenTelemetry trace_id 追溯:

cycle_runs ↔ debug_sessions ↔ debug_session_spans ↔ model_invocations ↔ trade_fills

排查时用 doyoutrade-cli debug get-run-view <run_id> / get-trace-view <trace_id> 拉三层 span(HTTP / 数据层 / SDK 层)。

项目结构

doyoutrade/
├── core/ # 单循环 TradingWorker + CycleRunState(run_id 起点)
├── strategy_sdk/ # 策略 SDK
├── strategy_runtime/# 策略编译器:AST 校验、防前视
├── execution/ # 订单意图 → 风控 → 审批 → 执行适配器
├── data/ # 多源数据层与 auto 降级
├── backtest/ # 回测引擎(与实盘同构)
├── assistant/ # AI 助手主 Agent、prompt、工具面
├── knowledge/ # 私有知识库与图谱
├── swarm/ # 多智能体 DAG 编排
├── tools/ # in-process 工具
├── observability/ # OpenTelemetry
├── debug/ # 调试会话与结构化事件
├── models/ # 模型调用记录
├── persistence/ # SQLAlchemy 模型 / repository / serializer
├── api/ # FastAPI app
└── cli/ # doyoutrade-cli

frontend/ # React 控制台
qmt-proxy/ # Windows 端 QMT REST 代理
alembic/ # 数据库迁移
docs/ # 设计文档、E2E 指南
tests/ # stdlib unittest + E2E

测试与进阶文档

make test # Python 单元测试
make test-e2e # E2E(isolated profile)
npm --prefix frontend run build # 前端 type check
npm --prefix frontend run test # 前端 vitest

源码仓库内: