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.

809 lines
14 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.

# A股智投分析平台 - API接口文档
## 基础信息
```
Base URL: https://api.aguzhitou.com/v1
WebSocket: wss://ws.aguzhitou.com
请求头:
Content-Type: application/json
Authorization: Bearer {access_token}
```
---
## 一、市场数据接口
### 1.1 获取市场指数
**请求**
```http
GET /market/indices
```
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"name": "上证指数",
"code": "000001",
"current": 3050.32,
"change": 15.23,
"changePercent": 0.50,
"volume": 450000000,
"turnover": 4200000000
},
{
"name": "深证成指",
"code": "399001",
"current": 9850.15,
"change": -25.60,
"changePercent": -0.26,
"volume": 520000000,
"turnover": 5100000000
}
]
}
```
### 1.2 获取涨跌家数统计
**请求**
```http
GET /market/updown-stats
```
**响应**
```json
{
"code": 200,
"message": "success",
"data": {
"up": 2850,
"down": 1950,
"flat": 200
}
}
```
### 1.3 获取涨跌幅分布
**请求**
```http
GET /market/price-distribution
```
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{ "range": "<-7%", "min": -999, "max": -7, "count": 45 },
{ "range": "-7~-5%", "min": -7, "max": -5, "count": 128 },
{ "range": "-5~-3%", "min": -5, "max": -3, "count": 356 },
{ "range": "-3~0%", "min": -3, "max": 0, "count": 1421 },
{ "range": "0~3%", "min": 0, "max": 3, "count": 1856 },
{ "range": "3~5%", "min": 3, "max": 5, "count": 623 },
{ "range": "5~7%", "min": 5, "max": 7, "count": 312 },
{ "range": ">7%", "min": 7, "max": 999, "count": 259 }
]
}
```
---
## 二、版块数据接口
### 2.1 获取版块列表
**请求**
```http
GET /sectors
```
**查询参数**
| 参数 | 类型 | 必填 | 说明 |
|-----|------|------|------|
| sort | string | 否 | 排序方式: momentum/rank/change |
| order | string | 否 | 排序: asc/desc |
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"name": "半导体",
"code": "880491",
"change": 3.25,
"changePercent": 3.25,
"volume": 25000000,
"turnover": 850000000,
"leadingStock": "中芯国际",
"momentumScore": 85.5,
"rank": 1,
"previousRank": 3,
"rankChange": 2
}
]
}
```
### 2.2 获取版块详情
**请求**
```http
GET /sectors/{sector_code}
```
**响应**
```json
{
"code": 200,
"message": "success",
"data": {
"name": "半导体",
"code": "880491",
"change": 3.25,
"changePercent": 3.25,
"volume": 25000000,
"turnover": 850000000,
"leadingStock": "中芯国际",
"momentumScore": 85.5,
"rank": 1,
"previousRank": 3,
"rankChange": 2
}
}
```
### 2.3 获取版块历史排名
**请求**
```http
GET /sectors/{sector_code}/rank-history
```
**查询参数**
| 参数 | 类型 | 必填 | 说明 |
|-----|------|------|------|
| days | number | 否 | 天数默认30 |
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"date": "2024-01-15",
"rank": 5,
"momentumScore": 72.5,
"topStock": "中芯国际"
},
{
"date": "2024-01-16",
"rank": 3,
"momentumScore": 78.2,
"topStock": "韦尔股份"
}
]
}
```
### 2.4 获取版块内股票
**请求**
```http
GET /sectors/{sector_code}/stocks
```
**查询参数**
| 参数 | 类型 | 必填 | 说明 |
|-----|------|------|------|
| sort | string | 否 | 排序: momentum/change/volume |
| limit | number | 否 | 数量限制默认20 |
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"code": "688981",
"name": "中芯国际",
"price": 52.35,
"change": 2.15,
"changePercent": 4.28,
"volume": 12500000,
"turnover": 654000000,
"marketCap": 415000000000,
"pe": 45.2,
"pb": 3.8,
"industry": "半导体"
}
]
}
```
### 2.5 获取版块内动量股票
**请求**
```http
GET /sectors/{sector_code}/momentum-stocks
```
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"code": "688981",
"name": "中芯国际",
"price": 52.35,
"change": 2.15,
"changePercent": 4.28,
"volume": 12500000,
"turnover": 654000000,
"industry": "半导体",
"momentumScore": 92,
"tags": ["强势突破", "量价齐升"],
"volumeRatio": 3.5,
"breakThrough": true
}
]
}
```
### 2.6 获取版块K线数据
**请求**
```http
GET /sectors/{sector_code}/kline
```
**查询参数**
| 参数 | 类型 | 必填 | 说明 |
|-----|------|------|------|
| period | string | 否 | 周期: day/week/month默认day |
| days | number | 否 | 天数默认60 |
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"date": "2024-01-15",
"open": 2850.25,
"high": 2895.60,
"low": 2835.15,
"close": 2880.35,
"volume": 45000000,
"ma5": 2865.20,
"ma10": 2850.80,
"ma20": 2835.50
}
]
}
```
---
## 三、股票数据接口
### 3.1 搜索股票
**请求**
```http
GET /stocks/search
```
**查询参数**
| 参数 | 类型 | 必填 | 说明 |
|-----|------|------|------|
| keyword | string | 是 | 搜索关键词 |
| type | string | 否 | 类型: stock/sector/all默认all |
**响应**
```json
{
"code": 200,
"message": "success",
"data": {
"sectors": [
{
"name": "半导体",
"code": "880491",
"changePercent": 3.25,
"rank": 1,
"momentumScore": 85.5
}
],
"stocks": [
{
"code": "688981",
"name": "中芯国际",
"price": 52.35,
"changePercent": 4.28,
"industry": "半导体"
}
]
}
}
```
### 3.2 获取股票详情
**请求**
```http
GET /stocks/{stock_code}
```
**响应**
```json
{
"code": 200,
"message": "success",
"data": {
"code": "688981",
"name": "中芯国际",
"price": 52.35,
"change": 2.15,
"changePercent": 4.28,
"volume": 12500000,
"turnover": 654000000,
"marketCap": 415000000000,
"pe": 45.2,
"pb": 3.8,
"industry": "半导体",
"open": 50.50,
"high": 53.20,
"low": 50.20,
"preClose": 50.20,
"amplitude": 5.98,
"turnoverRate": 2.35,
"macd": {
"dif": 0.85,
"dea": 0.62,
"macd": 0.46
},
"kdj": {
"k": 75.2,
"d": 68.5,
"j": 88.6
},
"rsi": {
"rsi6": 72.5,
"rsi12": 68.3,
"rsi24": 65.1
}
}
}
```
### 3.3 获取股票K线数据
**请求**
```http
GET /stocks/{stock_code}/kline
```
**查询参数**
| 参数 | 类型 | 必填 | 说明 |
|-----|------|------|------|
| period | string | 否 | 周期: day/week/month默认day |
| days | number | 否 | 天数默认60 |
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"date": "2024-01-15",
"open": 50.50,
"high": 53.20,
"low": 50.20,
"close": 52.35,
"volume": 12500000,
"ma5": 51.20,
"ma10": 50.80,
"ma20": 49.50,
"ma30": 48.90,
"ma60": 47.20
}
]
}
```
### 3.4 获取新高股票
**请求**
```http
GET /stocks/new-high
```
**查询参数**
| 参数 | 类型 | 必填 | 说明 |
|-----|------|------|------|
| days | number | 否 | 近N天默认20 |
| limit | number | 否 | 数量限制默认20 |
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"code": "688981",
"name": "中芯国际",
"price": 52.35,
"change": 2.15,
"changePercent": 4.28,
"volume": 12500000,
"turnover": 654000000,
"industry": "半导体",
"highLowPrice": 52.35,
"date": "2024-01-15",
"daysToHighLow": 15
}
]
}
```
### 3.5 获取新低股票
**请求**
```http
GET /stocks/new-low
```
**查询参数**
| 参数 | 类型 | 必填 | 说明 |
|-----|------|------|------|
| days | number | 否 | 近N天默认20 |
| limit | number | 否 | 数量限制默认20 |
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"code": "600519",
"name": "贵州茅台",
"price": 1650.00,
"change": -25.00,
"changePercent": -1.49,
"volume": 850000,
"turnover": 1402500000,
"industry": "白酒",
"highLowPrice": 1650.00,
"date": "2024-01-15",
"daysToHighLow": 8
}
]
}
```
### 3.6 获取动量股票推荐
**请求**
```http
GET /stocks/momentum-recommendation
```
**查询参数**
| 参数 | 类型 | 必填 | 说明 |
|-----|------|------|------|
| limit | number | 否 | 数量限制默认15 |
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"code": "688981",
"name": "中芯国际",
"price": 52.35,
"change": 2.15,
"changePercent": 4.28,
"volume": 12500000,
"turnover": 654000000,
"industry": "半导体",
"momentumScore": 92,
"tags": ["强势突破", "量价齐升"],
"volumeRatio": 3.5,
"breakThrough": true
}
]
}
```
---
## 四、用户接口
### 4.1 用户注册
**请求**
```http
POST /users/register
```
**请求体**
```json
{
"username": "testuser",
"email": "test@example.com",
"password": "password123"
}
```
**响应**
```json
{
"code": 200,
"message": "注册成功",
"data": {
"id": 1,
"username": "testuser",
"email": "test@example.com",
"token": "eyJhbGciOiJIUzI1NiIs..."
}
}
```
### 4.2 用户登录
**请求**
```http
POST /users/login
```
**请求体**
```json
{
"email": "test@example.com",
"password": "password123"
}
```
**响应**
```json
{
"code": 200,
"message": "登录成功",
"data": {
"id": 1,
"username": "testuser",
"email": "test@example.com",
"token": "eyJhbGciOiJIUzI1NiIs..."
}
}
```
### 4.3 获取用户信息
**请求**
```http
GET /users/profile
Authorization: Bearer {token}
```
**响应**
```json
{
"code": 200,
"message": "success",
"data": {
"id": 1,
"username": "testuser",
"email": "test@example.com",
"createdAt": "2024-01-15T10:00:00Z"
}
}
```
### 4.4 获取自选股
**请求**
```http
GET /users/favorites
Authorization: Bearer {token}
```
**响应**
```json
{
"code": 200,
"message": "success",
"data": [
{
"code": "688981",
"name": "中芯国际",
"price": 52.35,
"changePercent": 4.28,
"industry": "半导体"
}
]
}
```
### 4.5 添加自选股
**请求**
```http
POST /users/favorites
Authorization: Bearer {token}
```
**请求体**
```json
{
"stockCode": "688981"
}
```
**响应**
```json
{
"code": 200,
"message": "添加成功",
"data": null
}
```
### 4.6 删除自选股
**请求**
```http
DELETE /users/favorites/{stock_code}
Authorization: Bearer {token}
```
**响应**
```json
{
"code": 200,
"message": "删除成功",
"data": null
}
```
---
## 五、WebSocket 实时数据
### 5.1 连接
```javascript
const ws = new WebSocket('wss://ws.aguzhitou.com');
ws.onopen = () => {
// 订阅股票行情
ws.send(JSON.stringify({
action: 'subscribe',
channels: ['stock:688981', 'stock:600519']
}));
// 订阅版块行情
ws.send(JSON.stringify({
action: 'subscribe',
channels: ['sector:880491']
}));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log(data);
};
```
### 5.2 订阅消息格式
**订阅请求**
```json
{
"action": "subscribe",
"channels": ["stock:688981", "stock:600519"]
}
```
**取消订阅**
```json
{
"action": "unsubscribe",
"channels": ["stock:688981"]
}
```
### 5.3 推送数据格式
**股票行情推送**
```json
{
"channel": "stock:688981",
"type": "quote",
"data": {
"code": "688981",
"name": "中芯国际",
"price": 52.35,
"change": 2.15,
"changePercent": 4.28,
"volume": 12500000,
"turnover": 654000000,
"time": "2024-01-15T14:30:00Z"
}
}
```
**版块行情推送**
```json
{
"channel": "sector:880491",
"type": "quote",
"data": {
"code": "880491",
"name": "半导体",
"changePercent": 3.25,
"momentumScore": 85.5,
"rank": 1,
"time": "2024-01-15T14:30:00Z"
}
}
```
---
## 六、错误码
| 错误码 | 说明 |
|-------|------|
| 200 | 成功 |
| 400 | 请求参数错误 |
| 401 | 未授权,需要登录 |
| 403 | 禁止访问 |
| 404 | 资源不存在 |
| 429 | 请求过于频繁 |
| 500 | 服务器内部错误 |
| 503 | 服务暂时不可用 |
---
## 七、限流策略
| 接口类型 | 限流策略 |
|---------|---------|
| 公开接口 | 100次/分钟/IP |
| 需要登录 | 1000次/分钟/用户 |
| WebSocket | 10个连接/IP |
---
## 八、数据更新频率
| 数据类型 | 更新频率 |
|---------|---------|
| 实时行情 | 3秒 |
| K线数据 | 1分钟 |
| 版块排名 | 1分钟 |
| 涨跌幅分布 | 1分钟 |
| 历史数据 | 每日收盘后 |