A personal, highly-customizable autonomous trading agent driven by Large Language Models.
Yui 是一个专注于加密货币永续合约(Perpetual Futures)的个人专属 AI 交易终端。不同于传统的依靠写死规则或网格策略的交易机器人,Yui 将市场的判断权交给了大语言模型 (LLM)。
系统通过实时高频并发接收 Binance WebSockets 的行情数据(K线、Ticker、深度),在本地计算均线、RSI、MACD、布林带等数十种技术指标,同时从全球 9 大权威信源爬取实时新闻并交由二级 LLM 情报智能体生成结构化情报。最后将技术面与基本面数据一并输入主 LLM 决策引擎,由 AI 智能体跨时间框架(1H/4H/1D)执行缜密的市场趋势推演,并自主产生买卖 (LONG/SHORT/HOLD) 的实盘操作。
| 特性 | 说明 |
|---|---|
| 🧠 纯 LLM 智能内核 | 内置高度定制的 Prompt 引擎,支持 DeepSeek / OpenAI / MiniMax 三大模型热切换。多时间框架 (1H + 4H + 1D) 技术指标综合研判 |
| 📰 全域新闻情报智能体 | 自建 RSS 聚合引擎并发抓取美联储、CNBC、CoinDesk 等 9 大信源实时资讯,交由二级 LLM 执行新闻降噪、情绪评分 (-1.0 ~ +1.0)、关键事件提取与宏观研判摘要,结果自动注入主交易模型上下文 |
| 🌐 零感网络热切换 | 一键跨越 Binance 主网 (Mainnet) 与测试网 (Testnet),双密钥完全隔离,资金安全与低成本策略试错兼顾 |
| ⚡ 超低延迟行情 | 建立在强类型异步 WebSocket 之上,并发拉取多标的 K线/Ticker/深度数据,确保决策依据永远是秒级最新的 |
| 🛡️ 多维风控引擎 | 仓位比例 / 单笔亏损 / 日亏损 / 止损止盈 / 冷却机制五重保护,参数可通过 Web 界面实时调整并自动持久化到 YAML |
| 🗄️ 不可变账本 | 基于 SQLite + SQLAlchemy 异步写入所有交易流水、资金异动与 AI 决策日志全文,可审计可溯源 |
| 🖥️ 赛博朋克看板 | Next.js 16 + Tailwind CSS v4 + Framer Motion 打造响应式暗黑科技风 Dashboard,一屏掌控资产、持仓、情报与 AI 心跳 |
graph TD
UI["🖥️ Next.js Web 看板"] <-->|REST + WebSocket| API("⚡ FastAPI 网关")
subgraph News_Intel ["📰 全域新闻情报层"]
RSS["🗞️ RSS 聚合引擎<br/>(9大信源并发)"] --> Intelligence["🤖 情报智能体<br/>(二级 LLM 降噪评分)"]
end
subgraph AI_Core ["🧠 AI 智能体核心层"]
API --> Coordinator["🧠 协调器 Coordinator"]
Coordinator --> Market["📈 市场数据流<br/>WebSocket K线/Ticker"]
Coordinator --> Indicators["📐 技术指标引擎<br/>MA RSI MACD BB ATR"]
Intelligence -->|情报摘要注入| LLM["💬 主决策模型<br/>DeepSeek/OpenAI/MiniMax"]
Coordinator --> LLM
Coordinator --> Risk["🛡️ 风控管理器<br/>(五重保护)"]
Coordinator --> Execution["💸 执行引擎<br/>Binance Client"]
end
Coordinator -->|异步写入| DB[("🗄️ SQLite 账本<br/>(交易+决策日志)")]
Execution <-->|API / WS| Binance["⛓️ 币安交易所"]
Intelligence --> API
| 分类 | 技术 | 版本 |
|---|---|---|
| Web 框架 | FastAPI + Uvicorn | ≥ 0.115 |
| 行情接入 | python-binance (REST + WebSocket) | ≥ 1.0.20 |
| 技术指标 | pandas + pandas-ta | ≥ 2.2 |
| AI 推理 | OpenAI SDK (兼容 DeepSeek/MiniMax) | ≥ 1.50 |
| 数据验证 | Pydantic + pydantic-settings | ≥ 2.9 |
| 网络请求 | httpx (异步 RSS 抓取) + aiohttp | ≥ 0.27 |
| 数据持久化 | SQLAlchemy (async) + aiosqlite | ≥ 2.0 |
| 配置管理 | python-dotenv + PyYAML | — |
| 日志系统 | loguru | ≥ 0.7 |
| 分类 | 技术 | 版本 |
|---|---|---|
| 框架 | Next.js (Turbopack) | 16.1 |
| UI 库 | React | 19.2 |
| 样式 | Tailwind CSS v4 | ≥ 4.2 |
| 动效 | Framer Motion | ≥ 12.34 |
| 图标 | Lucide React | ≥ 0.576 |
| 语言 | TypeScript | 5.x |
- Python 3.12+
- Node.js 18+ (推荐使用 v20 LTS)
- Git
git clone https://github.com/wdf4/Yui.git
cd Yui在项目根目录创建 .env 文件,内容参考:
# ─── Binance 主网 ───
BINANCE_API_KEY=你的主网API_KEY
BINANCE_API_SECRET=你的主网API_SECRET
# ─── Binance 测试网 ───
BINANCE_TESTNET_API_KEY=你的测试网API_KEY
BINANCE_TESTNET_API_SECRET=你的测试网API_SECRET
BINANCE_TESTNET=true # true=使用测试网启动, false=主网
# ─── LLM 配置 ───
LLM_PROVIDER=deepseek # 可选: deepseek / openai / minimax
# DeepSeek (默认)
LLM_DEEPSEEK_API_KEY=你的DeepSeek密钥
LLM_DEEPSEEK_MODEL=deepseek-chat
LLM_DEEPSEEK_BASE_URL=https://api.deepseek.com
# OpenAI (可选)
LLM_OPENAI_API_KEY=你的OpenAI密钥
LLM_OPENAI_MODEL=gpt-4o
LLM_OPENAI_BASE_URL=https://api.openai.com/v1
# MiniMax (可选)
LLM_MINIMAX_API_KEY=你的MiniMax密钥
LLM_MINIMAX_MODEL=MiniMax-Text-01
LLM_MINIMAX_BASE_URL=https://api.minimax.chat/v1
# ─── LLM 参数 ───
LLM_TEMPERATURE=0.3
LLM_MAX_TOKENS=4096
# ─── 新闻情报系统 ───
NEWS_ENABLE_NEWS_ANALYSIS=true
NEWS_RSS_FETCH_INTERVAL_SECONDS=300
NEWS_INTELLIGENCE_ENABLED=true
NEWS_INTELLIGENCE_INTERVAL_SECONDS=600🚨 至少需填入 Binance 和一个 LLM 提供商的密钥才能正常运行。
cd backend
python -m venv .venv
# 激活虚拟环境
# Windows:
.venv\Scripts\activate
# Mac / Linux:
# source .venv/bin/activate
# 安装所有运行和开发依赖
pip install -e ".[dev]"
# 启动异步高并发服务器
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000开启一个新的终端窗口(保持后端一直在运行)。
cd frontend
# 安装 Node 依赖包
npm install
# 启动 Next.js 前台服务器
npm run dev启动成功后,浏览器打开 http://localhost:3000 即可进入 Yui Terminal 监控控制台。
后端提供 20+ 个 RESTful API 和 1 个 WebSocket 实时通道,全部挂载在 /api/ 前缀下。
| 方法 | 端点 | 说明 |
|---|---|---|
POST |
/api/agent/start |
启动 AI 交易智能体 |
POST |
/api/agent/stop |
停止 AI 智能体 |
GET |
/api/agent/status |
获取 Agent 运行状态 / 最近决策 |
POST |
/api/agent/execute-once |
手动执行一次交易决策 |
| 方法 | 端点 | 说明 |
|---|---|---|
GET |
/api/account/balance |
获取账户余额 |
GET |
/api/account/positions |
获取当前持仓列表 |
GET |
/api/account/snapshot |
获取完整账户快照 |
| 方法 | 端点 | 说明 |
|---|---|---|
GET |
/api/market/price/{symbol} |
获取指定标的当前价格 |
GET |
/api/market/snapshot/{symbol} |
获取市场状态快照 (含技术指标) |
GET |
/api/market/realtime/{symbol} |
获取 DataFeed 实时缓存 |
| 方法 | 端点 | 说明 |
|---|---|---|
GET |
/api/risk/config |
获取当前风控参数 |
PUT |
/api/risk/config |
热更新风控参数 (自动持久化) |
| 方法 | 端点 | 说明 |
|---|---|---|
GET |
/api/network |
获取当前网络配置 (主网/测试网) |
PUT |
/api/network |
一键切换网络环境 |
| 方法 | 端点 | 说明 |
|---|---|---|
GET |
/api/llm/provider |
获取当前使用的 LLM 提供商信息 |
POST |
/api/llm/provider/{provider} |
热切换 LLM (openai/deepseek/minimax) |
| 方法 | 端点 | 说明 |
|---|---|---|
GET |
/api/news?symbol=BTCUSDT |
获取关键词过滤后的新闻列表 |
GET |
/api/news/digest?symbol=BTCUSDT |
获取 AI 情报智能体分析摘要 |
GET |
/api/news/all |
获取全部原始新闻 (不过滤) |
| 方法 | 端点 | 说明 |
|---|---|---|
GET |
/api/trades/history?limit=50 |
获取交易历史 |
GET |
/api/decisions/logs?limit=50 |
获取 AI 决策日志全文 |
| 端点 | 说明 |
|---|---|
WS /ws/market |
实时推送 Ticker 行情、AI 决策事件 |
Yui 采用 .env (敏感密钥) + YAML (策略参数) 分层配置方案。
symbol: BTCUSDT # 交易标的
leverage: 10 # 杠杆倍数
margin_type: CROSSED # 保证金模式 (CROSSED/ISOLATED)
trade_interval_seconds: 60 # AI 决策间隔 (秒)
max_open_positions: 3 # 最大同时开仓数量max_position_size_pct: 10.0 # 单笔最大仓位占比 (%)
max_daily_loss_pct: 5.0 # 日最大亏损占比 (%)
max_single_loss_pct: 2.0 # 单笔最大亏损占比 (%)
stop_loss_pct: 1.5 # 默认止损比例 (%)
take_profit_pct: 3.0 # 默认止盈比例 (%)
max_leverage: 20 # 最大杠杆倍数
cooldown_after_consecutive_losses: 3 # 连续亏损 N 次后冷却
cooldown_minutes: 30 # 冷却时长 (分钟)💡 风控参数也可以通过 Web 看板的齿轮图标在线调整,修改后自动保存到此文件。
定义 RSS 源列表与标的关键词映射,支持四大维度分类:
| 分类 | 信源 |
|---|---|
crypto |
CoinDesk, CoinTelegraph, Decrypt, Bitcoin Magazine |
macro |
CNBC Economy, Yahoo Finance, BBC Business |
regulation |
Federal Reserve (美联储) |
geopolitics |
BBC World |
关键词映射示例:
symbol_keywords:
BTC: [bitcoin, btc, 比特币, satoshi]
ETH: [ethereum, eth, vitalik, 以太坊]
_global: [federal reserve, interest rate, inflation, SEC, etf, ...]
_global中的关键词对所有交易标的生效,用于捕捉影响整个市场的宏观事件。
Yui/
├── .env # 🔒 环境变量 (API 密钥,不入 Git)
├── backend/ # Python 后端引擎
│ ├── pyproject.toml # 项目元数据与依赖管理
│ ├── app/
│ │ ├── main.py # FastAPI 入口 + 生命周期
│ │ ├── config.py # 全局配置管理 (Pydantic Settings)
│ │ ├── database.py # 🗄️ SQLite 异步数据持久层
│ │ ├── agent/ # 🤖 Coordinator 核心调度与热切控制
│ │ │ └── coordinator.py # 主循环及策略调度
│ │ ├── market/ # 📊 市场数据与情报
│ │ │ ├── data_feed.py # WebSocket K线 / Ticker 实时流
│ │ │ ├── indicators.py # MA / RSI / MACD / BB / ATR 指标库
│ │ │ ├── analyzer.py # MarketSnapshot 快照生成
│ │ │ └── news_api.py # 📰 RSSCollector + NewsIntelligenceAgent + NewsService
│ │ ├── strategy/ # 🧠 AI 决策引擎
│ │ │ ├── llm_engine.py # LLM 调用与多时间框架编排
│ │ │ └── prompt_builder.py# Prompt 上下文构建器
│ │ ├── risk/ # 🛡️ 风控管理器
│ │ │ └── manager.py # 五重保护与冷却机制
│ │ ├── execution/ # ⚡ 订单执行
│ │ │ ├── binance_client.py# Binance API 封装 (双网)
│ │ │ └── engine.py # 下单执行引擎
│ │ ├── models/ # 📦 Pydantic 数据模型
│ │ │ ├── account.py # 账户与余额模型
│ │ │ └── trade.py # 交易信号与决策日志模型
│ │ └── api/ # 🔌 API 层
│ │ ├── routes.py # 20+ RESTful 端点
│ │ └── websocket.py # WebSocket 实时推送
│
├── frontend/ # Next.js 交互终端
│ ├── package.json # 依赖管理
│ ├── src/app/
│ │ ├── layout.tsx # 根布局
│ │ ├── page.tsx # 仪表总览 (含全球情报面板)
│ │ ├── globals.css # 全局科技风主题
│ │ └── dashboard.css # 看板微件样式
│ └── src/lib/
│ └── api.ts # 统一接口通信层 (REST + WS)
│
├── configs/ # 高级 YAML 策略配置
│ ├── trading.yaml # 交易标的、杠杆、间隔
│ ├── risk.yaml # 风控阈值与止损策略
│ └── news.yaml # 📰 RSS 信源与关键词映射
│
└── data/ # 运行时数据 (自动创建)
└── db/
└── yui.db # SQLite 数据库 (交易记录+决策日志)
| 版本 | 日期 | 更新内容 |
|---|---|---|
| v0.1 | 2026-03-03 | 🏗️ 基础框架搭建:FastAPI 后端 + Binance WebSocket 行情 + 技术指标引擎 |
| v0.2 | 2026-03-03 | 🧠 LLM 多时间框架决策引擎 + SQLite 数据持久化 + Agent 协调器整合 |
| v0.3 | 2026-03-03 | 🖥️ Next.js 赛博朋克 Web 监控看板上线 |
| v0.4 | 2026-03-03 | 🌐 主网 / 测试网无缝热切换 + 双密钥隔离管理 |
| v0.5 | 2026-03-03 | 🔧 Hotfix: 测试网 KeyError + Binance WebSocket 合约监听接口修复 |
| v0.6 | 2026-03-03 | 📰 全域新闻情报智能体上线 |
本版本引入了完全自托管的全球新闻情报聚合与 AI 分析系统,替代了对第三方付费 API 的依赖。
📦 点击展开 v0.6 详细变更
- 自建 RSS 聚合引擎 (
RSSCollector):并发抓取 9 大权威信源,覆盖加密货币、宏观经济、央行政策、地缘政治四大维度 - LLM 情报智能体 (
NewsIntelligenceAgent):独立的二级 LLM 对原始新闻执行降噪过滤、情绪评分 (-1.0 ~ +1.0)、关键事件提取与结构化摘要 - 交易决策融合:情报摘要自动注入主决策模型的 Prompt 上下文
- 前端「📰 全球市场情报」面板:实时展示情绪评分色条、关键事件标签、情报摘要及分类新闻源
- 新增 3 个 API 端点:
/api/news、/api/news/digest、/api/news/all - 可配置信源:通过
configs/news.yaml灵活增删 RSS 源与标的关键词
| 文件 | 类型 | 说明 |
|---|---|---|
configs/news.yaml |
🆕 新增 | RSS 信源配置与关键词映射 |
backend/app/market/news_api.py |
重构 | 三层架构:RSSCollector + NewsIntelligenceAgent + NewsService |
backend/app/config.py |
修改 | 移除第三方 Key,新增 RSS 间隔与智能体开关参数 |
backend/app/strategy/llm_engine.py |
修改 | 对接 news_service.get_intelligence_digest() |
backend/app/strategy/prompt_builder.py |
修改 | 接收 NewsDigest 结构化摘要 |
backend/app/api/routes.py |
修改 | 新增 3 个新闻情报 API 路由 |
frontend/src/lib/api.ts |
修改 | 新增 newsAPI 调用方法 |
frontend/src/app/page.tsx |
修改 | 新增全球市场情报聚合展示面板 |
欢迎提出 Issues 和拉取 PR!我们非常欢迎任何关于新策略引擎、更多技术指标算法以及 UI 优化的支持。
- Fork 本项目
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的修改 (
git commit -m 'feat: Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启一个 Pull Request
本项目基于 MIT License 协议开源。
本项目及一切配套代码仅限用于量化技术交流、LLM 智能体探索验证以及个人学习测试。
加密货币及相关衍生品(尤其是永续合约)交易具备极其高昂的本金亏损风险。虚拟市场变幻莫测,任何 LLM 的预测均有产生幻觉致使误操作的可能。 作者绝不对任何直接或间接使用本系统造成的一切经济损失或法律追责承担任何明示或暗示的责任。请在投入真实资金前,务必在 Testnet 中进行详尽彻底的稳定测试!