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.
12 KiB
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
功能描述:检查服务是否正常运行
请求参数:无
响应格式:
{
"status": "ok",
"message": "Service is running"
}
示例请求:
GET http://localhost:5000/health
示例响应:
{
"status": "ok",
"message": "Service is running"
}
2.2 合约数据获取接口
接口路径:/api/contracts
请求方法:GET
功能描述:获取合约列表,支持按交易所和品种过滤
请求参数:
| 参数名 | 类型 | 必填 | 描述 | 默认值 |
|---|---|---|---|---|
exchange |
string | 否 | 交易所代码,如 'SHFE' | 空字符串(获取所有交易所) |
symbol |
string | 否 | 品种代码,如 'CU' | 空字符串(获取所有品种) |
响应格式:
{
"status": "success",
"data": [
{
"symbol": "CU2603",
"product": "CU",
"product_name": "铜",
"exchange": "SHFE",
"month": "2603"
}
]
}
示例请求:
GET http://localhost:5000/api/contracts?exchange=SHFE&symbol=CU
示例响应:
{
"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 |
响应格式:
{
"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
}
]
}
示例请求:
GET http://localhost:5000/api/kline?symbol=CU2603&duration=1m&limit=10
示例响应:
{
"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' |
请求体示例:
{
"symbol": "CU2603",
"duration": "1h",
"analysis_type": "technical"
}
响应格式:
{
"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": {}
}
}
示例请求:
POST http://localhost:5000/api/analyze
Content-Type: application/json
{
"symbol": "CU2603",
"duration": "1h",
"analysis_type": "technical"
}
示例响应:
{
"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' | 空字符串(获取所有状态) |
响应格式:
{
"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"
}
]
}
示例请求:
GET http://localhost:5000/api/recommendations?symbol=CU2603&status=pending
示例响应:
{
"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 | 是 | 目标价格 | 无 |
请求体示例:
{
"symbol": "CU2603",
"current_price": 36000.0,
"entry_price": 35000.0,
"stop_loss": 34500.0,
"target_price": 37000.0
}
响应格式:
{
"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"
}
}
示例请求:
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
}
示例响应:
{
"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 |
响应格式:
{
"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"
}
]
}
示例请求:
GET http://localhost:5000/api/analysis/history?symbol=CU2603&limit=10
示例响应:
{
"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. 错误处理
所有接口都遵循统一的错误响应格式:
{
"status": "error",
"message": "错误信息"
}
常见错误码:
400 Bad Request:请求参数错误500 Internal Server Error:服务器内部错误
4. 数据缓存机制
- K线数据:系统会先尝试从数据库获取,如果没有则从数据源获取并保存到数据库
- 分析结果:所有分析结果都会保存到数据库,可通过
/api/analysis/history接口查询 - 交易建议:所有交易建议都会保存到数据库,可通过
/api/recommendations接口查询
5. 数据源配置
系统支持从 config.json 文件读取数据源配置:
- 默认数据源:通过
dataSource.defaultDataSource配置 - TQSDK 配置:通过
dataSource.tqsdk配置账号密码 - RQData 配置:通过
dataSource.rqdata配置账号密码
6. 启动服务
# 安装依赖
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 测试健康检查接口
curl http://localhost:5000/health
示例:使用 curl 测试合约数据接口
curl http://localhost:5000/api/contracts?exchange=SHFE&symbol=CU
示例:使用 curl 测试分析接口
curl -X POST http://localhost:5000/api/analyze \
-H "Content-Type: application/json" \
-d '{"symbol": "CU2603", "duration": "1h", "analysis_type": "technical"}'
8. 注意事项
- API 连接:服务启动时会自动尝试连接数据源 API,如果连接失败会使用模拟数据
- 数据格式:所有价格数据均为浮点数,成交量和持仓量为整数
- 时间格式:所有时间字段均为 ISO 8601 格式
- 错误处理:使用过程中如遇到错误,请检查请求参数和服务日志
- 性能优化:对于高频调用的接口(如 K线数据),建议使用缓存机制减少重复请求
9. 版本信息
- API 版本:v1.0
- 服务版本:1.0.0
- 更新时间:2026-02-23
本文档由期货分析系统自动生成,如有变更请以实际接口为准。