# 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分钟 | | 历史数据 | 每日收盘后 |