You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

577 lines
12 KiB

# 期货分析系统 API 接口文档
本文档详细描述了 `service_implementation` 模块提供的所有 RESTful API 接口,方便业务方使用。
## 1. 接口概览
| 接口路径 | 方法 | 功能描述 |
|---------|------|----------|
| `/health` | GET | 健康检查接口 |
| `/api/contracts` | GET | 获取合约列表 |
| `/api/kline` | GET | 获取K线数据 |
| `/api/analyze` | POST | 市场分析接口 |
| `/api/recommendations` | GET | 获取交易建议 |
| `/api/risk` | POST | 风险监控接口 |
| `/api/analysis/history` | GET | 获取分析历史 |
## 2. 详细接口文档
### 2.1 健康检查接口
**接口路径**`/health`
**请求方法**GET
**功能描述**:检查服务是否正常运行
**请求参数**:无
**响应格式**
```json
{
"status": "ok",
"message": "Service is running"
}
```
**示例请求**
```bash
GET http://localhost:5000/health
```
**示例响应**
```json
{
"status": "ok",
"message": "Service is running"
}
```
### 2.2 合约数据获取接口
**接口路径**`/api/contracts`
**请求方法**GET
**功能描述**:获取合约列表,支持按交易所和品种过滤
**请求参数**
| 参数名 | 类型 | 必填 | 描述 | 默认值 |
|--------|------|------|------|--------|
| `exchange` | string | 否 | 交易所代码,如 'SHFE' | 空字符串(获取所有交易所) |
| `symbol` | string | 否 | 品种代码,如 'CU' | 空字符串(获取所有品种) |
**响应格式**
```json
{
"status": "success",
"data": [
{
"symbol": "CU2603",
"product": "CU",
"product_name": "铜",
"exchange": "SHFE",
"month": "2603"
}
]
}
```
**示例请求**
```bash
GET http://localhost:5000/api/contracts?exchange=SHFE&symbol=CU
```
**示例响应**
```json
{
"status": "success",
"data": [
{
"symbol": "CU2603",
"product": "CU",
"product_name": "铜",
"exchange": "SHFE",
"month": "2603"
},
{
"symbol": "CU2604",
"product": "CU",
"product_name": "铜",
"exchange": "SHFE",
"month": "2604"
}
]
}
```
### 2.3 K线数据获取接口
**接口路径**`/api/kline`
**请求方法**GET
**功能描述**获取K线数据支持不同时间周期和数据量
**请求参数**
| 参数名 | 类型 | 必填 | 描述 | 默认值 |
|--------|------|------|------|--------|
| `symbol` | string | 是 | 合约代码,如 'CU2603' | 无 |
| `duration` | string | 否 | 时间周期,如 '1m', '5m', '1h', '1d' | '1m' |
| `limit` | integer | 否 | 数据量限制 | 100 |
**响应格式**
```json
{
"status": "success",
"data": [
{
"datetime": "2026-02-23T09:00:00",
"open": 35000.0,
"high": 35100.0,
"low": 34900.0,
"close": 35050.0,
"volume": 1000,
"open_interest": 10000
}
]
}
```
**示例请求**
```bash
GET http://localhost:5000/api/kline?symbol=CU2603&duration=1m&limit=10
```
**示例响应**
```json
{
"status": "success",
"data": [
{
"datetime": "2026-02-23T09:00:00",
"open": 35000.0,
"high": 35100.0,
"low": 34900.0,
"close": 35050.0,
"volume": 1000,
"open_interest": 10000
},
{
"datetime": "2026-02-23T09:01:00",
"open": 35050.0,
"high": 35150.0,
"low": 35000.0,
"close": 35100.0,
"volume": 1200,
"open_interest": 10200
}
]
}
```
### 2.4 DeepSeek 分析接口
**接口路径**`/api/analyze`
**请求方法**POST
**功能描述**:使用 AI 进行市场分析,返回分析结果
**请求参数**
| 参数名 | 类型 | 必填 | 描述 | 默认值 |
|--------|------|------|------|--------|
| `symbol` | string | 是 | 合约代码,如 'CU2603' | 无 |
| `duration` | string | 否 | 时间周期,如 '1m', '5m', '1h', '1d' | '1m' |
| `analysis_type` | string | 否 | 分析类型,如 'technical' | 'technical' |
**请求体示例**
```json
{
"symbol": "CU2603",
"duration": "1h",
"analysis_type": "technical"
}
```
**响应格式**
```json
{
"status": "success",
"data": {
"symbol": "CU2603",
"timestamp": "2026-02-23T10:00:00",
"trend": "up",
"probability": 0.8,
"direction": "buy",
"cycle": "short",
"atr": 120.5,
"adx": 25.3,
"support": 34800.0,
"resistance": 35200.0,
"stop_loss": 34700.0,
"target_price": 35500.0,
"position_size": 1.0,
"risk_ratio": 2.0,
"fund_flow": {},
"signals": {}
}
}
```
**示例请求**
```bash
POST http://localhost:5000/api/analyze
Content-Type: application/json
{
"symbol": "CU2603",
"duration": "1h",
"analysis_type": "technical"
}
```
**示例响应**
```json
{
"status": "success",
"data": {
"symbol": "CU2603",
"timestamp": "2026-02-23T10:00:00",
"trend": "up",
"probability": 0.8,
"direction": "buy",
"cycle": "short",
"atr": 120.5,
"adx": 25.3,
"support": 34800.0,
"resistance": 35200.0,
"stop_loss": 34700.0,
"target_price": 35500.0,
"position_size": 1.0,
"risk_ratio": 2.0,
"fund_flow": {},
"signals": {}
}
}
```
### 2.5 交易建议接口
**接口路径**`/api/recommendations`
**请求方法**GET
**功能描述**:获取交易建议列表
**请求参数**
| 参数名 | 类型 | 必填 | 描述 | 默认值 |
|--------|------|------|------|--------|
| `symbol` | string | 是 | 合约代码,如 'CU2603' | 无 |
| `status` | string | 否 | 建议状态,如 'pending', 'executed', 'cancelled' | 空字符串(获取所有状态) |
**响应格式**
```json
{
"status": "success",
"data": [
{
"id": 1,
"symbol": "CU2603",
"timestamp": "2026-02-23T10:00:00",
"direction": "buy",
"entry_price": 35000.0,
"stop_loss": 34700.0,
"target_price": 35500.0,
"position_size": 1.0,
"execution_plan": "分批入场",
"risk_tips": "注意止损",
"status": "pending",
"created_at": "2026-02-23T10:00:00"
}
]
}
```
**示例请求**
```bash
GET http://localhost:5000/api/recommendations?symbol=CU2603&status=pending
```
**示例响应**
```json
{
"status": "success",
"data": [
{
"id": 1,
"symbol": "CU2603",
"timestamp": "2026-02-23T10:00:00",
"direction": "buy",
"entry_price": 35000.0,
"stop_loss": 34700.0,
"target_price": 35500.0,
"position_size": 1.0,
"execution_plan": "分批入场",
"risk_tips": "注意止损",
"status": "pending",
"created_at": "2026-02-23T10:00:00"
}
]
}
```
### 2.6 风险监控接口
**接口路径**`/api/risk`
**请求方法**POST
**功能描述**:监控交易风险状态,返回风险评估结果
**请求参数**
| 参数名 | 类型 | 必填 | 描述 | 默认值 |
|--------|------|------|------|--------|
| `symbol` | string | 是 | 合约代码,如 'CU2603' | 无 |
| `current_price` | number | 是 | 当前价格 | 无 |
| `entry_price` | number | 是 | 入场价格 | 无 |
| `stop_loss` | number | 是 | 止损价格 | 无 |
| `target_price` | number | 是 | 目标价格 | 无 |
**请求体示例**
```json
{
"symbol": "CU2603",
"current_price": 36000.0,
"entry_price": 35000.0,
"stop_loss": 34500.0,
"target_price": 37000.0
}
```
**响应格式**
```json
{
"status": "success",
"data": {
"symbol": "CU2603",
"current_price": 36000.0,
"entry_price": 35000.0,
"stop_loss": 34500.0,
"target_price": 37000.0,
"current_profit": 1000.0,
"risk_status": "high"
}
}
```
**示例请求**
```bash
POST http://localhost:5000/api/risk
Content-Type: application/json
{
"symbol": "CU2603",
"current_price": 36000.0,
"entry_price": 35000.0,
"stop_loss": 34500.0,
"target_price": 37000.0
}
```
**示例响应**
```json
{
"status": "success",
"data": {
"symbol": "CU2603",
"current_price": 36000.0,
"entry_price": 35000.0,
"stop_loss": 34500.0,
"target_price": 37000.0,
"current_profit": 1000.0,
"risk_status": "high"
}
}
```
### 2.7 分析历史接口
**接口路径**`/api/analysis/history`
**请求方法**GET
**功能描述**:获取历史分析结果
**请求参数**
| 参数名 | 类型 | 必填 | 描述 | 默认值 |
|--------|------|------|------|--------|
| `symbol` | string | 是 | 合约代码,如 'CU2603' | 无 |
| `limit` | integer | 否 | 数据量限制 | 100 |
**响应格式**
```json
{
"status": "success",
"data": [
{
"id": 1,
"symbol": "CU2603",
"timestamp": "2026-02-23T10:00:00",
"trend": "up",
"probability": 0.8,
"direction": "buy",
"cycle": "short",
"atr": 120.5,
"adx": 25.3,
"support": 34800.0,
"resistance": 35200.0,
"stop_loss": 34700.0,
"target_price": 35500.0,
"position_size": 1.0,
"risk_ratio": 2.0,
"fund_flow": {},
"signals": {},
"created_at": "2026-02-23T10:00:00"
}
]
}
```
**示例请求**
```bash
GET http://localhost:5000/api/analysis/history?symbol=CU2603&limit=10
```
**示例响应**
```json
{
"status": "success",
"data": [
{
"id": 1,
"symbol": "CU2603",
"timestamp": "2026-02-23T10:00:00",
"trend": "up",
"probability": 0.8,
"direction": "buy",
"cycle": "short",
"atr": 120.5,
"adx": 25.3,
"support": 34800.0,
"resistance": 35200.0,
"stop_loss": 34700.0,
"target_price": 35500.0,
"position_size": 1.0,
"risk_ratio": 2.0,
"fund_flow": {},
"signals": {},
"created_at": "2026-02-23T10:00:00"
},
{
"id": 2,
"symbol": "CU2603",
"timestamp": "2026-02-23T09:00:00",
"trend": "neutral",
"probability": 0.5,
"direction": "hold",
"cycle": "short",
"atr": 115.2,
"adx": 18.7,
"support": 34900.0,
"resistance": 35100.0,
"stop_loss": 34800.0,
"target_price": 35300.0,
"position_size": 0.5,
"risk_ratio": 1.5,
"fund_flow": {},
"signals": {},
"created_at": "2026-02-23T09:00:00"
}
]
}
```
## 3. 错误处理
所有接口都遵循统一的错误响应格式:
```json
{
"status": "error",
"message": "错误信息"
}
```
常见错误码:
- `400 Bad Request`:请求参数错误
- `500 Internal Server Error`:服务器内部错误
## 4. 数据缓存机制
- **K线数据**:系统会先尝试从数据库获取,如果没有则从数据源获取并保存到数据库
- **分析结果**:所有分析结果都会保存到数据库,可通过 `/api/analysis/history` 接口查询
- **交易建议**:所有交易建议都会保存到数据库,可通过 `/api/recommendations` 接口查询
## 5. 数据源配置
系统支持从 `config.json` 文件读取数据源配置:
1. **默认数据源**:通过 `dataSource.defaultDataSource` 配置
2. **TQSDK 配置**:通过 `dataSource.tqsdk` 配置账号密码
3. **RQData 配置**:通过 `dataSource.rqdata` 配置账号密码
## 6. 启动服务
```bash
# 安装依赖
pip install -r service_implementation/requirements.txt
# 启动服务
python service_implementation/service/app.py
```
服务默认运行在 `http://0.0.0.0:5000`
## 7. 测试接口
可以使用以下工具测试接口:
- **Postman**:图形化 API 测试工具
- **curl**:命令行工具
- **Python requests**Python 库
### 示例:使用 curl 测试健康检查接口
```bash
curl http://localhost:5000/health
```
### 示例:使用 curl 测试合约数据接口
```bash
curl http://localhost:5000/api/contracts?exchange=SHFE&symbol=CU
```
### 示例:使用 curl 测试分析接口
```bash
curl -X POST http://localhost:5000/api/analyze \
-H "Content-Type: application/json" \
-d '{"symbol": "CU2603", "duration": "1h", "analysis_type": "technical"}'
```
## 8. 注意事项
1. **API 连接**:服务启动时会自动尝试连接数据源 API如果连接失败会使用模拟数据
2. **数据格式**:所有价格数据均为浮点数,成交量和持仓量为整数
3. **时间格式**:所有时间字段均为 ISO 8601 格式
4. **错误处理**:使用过程中如遇到错误,请检查请求参数和服务日志
5. **性能优化**:对于高频调用的接口(如 K线数据建议使用缓存机制减少重复请求
## 9. 版本信息
- **API 版本**v1.0
- **服务版本**1.0.0
- **更新时间**2026-02-23
本文档由期货分析系统自动生成,如有变更请以实际接口为准。