claude_dev f214e2f0e4
CI/CD / test (push) Failing after 12m2s
CI/CD / nas-deploy (push) Has been skipped
CI/CD / nas-verify (push) Has been skipped
fix(live): max_pool 全链默认 30→0(0=不限)——08-24巡检定罪MVP限流泄漏生产,选股池=代码序前30只失真 [vps]
根因(策略session 08-24 午休探针实证):runtime/live_strategy.py SANGUO_LIVE_MAX_POOL
默认30经env注入全部实盘+影子+paper实例,_stock_pool截断成份池为「代码序前30只」:
small_cap「全市场最小市值」实际在000001平安银行等30只固定代码里选(平安银行≈3800亿
出现在小市值买入=market_cap开盘NaN排序失效叠bug);momentum每行业RPS只在代码序前
30里排;value 0/30+零委托史同源。注释自曝「MVP验证用」=限流遗留泄漏生产,上线
首日起全部选股失真。

改动(9处默认位一致30→0;语义0=不限,与策略层max_pool>0才截断一致):
- sanguo_portfolio/live_strategy.py 适配器env默认+docstring
- sanguo_live/runner.py _portfolio_env_for(存量DB显式值不篡改,缺列/0→"0")
- sanguo_trader/shadow/supervisor.py 影子env默认
- sanguo_portfolio/runner_live.py live_env默认
- sanguo_trader/portfolio_paper.py + sanguo_api/routes_paper.py paper默认
- sanguo_api/routes_live.py create setdefault
- frontend live/paper New.vue 表单默认

测试:env mapping三态断言(缺列/0→"0",显式30不篡改)+live_env默认"0"
(RED→GREEN);CI范围642绿。存量实例DB仍存显式30,激活需配套DB迁移,必须与数据
session的get_security_info_batch SQL治本(101s→亚秒)同车部署——池放大×慢SQL=更糟。
2026-08-24 13:34:01 +08:00
feat(strategy): TODO#68-#75八项全做+导航自测——#68灯职责拆分:实走/影子在跑=直达/paper/live/{aid}监控页,实盘在跑=/live/monitor/{aid},未跑=发起;回放灯done=直达/paper/result/{aid}(run_meta.replay.account_id);#69回测任务按实例过滤:backtest_stats加instance_id列(ALTER迁移)+_write_back落列+GET /task?instance=N+任务中心过滤条+策略库「回测历史」按钮;回测灯done=直达最新结果页(run_meta.backtest.task_id按前缀分流),跑过无结果=任务中心过滤;#70模拟盘创建后直接跳列表(不跳结果/监控页);列宽重排(策略/实例150模式96频率60操作250,折行实测消除);#71列内容对齐实盘:策略/实例列显示实例名(instances映射,#id退化)+持仓数列(list_papers顺带count volume>0)+删创建时间列(净值日期已含);#72实盘名自动生成={实例名}_v{YYYYMMDD}{minor}(同实例同日递增,listLives计数);模拟盘名={实例名}·{模式};#73术语统一档案→实例(全局8文件UI文案+后端409提示,精确短语防误伤,spec比喻保留文档);#74MonacoDiff v4:优先monaco原生diff(差异高亮),挂载450ms自检original栏占比<30%自动降级双只读编辑器(滚动联动)——全屏模态下大概率吃到原生diff;#75收益标签与数值同源(retInfoOf:运行ret优先含kind,fallback run_returns,标签跟随数值来源,根治影子1044%实为回测收益挂影子标签);927绿+build绿+dev浏览器自测:策略库6入口(回测历史/模拟历史/实盘历史/回测灯/实走灯直达监控/组合无回放)与模拟盘列表新列全过 [vps]
2026-08-16 09:34:39 +08:00

Sanguo VeighNa 量化交易平台 v2.0

基于 VeighNa 4.4.0 的二次开发量化交易平台,支持 Web 界面和 Docker 容器化部署。

特性

  • 🚀 基于 VeighNa 4.4.0 - 最新稳定版本
  • 🌐 Web 界面 - FastAPI + WebSocket 实时数据推送
  • 🐳 Docker 部署 - 支持 Synology NAS 等容器环境
  • 📊 完整功能 - 行情订阅、交易下单、策略管理
  • 🔐 安全认证 - JWT Token 认证机制
  • 📡 实时推送 - WebSocket 行情、成交、持仓实时更新

项目结构

sanguo_vnpy_v2/
├── vnpy_v4.4.0/              # VeighNa 上游源码
├── sanguo_trader/             # 核心交易模块
├── sanguo_research/           # 量化投研模块
├── sanguo_data/               # 数据管理模块
├── sanguo_common/             # 公共模块
├── sanguo_web/                # Web 服务模块
│   ├── api/                   # REST API
│   ├── websocket/             # WebSocket 服务
│   └── services/              # 业务服务
├── docker/                    # Docker 配置
│   ├── Dockerfile             # 镜像构建
│   ├── docker-compose.yml     # 容器编排
│   ├── entrypoint.sh          # 启动脚本
│   └── deploy-synology.sh     # NAS 部署脚本
├── tests/                     # 测试代码
├── docs/                      # 文档
└── examples/                  # 示例代码

快速开始

方式 1: Docker 部署(推荐)

本地开发

# 构建镜像
cd docker
docker-compose build

# 启动服务
docker-compose up -d

# 访问 Web 界面
open http://localhost:8000

Synology NAS 部署

  1. 开启 SSH 服务
  2. 上传部署包到 NAS
  3. 运行部署脚本:
cd /volume1/docker/containers/sanguo_vnpy_v2/docker
sudo bash deploy-synology.sh

详细说明请参考 Synology NAS 部署指南

方式 2: 本地开发

环境要求

  • Python 3.10+
  • 推荐 Python 3.13

安装步骤

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate   # Windows

# 安装依赖
pip install -r requirements/base.txt

# 启动 Web 服务
python run_web.py

Web 服务启动

# 开发模式(端口 8002
python run_web.py

# 生产模式
uvicorn sanguo_web.api:app --host 0.0.0.0 --port 8000 --workers 2

API 文档

启动服务后访问:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

认证

默认登录凭据:

  • 用户名: admin
  • 密码: admin123

⚠️ 重要: 首次登录后请立即修改密码!

WebSocket 连接

// 连接 WebSocket
const ws = new WebSocket('ws://localhost:8080');

// 订阅行情
ws.send(JSON.stringify({
    type: 'subscribe',
    data: { subscription: ['tick', 'order', 'trade'] }
}));

// 接收消息
ws.onmessage = (event) => {
    const message = JSON.parse(event.data);
    console.log('Received:', message);
};

测试

# 运行 API 测试
pytest tests/test_api.py -v

# 运行 WebSocket 测试
python tests/test_websocket.py

# 运行所有测试
pytest tests/ -v

开发指南

详细开发指南请查看:

主要功能模块

1. 认证系统 (/api/v1/auth)

  • 用户登录/登出
  • Token 验证
  • 用户信息获取

2. 网关管理 (/api/v1/gateway)

  • 可用网关列表
  • 网关连接/断开
  • 网关配置管理

3. 行情数据 (/api/v1/market)

  • 实时行情查询
  • 行情订阅/取消订阅
  • 合约信息查询

4. 交易功能 (/api/v1/trading)

  • 账户信息查询
  • 持仓查询
  • 订单管理(下单、撤单)
  • 成交记录查询

5. 策略管理 (/api/v1/strategy)

  • 策略列表
  • 策略启动/停止
  • 策略参数配置

环境变量

主要环境变量(见 docker/.env.example):

# 数据目录
DATA_DIR=/volume1/docker/stock/sanguo_vnpy

# 端口配置
HTTP_PORT=8000
WS_PORT=8080

# 时区
TZ=Asia/Shanghai

# JWT 密钥
JWT_SECRET_KEY=your-secret-key-here

# 数据库
DB_TYPE=sqlite
DB_PATH=/app/data/vnpy.db

分支策略

  • master - 主分支,保持稳定可部署
  • develop - 开发分支,日常开发合并
  • feature/* - 功能分支
  • hotfix/* - 热修复分支

版本历史

查看 CHANGELOG.md

技术栈

  • 后端框架: FastAPI 0.100+
  • WebSocket: websockets 12.0+
  • 数据库: SQLite (可扩展 PostgreSQL)
  • 缓存: Redis 7+
  • 容器: Docker + Docker Compose
  • 认证: JWT (python-jose)
  • 测试: pytest + httpx

许可证

MIT License

致谢

基于 VeighNa 框架开发

联系方式

  • 问题反馈: GitHub Issues
  • 文档: docs/ 目录
S
Description
sanguo_vnpy_v2
Readme 51 MiB
Languages
Jupyter Notebook 88.6%
Python 9.1%
Vue 1%
JavaScript 0.4%
TypeScript 0.3%
Other 0.5%