Skip to content

Latest commit

 

History

History
99 lines (82 loc) · 4.63 KB

File metadata and controls

99 lines (82 loc) · 4.63 KB

项目概述

AsyncTrader 是一个基于 LangChain 和 OpenAI 的量化交易系统自动化工具。v2.0 版本基于 LangChain 1.0.3 全面重构,增加了 FastAPI Web 服务和现代化前端界面,支持在浏览器中完成策略生成、数据查询和文档问答。

技术栈

  • 语言: Python 3.12
  • 核心框架: LangChain 1.0.3 + LangChain-OpenAI 1.0.1
  • LLM 接口: OpenAI GPT-4o-mini / GPT-4o / GPT-4-turbo / GPT-3.5-turbo
  • 向量数据库: ChromaDB (通过 langchain-community)
  • Web 框架: FastAPI 0.117.1 + Uvicorn 0.36.0
  • 数据工具: AkShare 1.18.58, pandas
  • 前端: 原生 HTML/JS/CSS 单页应用(SPA)
  • 包管理器: pip

目录结构

/workspace/projects/
├── app/                        # FastAPI 后端与前端
│   ├── main.py                 # FastAPI 入口
│   ├── config.py               # 应用配置
│   ├── routers/                # API 路由
│   │   ├── llm.py              # LLM 配置路由
│   │   ├── strategy.py         # 策略生成路由
│   │   ├── chat.py             # 文档问答路由
│   │   ├── data.py             # 数据查询路由
│   │   └── system.py           # 系统状态路由
│   ├── services/               # 业务服务层
│   │   ├── llm_service.py
│   │   ├── strategy_service.py
│   │   ├── chat_service.py
│   │   ├── data_service.py
│   │   └── system_service.py
│   └── static/                 # 前端静态文件
│       ├── index.html
│       ├── css/style.css
│       └── js/app.js
├── trading_system/             # 核心交易逻辑(新版)
│   ├── base.py                 # LLMManager:全局 LLM 配置与管理
│   ├── prompts.py              # Prompt 模板
│   ├── tools.py                # 新版工具(@tool 装饰器)
│   ├── akshare_tools.py        # AkShare 数据查询工具
│   └── rag.py                  # LCEL 构建的 RAG 问答
├── trading_system/             # 旧版模块(保留兼容)
│   ├── freqtrade_system/       # Freqtrade 集成(需外部安装)
│   ├── akshare_system/         # AkShare 集成(旧版)
│   └── vnpy_system/            # Vnpy 集成(需外部安装)
├── docs/                       # 项目文档(用于 RAG)
├── requirements.txt            # Python 依赖
└── README.md                   # 项目说明

关键入口 / 核心模块

  • app/main.py: FastAPI 服务入口,提供 REST API 和静态文件服务
  • trading_system/base.py: LLMManager 单例,管理 OpenAI API Key、模型、温度
  • trading_system/tools.py: 新版 LangChain 工具(网页策略提取、Freqtrade/Vnpy 策略生成)
  • trading_system/akshare_tools.py: AkShare 函数调用链,使用 bind_tools 让 LLM 自动选择数据接口
  • trading_system/rag.py: LCEL 构建的 RAG Chain,支持文档索引和问答

运行与预览

本项目现为 Web 服务型项目,通过 FastAPI 提供浏览器访问入口。

运行方式:

  1. 安装依赖:pip install -r requirements.txt
  2. 启动服务:uvicorn app.main:app --host 0.0.0.0 --port 5000
  3. 浏览器访问根路径,在 Configuration 页面配置 OpenAI API Key
  4. 使用各功能模块:策略生成、网页提取、数据查询、文档问答

注意:

  • Freqtrade 和 Vnpy 需要额外安装对应量化系统,本项目提供策略生成能力,回测/交易执行依赖外部系统。
  • AkShare 数据查询功能可直接使用(已集成)。

API 端点

  • GET /api/llm/status - LLM 状态
  • POST /api/llm/configure - 配置 LLM
  • POST /api/strategy/generate - 生成策略代码
  • POST /api/strategy/extract - 从网页提取策略
  • POST /api/data/query - AkShare 数据查询
  • POST /api/chat/build - 构建文档索引
  • POST /api/chat/ask - 文档问答
  • GET /api/systems/status - 外部系统可用性检测

用户偏好与长期约束

  • 支持动态配置 API Key 和模型,无需修改代码
  • 策略生成默认使用 gpt-4o-mini,性价比高
  • 网页策略提取和文档问答依赖 OpenAI Embeddings
  • AkShare 查询使用 tool calling(bind_tools)自动选择函数

常见问题和预防

  • 依赖冲突: 建议在隔离虚拟环境中安装
  • API Key 未配置: 首次使用需在 Web 界面 Configuration 页面设置 OpenAI API Key
  • 外部系统缺失: Freqtrade/Vnpy 需要单独克隆和安装,API 会返回可用性状态
  • LangChain 版本: v2.0 基于 LangChain 1.0+,API 与旧版(0.0.x)不兼容