first commit

This commit is contained in:
awake 0x
2025-10-28 15:41:34 +08:00
commit 211eca1476

626
README.md Normal file
View File

@@ -0,0 +1,626 @@
# 🤖 NOFX - AI驱动的币安合约自动交易竞赛系统
[![Go Version](https://img.shields.io/badge/Go-1.21+-00ADD8?style=flat&logo=go)](https://golang.org/)
[![React](https://img.shields.io/badge/React-18+-61DAFB?style=flat&logo=react)](https://reactjs.org/)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-3178C6?style=flat&logo=typescript)](https://www.typescriptlang.org/)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
一个基于 **DeepSeek/Qwen AI** 的币安合约自动交易系统,支持**多AI模型实盘竞赛**具备完整的市场分析、AI决策、**自我学习机制**和专业的Web监控界面。
> ⚠️ **风险提示**本系统为实验性项目AI自动交易存在重大风险强烈建议仅用于学习研究或小额资金测试
---
## ✨ 核心特性
### 🏆 多AI竞赛模式
- **Qwen vs DeepSeek** 实盘对抗
- 独立账户管理,独立决策日志
- 实时性能对比图表
- 收益率PK胜率统计
### 🧠 AI自我学习机制NEW
- **历史反馈**: 每次决策前分析最近20个周期的交易表现
- **智能优化**:
- 识别表现最佳/最差币种
- 计算胜率、盈亏比、平均盈利
- 避免重复错误(连续亏损的币种)
- 强化成功策略(高胜率的交易模式)
- **动态调整**: AI根据历史表现自主调整交易风格
### 📊 智能市场分析
- **3分钟K线**: 实时价格、EMA20、MACD、RSI(7)
- **4小时K线**: 长期趋势、EMA20/50、ATR、RSI(14)
- **持仓量分析**: 市场情绪、资金流向判断
- **OI Top追踪**: 持仓量增长最快的20个币种
- **AI500币种池**: 高评分币种自动筛选
- **流动性过滤**: 自动过滤持仓价值<15M USD的低流动性币种
### 🎯 专业风险控制
- **单币种仓位上限**:
- 山寨币 1.5倍账户净值
- BTC/ETH 10倍账户净值
- **固定杠杆**: 山寨币20倍 | BTC/ETH 50倍
- **保证金管理**: 总使用率90%AI自主决策使用率
- **风险回报比**: 强制1:2止损:止盈
- **防止仓位叠加**: 同币种同方向不允许重复开仓
### 🎨 风格UI
- **专业交易界面**: 视觉设计
- **暗色主题**: 经典配色金色#F0B90B + 深色背景
- **实时数据**: 5秒刷新账户持仓图表
- **收益率曲线**: 账户净值历史走势美元/百分比切换
- **性能对比图**: 多AI收益率实时对比
- **动画效果**: 流畅的hover过渡加载动画
### 📝 完整决策记录
- **思维链记录**: AI的完整推理过程CoT
- **历史表现**: 整体胜率平均盈利盈亏比
- **最近交易**: 最近5笔交易详情开仓价平仓价盈亏%
- **币种统计**: 各币种表现胜率平均盈亏
- **JSON日志**: 每次决策完整记录便于复盘分析
---
## 🏗️ 技术架构
```
nofx/
├── main.go # 程序入口多trader管理器
├── config.json # 配置文件API密钥、多trader配置
├── api/ # HTTP API服务
│ └── server.go # Gin框架RESTful API
├── trader/ # 交易核心
│ ├── auto_trader.go # 自动交易主控单trader
│ └── binance_futures.go # 币安合约API封装
├── manager/ # 多trader管理
│ └── trader_manager.go # 管理多个trader实例
├── market/ # 市场数据与AI决策
│ ├── market_data.go # 市场数据获取K线、指标
│ ├── ai_decision_engine.go # AI决策引擎含历史反馈
│ └── ai_signal.go # AI API调用DeepSeek/Qwen
├── pool/ # 币种池管理
│ └── coin_pool.go # AI500 + OI Top合并池
├── logger/ # 日志系统
│ └── decision_logger.go # 决策记录 + 表现分析
├── decision_logs/ # 决策日志存储
│ ├── trader1/ # Trader 1的日志
│ └── trader2/ # Trader 2的日志
└── web/ # React前端
├── src/
│ ├── components/ # React组件
│ │ ├── EquityChart.tsx # 收益率曲线图
│ │ ├── ComparisonChart.tsx # 多AI对比图
│ │ └── CompetitionPage.tsx # 竞赛排行榜
│ ├── lib/api.ts # API调用封装
│ ├── types/index.ts # TypeScript类型
│ ├── index.css # Binance风格样式
│ └── App.tsx # 主应用
└── package.json
```
### 核心依赖
**后端 (Go)**
- `github.com/adshao/go-binance/v2` - 币安API客户端
- `github.com/markcheno/go-talib` - 技术指标计算TA-Lib
- `github.com/gin-gonic/gin` - HTTP API框架
**前端 (React + TypeScript)**
- `react` + `react-dom` - UI框架
- `recharts` - 图表库收益率曲线对比图
- `swr` - 数据获取和缓存
- `tailwindcss` - CSS框架
---
## 🚀 快速开始
### 1. 环境要求
- **Go 1.21+**
- **Node.js 18+**
- **TA-Lib** 技术指标计算
#### 安装 TA-Lib
**macOS:**
```bash
brew install ta-lib
```
**Ubuntu/Debian:**
```bash
sudo apt-get install libta-lib0-dev
```
**其他系统**: 参考 [TA-Lib官方文档](https://github.com/markcheno/go-talib)
### 2. 克隆项目
```bash
git clone <repository-url>
cd nofx
```
### 3. 安装依赖
**后端:**
```bash
go mod download
```
**前端:**
```bash
cd web
npm install
cd ..
```
### 4. 配置系统
创建 `config.json` 文件
```json
{
"traders": [
{
"id": "qwen_trader",
"name": "Qwen AI Trader",
"ai_model": "qwen",
"binance_api_key": "YOUR_BINANCE_API_KEY",
"binance_secret_key": "YOUR_BINANCE_SECRET_KEY",
"use_qwen": true,
"qwen_key": "sk-xxxxx",
"scan_interval_minutes": 3,
"initial_balance": 1000.0
},
{
"id": "deepseek_trader",
"name": "DeepSeek AI Trader",
"ai_model": "deepseek",
"binance_api_key": "YOUR_BINANCE_API_KEY_2",
"binance_secret_key": "YOUR_BINANCE_SECRET_KEY_2",
"use_qwen": false,
"deepseek_key": "sk-xxxxx",
"scan_interval_minutes": 3,
"initial_balance": 1000.0
}
],
"coin_pool_api_url": "http://x.x.x.x:xxx/api/ai500/list?auth=YOUR_AUTH",
"oi_top_api_url": "http://x.x.x.x:xxx/api/oi/top?auth=YOUR_AUTH",
"api_server_port": 8080
}
```
**配置说明:**
- `traders`: 可配置1-N个trader单AI或多AI竞赛
- `id`: Trader唯一标识用于日志目录
- `ai_model`: "qwen" "deepseek"
- `binance_api_key/secret_key`: 每个trader使用独立的币安账户
- `initial_balance`: 初始余额用于计算盈亏%
- `scan_interval_minutes`: 决策周期建议3-5分钟
- `coin_pool_api_url`: AI500币种池API可选
- `oi_top_api_url`: OI Top持仓量API可选
### 5. 运行系统
**启动后端AI交易系统 + API服务器:**
```bash
go build -o nofx
./nofx
```
**启动前端Web Dashboard:**
新开终端窗口
```bash
cd web
npm run dev
```
**访问界面:**
```
Web Dashboard: http://localhost:3000
API Server: http://localhost:8080
```
### 6. 停止系统
在两个终端中分别按 `Ctrl+C`
---
## 📖 AI决策流程
每个决策周期默认3分钟系统按以下流程运行
```
┌─────────────────────────────────────────────────────┐
│ 1. 分析历史表现最近20个周期
├─────────────────────────────────────────────────────┤
│ ✓ 计算整体胜率、平均盈利、盈亏比 │
│ ✓ 统计各币种表现(胜率、平均盈亏) │
│ ✓ 识别最佳/最差币种 │
│ ✓ 列出最近5笔交易详情 │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 2. 获取账户状态 │
├─────────────────────────────────────────────────────┤
│ • 账户净值、可用余额 │
│ • 持仓数量、总盈亏 │
│ • 保证金使用率 │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 3. 分析现有持仓(如果有) │
├─────────────────────────────────────────────────────┤
│ • 获取每个持仓的市场数据 │
│ • 计算技术指标RSI、MACD、EMA
│ • AI判断是否需要平仓 │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 4. 评估新机会(候选币种池) │
├─────────────────────────────────────────────────────┤
│ • 获取AI500高评分币种前20个
│ • 获取OI Top持仓增长币种前20个
│ • 合并去重,过滤低流动性币种(<15M
│ • 批量获取市场数据和技术指标 │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 5. AI综合决策 │
├─────────────────────────────────────────────────────┤
│ • 查看历史反馈(胜率、最佳/最差币种) │
│ • Chain of Thought 思维链分析 │
│ • 输出决策:平仓/开仓/持有/观望 │
│ • 包含杠杆、仓位、止损、止盈 │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 6. 执行交易 │
├─────────────────────────────────────────────────────┤
│ • 优先级排序:先平仓,再开仓 │
│ • 精度自动适配LOT_SIZE
│ • 防止仓位叠加(同币种同方向拒绝开仓) │
│ • 平仓后自动取消所有挂单 │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ 7. 记录日志 │
├─────────────────────────────────────────────────────┤
│ • 保存完整决策记录到 decision_logs/ │
│ • 包含思维链、决策JSON、账户快照、执行结果 │
└─────────────────────────────────────────────────────┘
```
---
## 🧠 AI自我学习示例
### 历史反馈Prompt中自动添加
```markdown
## 📊 历史表现反馈
### 整体表现
- **总交易数**: 15 笔 (盈利: 8 | 亏损: 7)
- **胜率**: 53.3%
- **平均盈利**: +3.2% | 平均亏损: -2.1%
- **盈亏比**: 1.52:1
### 最近交易
1. BTCUSDT LONG: 95000.0000 → 97500.0000 = +2.63% ✓
2. ETHUSDT SHORT: 3500.0000 → 3450.0000 = +1.43% ✓
3. SOLUSDT LONG: 185.0000 → 180.0000 = -2.70% ✗
4. BNBUSDT LONG: 610.0000 → 625.0000 = +2.46% ✓
5. ADAUSDT LONG: 0.8500 → 0.8300 = -2.35% ✗
### 币种表现
- **最佳**: BTCUSDT (胜率75%, 平均+2.5%)
- **最差**: SOLUSDT (胜率25%, 平均-1.8%)
```
### AI如何使用反馈
1. **避免连续亏损币种**: 看到SOLUSDT连续3次止损AI会避开或更谨慎
2. **强化成功策略**: BTC突破做多胜率75%AI会继续这个模式
3. **动态调整风格**: 胜率<40%时变保守盈亏比>2时保持激进
4. **识别市场环境**: 连续亏损可能说明市场震荡,减少交易频率
---
## 📊 Web界面功能
### 1. 竞赛页面Competition
- **🏆 排行榜**: 实时收益率排名,金色边框突出显示领先者
- **📈 性能对比图**: 双AI收益率曲线对比紫色vs蓝色
- **⚔️ Head-to-Head**: 直接对比,显示领先差距
- **实时数据**: 总净值、盈亏%、持仓数、保证金使用率
### 2. 详情页面Details
- **账户净值曲线**: 历史走势图(美元/百分比切换)
- **统计信息**: 总周期、成功/失败、开仓/平仓统计
- **持仓表格**: 所有持仓详情(入场价、当前价、盈亏%、强平价)
- **AI决策日志**: 最近决策记录(可展开思维链)
### 3. 实时更新
- 系统状态、账户信息、持仓列表:**每5秒刷新**
- 决策日志、统计信息:**每10秒刷新**
- 收益率图表:**每10秒刷新**
---
## 🎛️ API接口
### 竞赛相关
```bash
GET /api/competition # 竞赛排行榜所有trader
GET /api/traders # Trader列表
```
### 单Trader相关
```bash
GET /api/status?trader_id=xxx # 系统状态
GET /api/account?trader_id=xxx # 账户信息
GET /api/positions?trader_id=xxx # 持仓列表
GET /api/equity-history?trader_id=xxx # 净值历史(图表数据)
GET /api/decisions/latest?trader_id=xxx # 最新5条决策
GET /api/statistics?trader_id=xxx # 统计信息
```
### 系统接口
```bash
GET /health # 健康检查
GET /api/config # 系统配置
```
---
## 📝 决策日志格式
每次AI决策都会生成详细的JSON日志
### 日志文件路径
```
decision_logs/
├── qwen_trader/
│ └── decision_20251028_153042_cycle15.json
└── deepseek_trader/
└── decision_20251028_153045_cycle15.json
```
### 日志内容示例
```json
{
"timestamp": "2025-10-28T15:30:42+08:00",
"cycle_number": 15,
"cot_trace": "当前持仓ETHUSDT多头盈利+2.3%,趋势良好继续持有...",
"decision_json": "[{\"symbol\":\"BTCUSDT\",\"action\":\"open_long\"...}]",
"account_state": {
"total_balance": 1045.80,
"available_balance": 823.40,
"position_count": 3,
"margin_used_pct": 21.3
},
"positions": [...],
"candidate_coins": ["BTCUSDT", "ETHUSDT", ...],
"decisions": [
{
"action": "open_long",
"symbol": "BTCUSDT",
"quantity": 0.015,
"leverage": 50,
"price": 95800.0,
"order_id": 123456789,
"success": true
}
],
"execution_log": ["✓ BTCUSDT open_long 成功"],
"success": true
}
```
---
## 🔧 风险控制详解
### 单币种仓位限制
| 币种类型 | 仓位价值上限 | 杠杆 | 保证金占用 | 示例1000U账户 |
|---------|-------------|------|-----------|------------------|
| 山寨币 | 1.5倍净值 | 20x | 7.5% | 最多开1500U仓位 = 75U保证金 |
| BTC/ETH | 10倍净值 | 50x | 20% | 最多开10000U仓位 = 200U保证金 |
### 为什么这样设计?
1. **高杠杆 + 小仓位 = 分散风险**
- 20倍杠杆1500U仓位只需75U保证金
- 可以同时开10+个小仓位,分散单币种风险
2. **单币种风险可控**
- 山寨币仓位≤1.5倍净值5%反向波动 = 7.5%损失
- BTC仓位≤10倍净值2%反向波动 = 20%损失
3. **不限制总保证金使用率**
- AI根据市场机会自主决策保证金使用率
- 上限90%,但不强制满仓
- 有好机会就开仓,没机会就观望
### 防止过度交易
- **同币种同方向不允许重复开仓**: 防止AI连续开同一个仓位导致超限
- **先平仓后开仓**: 换仓时确保先释放保证金
- **止损止盈强制检查**: 风险回报比≥1:2
---
## ⚠️ 重要风险提示
### 交易风险
1. **加密货币市场波动极大**AI决策不保证盈利
2. **合约交易使用杠杆**,亏损可能超过本金
3. **市场极端行情**下可能出现爆仓风险
4. **资金费率**可能影响持仓成本
5. **流动性风险**:某些币种可能出现滑点
### 技术风险
1. **网络延迟**可能导致价格滑点
2. **API限流**可能影响交易执行
3. **AI API超时**可能导致决策失败
4. **系统Bug**可能引发意外行为
### 使用建议
**建议做法**
- 仅使用可承受损失的资金测试
- 从小额资金开始建议100-500 USDT
- 定期检查系统运行状态
- 监控账户余额变化
- 分析AI决策日志理解策略
**不建议做法**
- 投入全部资金或借贷资金
- 长时间无人监控运行
- 盲目信任AI决策
- 在不理解系统的情况下使用
- 在市场极端波动时运行
---
## 🛠️ 常见问题
### 1. 编译错误TA-Lib not found
**解决**: 安装TA-Lib库
```bash
# macOS
brew install ta-lib
# Ubuntu
sudo apt-get install libta-lib0-dev
```
### 2. 精度错误Precision is over the maximum
**解决**: 系统已自动处理精度从Binance获取LOT_SIZE。如仍报错检查网络连接。
### 3. AI API超时
**解决**:
- 检查API密钥是否正确
- 检查网络连接(可能需要代理)
- 系统超时时间已设置为120秒
### 4. 前端无法连接后端
**解决**:
- 确保后端正在运行http://localhost:8080
- 检查端口8080是否被占用
- 查看浏览器控制台错误信息
### 5. 币种池API失败
**解决**:
- 币种池API是可选的
- 如果API失败系统会使用默认主流币种BTC、ETH等
- 检查config.json中的API URL和auth参数
---
## 📈 性能优化建议
1. **合理设置决策周期**: 建议3-5分钟避免过度交易
2. **控制候选币种数量**: 系统默认分析AI500前20 + OI Top前20
3. **定期清理日志**: 避免占用过多磁盘空间
4. **监控API调用次数**: 避免触发Binance限流权重限制
5. **小额资金测试**: 先用100-500 USDT测试策略有效性
---
## 🔄 更新日志
### v2.0.0 (2025-10-28)
**重大更新:**
- ✅ AI自我学习机制历史反馈、表现分析
- ✅ 多Trader竞赛模式Qwen vs DeepSeek
- ✅ Binance风格UI完整模仿币安界面
- ✅ 性能对比图表(收益率实时对比)
- ✅ 风险控制优化(单币种仓位上限调整)
**Bug修复:**
- 修复初始余额硬编码问题
- 修复多trader数据同步问题
- 优化图表数据对齐使用cycle_number
### v1.0.0 (2025-10-27)
- 初始版本发布
- 基础AI交易功能
- 决策日志系统
- 简单Web界面
---
## 📄 开源协议
MIT License - 详见 [LICENSE](LICENSE) 文件
---
## 🤝 贡献
欢迎提交Issue和Pull Request
### 开发指南
1. Fork项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启Pull Request
---
## 📬 联系方式
如有问题或建议,请提交 [GitHub Issue](https://github.com/yourusername/nofx/issues)
---
## 🙏 致谢
- [Binance API](https://binance-docs.github.io/apidocs/futures/cn/) - 币安合约API
- [DeepSeek](https://platform.deepseek.com/) - DeepSeek AI API
- [Qwen](https://dashscope.aliyuncs.com/) - 阿里云通义千问
- [TA-Lib](https://ta-lib.org/) - 技术指标库
- [Recharts](https://recharts.org/) - React图表库
---
**最后更新**: 2025-10-28
**⚡ 用AI的力量探索量化交易的可能性**
# nofx
# nofx