Open Alpha Arena - 项目完整功能分析与调用流程
项目概述
Open Alpha Arena 是一个基于 AI 的加密货币纸制交易模拟平台,灵感来源于 nof1 Alpha Arena。该项目是一个全栈 Web 应用,使用 FastAPI 后端和 React 前端,提供纸制交易功能和 AI 决策集成。
技术栈
后端技术
- FastAPI: Web API 框架
- SQLAlchemy: ORM 数据库操作
- WebSockets: 实时通信
- CCXT: 加密货币交易所集成
- Pandas: 数据处理和分析
- APScheduler: 任务调度
- Uvicorn: ASGI 服务器
前端技术
- React 18.2: UI 框架
- TypeScript: 类型安全的 JavaScript
- Vite: 构建工具和开发服务器
- Tailwind CSS: 实用优先的 CSS 框架
- Radix UI: 可访问组件库
- Chart.js: 数据可视化
- Lightweight Charts: 交易图表库
项目架构
目录结构
open-alpha-arena/
├── backend/ # Python FastAPI 后端
│ ├── api/ # API 路由定义
│ ├── config/ # 配置管理
│ ├── database/ # 数据库模型和连接
│ ├── factors/ # 交易因子和计算
│ ├── repositories/ # 数据访问层
│ ├── schemas/ # API 数据模式
│ └── services/ # 业务逻辑服务
├── frontend/ # React + TypeScript 前端
│ └── app/ # 应用源码
│ ├── components/ # UI 组件
│ └── lib/ # 工具和 API 客户端
└── README.md # 项目文档
核心功能模块
1. 用户管理系统
- 默认用户系统: 自动创建默认用户 "default"
- 交易账户管理: 支持多个 AI 交易账户
- 密码验证: 支持交易密码和会话令牌
- 会话管理: 180天免密登录功能
2. AI 驱动交易系统
- AI 模型集成: 支持 OpenAI 兼容的 API
- 交易决策: AI 基于市场数据、投资组合和新闻做出交易决策
- 决策日志: 记录所有 AI 决策和执行结果
- 多账户支持: 支持多个 AI 账户同时交易
3. 订单管理系统
- 订单类型: 支持市价单和限价单
- 订单匹配: 自动订单匹配引擎
- 订单状态: PENDING、FILLED、CANCELLED
- 实时更新: WebSocket 实时推送订单状态
4. 市场数据系统
- 实时价格: 从加密货币交易所获取实时价格
- 历史数据: 存储历史价格和 K 线数据
- 价格缓存: 内存缓存提高性能
- 新闻集成: 获取最新加密货币新闻
5. 投资组合管理
- 持仓跟踪: 实时跟踪持仓和收益
- 资产曲线: 生成历史资产曲线图
- 风险控制: 单次交易最大比例限制
- 性能指标: 计算收益率和风险指标
6. 实时通信系统
- WebSocket: 双向实时通信
- 快照更新: 定期推送账户快照
- 资产曲线: 实时更新资产曲线数据
- 连接管理: 自动管理客户端连接
数据库设计
核心数据模型
用户相关
- User: 用户信息和认证
- Account: 交易账户和 AI 配置
- SystemConfig: 系统配置
交易相关
- Position: 持仓信息
- Order: 交易订单
- Trade: 成交记录
- TradingConfig: 市场交易配置
市场数据
- CryptoPrice: 加密货币价格
- CryptoKline: K 线数据
- AIDecisionLog: AI 决策日志
主要调用流程
1. 系统启动流程
sequenceDiagram
participant Main as main.py
participant DB as Database
participant Startup as startup.py
participant Scheduler as scheduler.py
participant AI as ai_decision_service.py
Main->>DB: 创建数据库表
Main->>DB: 初始化默认用户和账户
Main->>Startup: 初始化服务
Startup->>Scheduler: 启动调度器
Startup->>Scheduler: 设置市场数据任务
Startup->>AI: 启动AI交易任务 (5分钟间隔)
Startup->>Scheduler: 启动价格缓存清理 (2分钟间隔)
2. AI 交易决策流程
sequenceDiagram
participant Scheduler as 调度器
participant AI_Service as ai_decision_service.py
participant Market_Data as market_data.py
participant News as news_feed.py
participant Trading as trading_commands.py
participant Order_Match as order_matching.py
Scheduler->>AI_Service: 触发AI交易任务
AI_Service->>Market_Data: 获取市场价格
AI_Service->>News: 获取最新新闻
AI_Service->>AI_Service: 构建AI提示
AI_Service->>External_API: 调用AI模型API
External_API-->>AI_Service: 返回交易决策
AI_Service->>Trading: 执行交易决策
Trading->>Order_Match: 创建订单
Order_Match->>Order_Match: 执行订单匹配
Trading->>AI_Service: 保存决策日志
3. WebSocket 连接流程
sequenceDiagram
participant Client as 前端客户端
participant WS as ws.py
participant Manager as ConnectionManager
participant Scheduler as scheduler.py
Client->>WS: WebSocket连接
WS->>WS: 接受连接
Client->>WS: 发送bootstrap消息
WS->>Manager: 注册账户连接
Manager->>Scheduler: 添加快照任务 (10秒间隔)
WS->>Client: 发送初始快照
loop 每10秒
Scheduler->>WS: 触发快照更新
WS->>Client: 推送账户快照
end
4. 订单创建和执行流程
sequenceDiagram
participant Client as 客户端
participant API as order_routes.py
participant Service as order_matching.py
participant DB as 数据库
participant WS as ws.py
Client->>API: POST /api/orders/create
API->>DB: 验证用户和账户
API->>Service: 创建订单
Service->>DB: 保存订单
Service->>Service: 检查执行条件
Service->>DB: 更新订单状态
Service->>WS: 触发实时更新
API->>Client: 返回订单信息
关键服务详解
1. AI 决策服务 (ai_decision_service.py)
主要功能:
- 调用外部 AI API 获取交易决策
- 处理投资组合数据和市场价格
- 解析和验证 AI 响应
- 记录决策日志
关键方法:
-
call_ai_for_decision(): 调用 AI API -
save_ai_decision(): 保存决策日志 -
get_active_ai_accounts(): 获取活跃 AI 账户
2. 交易命令服务 (trading_commands.py)
主要功能:
- 执行 AI 驱动的交易决策
- 计算交易数量和价格
- 处理买卖逻辑
- 支持多种加密货币
关键方法:
-
place_ai_driven_crypto_order(): 执行 AI 交易 -
place_random_crypto_order(): 随机交易 (向后兼容) -
_get_market_prices(): 获取市场价格
3. 订单匹配服务 (order_matching.py)
主要功能:
- 创建和验证订单
- 执行订单匹配逻辑
- 更新持仓和现金
- 处理交易手续费
关键方法:
-
create_order(): 创建订单 -
check_and_execute_order(): 执行订单 -
process_all_pending_orders(): 处理所有待执行订单
4. 市场数据服务 (market_data.py)
主要功能:
- 从交易所获取实时价格
- 缓存价格数据
- 支持多种数据源
- 处理 API 限制
关键方法:
-
get_last_price(): 获取最新价格 -
fetch_market_data(): 获取市场数据 -
update_price_cache(): 更新价格缓存
5. WebSocket 服务 (ws.py)
主要功能:
- 管理客户端连接
- 推送实时数据更新
- 处理客户端消息
- 优化快照性能
关键方法:
-
websocket_endpoint(): WebSocket 端点 -
_send_snapshot(): 发送账户快照 -
broadcast_asset_curve_update(): 广播资产曲线更新
调度任务系统
定时任务配置
- AI 交易: 每 5 分钟执行一次
- 价格缓存清理: 每 2 分钟执行一次
- 账户快照: 每 10 秒执行一次
- 市场数据更新: 每分钟执行一次
任务管理
- 使用 APScheduler 进行任务调度
- 支持动态添加和删除任务
- 任务异常处理和重试机制
- 任务状态监控
数据流向
1. 市场数据流
外部交易所 API → market_data.py → price_cache → WebSocket → 前端
2. AI 交易流
调度器 → ai_decision_service.py → 外部 AI API → trading_commands.py → order_matching.py → 数据库 → WebSocket → 前端
3. 用户操作流
前端 → WebSocket/API → 后端服务 → 数据库 → WebSocket → 前端
安全特性
1. 认证和授权
- 支持用户名/密码认证
- 会话令牌机制
- 交易密码保护
2. API 安全
- 请求参数验证
- SQL 注入防护
- XSS 防护
3. 数据保护
- 敏感信息脱敏
- 错误信息过滤
- 日志安全管理
性能优化
1. 数据库优化
- 索引优化
- 查询优化
- 连接池管理
2. 缓存策略
- 价格数据缓存
- 查询结果缓存
- WebSocket 消息批处理
3. 前端优化
- 组件懒加载
- 图表数据采样
- WebSocket 连接管理
监控和日志
1. 日志系统
- 结构化日志记录
- 不同级别日志分类
- 日志轮转和归档
2. 健康检查
- API 健康状态检查
- 数据库连接检查
- 外部服务可用性检查
3. 性能监控
- 响应时间监控
- 错误率统计
- 资源使用监控
扩展性设计
1. 微服务架构
- 服务模块化设计
- 接口标准化
- 依赖注入
2. 水平扩展
- 无状态服务设计
- 负载均衡支持
- 数据库分片准备
3. 功能扩展
- 插件化架构
- 配置驱动开发
- API 版本管理
部署和运维
1. 容器化
- Docker 镜像构建
- docker-compose 部署
- 环境变量配置
2. 生产环境
- 数据库迁移
- 配置管理
- 监控告警
3. 备份和恢复
- 数据库备份策略
- 配置文件备份
- 灾难恢复计划
总结
Open Alpha Arena 是一个功能完整的 AI 驱动加密货币交易平台,具有以下特点:
- 完整的交易生命周期: 从 AI 决策到订单执行的全流程自动化
- 实时数据同步: 基于 WebSocket 的实时数据推送
- 多账户支持: 支持多个 AI 账户同时运行不同策略
- 可扩展架构: 模块化设计便于功能扩展
- 性能优化: 多层缓存和数据库优化确保系统性能
- 安全可靠: 完善的认证授权和错误处理机制
该系统为 AI 交易策略的开发、测试和部署提供了一个完整的沙盒环境。
Top comments (0)