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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

期货分析系统 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 文件读取数据源配置:

  1. 默认数据源:通过 dataSource.defaultDataSource 配置
  2. TQSDK 配置:通过 dataSource.tqsdk 配置账号密码
  3. 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 requestsPython 库

示例:使用 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. 注意事项

  1. API 连接:服务启动时会自动尝试连接数据源 API如果连接失败会使用模拟数据
  2. 数据格式:所有价格数据均为浮点数,成交量和持仓量为整数
  3. 时间格式:所有时间字段均为 ISO 8601 格式
  4. 错误处理:使用过程中如遇到错误,请检查请求参数和服务日志
  5. 性能优化:对于高频调用的接口(如 K线数据建议使用缓存机制减少重复请求

9. 版本信息

  • API 版本v1.0
  • 服务版本1.0.0
  • 更新时间2026-02-23

本文档由期货分析系统自动生成,如有变更请以实际接口为准。