## 项目概述
RSI 马丁量化交易平台是一个基于 **OKX 交易所** 的现货量化交易系统,采用 **RSI 超卖信号入场 + 马丁格尔分批补仓 + 多重止盈机制** 的策略逻辑,在震荡行情中持续捕捉超跌反弹机会。
**核心特性:**
- WebSocket 实时 RSI 扫描,毫秒级响应行情变化
- 马丁格尔智能补仓,逐步摊低持仓均价
- 三层风险控制体系(硬止损 / 补仓冷却 / BTC 熔断)
- 全 Web 界面管理,无需命令行操作
- 多用户隔离部署,每个用户独立运行 Bot
**资产安全:** 纯现货交易,无杠杆,不会爆仓,最大亏损为持仓本金。
---
## 功能介绍
### 交易策略
| 功能 | 说明 |
|------|------|
| RSI 超卖入场 | RSI(14, 1m) 低于阈值时市价建仓 |
| 马丁格尔补仓 | 价格下跌时分批加仓,降低均价,最多 6 层(L0~L5)|
| RSI 超买立即止盈 | RSI 进入超买区 + 利润达标时直接卖出 |
| 追踪止盈 | 利润达到启动线后跟踪价格高峰,回撤时自动卖出 |
| 补仓回撤确认 | 瀑布式下跌中等待反弹信号再补仓,避免中途接刀 |
| BTC 联动熔断 | BTC 短时跌幅超阈值时暂停新开仓,规避系统性风险 |
## 实现方式
### 技术栈
| 层级 | 技术选型 |
|------|---------|
| 后端框架 | FastAPI(Python 3.14)|
| 数据库 | SQLite + SQLAlchemy ORM |
| 交易所接口 | OKX Exchange(ccxt 封装)+ WebSocket |
| 前端 | 原生 HTML + Vanilla JS(无框架依赖)|
| 数据加密 | Fernet 对称加密(API 密钥安全存储)|
| 任务调度 | asyncio(每个用户独立 Task)|
### 关键模块
| 模块 | 文件 | 职责 |
|------|------|------|
| 交易引擎 | `app/services/engine.py` | Bot 主循环:RSI 检查 → 止盈/补仓/止损判断 → 执行 |
| RSI 计算 | `app/services/rsi_calculator.py` | Wilder RSI(14) 实现,支持实时逐Tick更新 |
| OKX WebSocket | `app/services/okx_ws_scanner.py` | 订阅行情实时推送,维护 RSI 缓存与价格队列 |
| OKX REST | `app/services/okx_client.py` | ccxt 封装:下单、查询余额、持仓 |
| API 路由 | `app/routers/` | auth / trading / stats / backtest |
| 数据模型 | `app/models.py` | SQLAlchemy 模型定义 |
| 启动入口 | `run.py` | 初始化数据库、启动 FastAPI、唤醒 Bot |
### 数据流(每扫描周期)
```
每 scan_interval 秒:
│
├─ ① 读取 BTC 价格 → BTC 熔断检查
│
├─ ② 遍历所有开仓持仓
│ ├─ 硬止损检查 → 触发则全平
│ ├─ RSI 超买止盈检查 → 触发则卖出
│ ├─ 追踪止盈检查 → 激活后跟踪回撤卖出
│ └─ 马丁补仓检查 → 冷却通过 + 跌幅达标则加仓
│
├─ ③ 遍历所有启用交易对(无仓)
│ └─ RSI 入场信号检查 → 触发则市价买入
│
└─ ④ 休眠等待下一周期