- name
- ifind-http-api
- description
- iFinD HTTP API 调用参考手册。当用户需要编写使用同花顺 iFinD HTTP API 获取金融数据的代码时使用此技能。
覆盖全部 18 个 API 端点的 URL、参数、指标和示例。支持股票、基金、债券、期货、期权、宏观数据。
触发词:ifind、iFinD、同花顺API、同花顺数据、quantapi。
# iFinD HTTP API 调用参考手册
本技能提供同花顺 iFinD HTTP API 的完整函数参考,用于编写通过 HTTP 请求获取金融数据的 Python 代码。
**API 基础地址:** `https://quantapi.51ifind.com/api/v1/`
## 触发条件
当用户需要:
- 编写调用 iFinD HTTP API 的 Python 代码
- 查询同花顺 API 某个接口的用法、参数或指标
- 获取 A 股/债券/基金/期货/宏观/期权数据(通过 HTTP 方式)
- 调试 iFinD API 调用错误
- 从 WindPy 迁移到 iFinD HTTP API
## 认证机制
iFinD 使用两层 token 鉴权:`refresh_token`(长期)→ `access_token`(短期,7天有效)。
### 获取 access_token
```python
import requests
import json
REFRESH_TOKEN = "your_refresh_token_here"
# 获取当前有效的 access_token
resp = requests.post(
"https://quantapi.51ifind.com/api/v1/get_access_token",
headers={"Content-Type": "application/json", "refresh_token": REFRESH_TOKEN}
)
access_token = json.loads(resp.content)["data"]["access_token"]
# 或获取一个新的 access_token(会使所有旧 token 失效)
resp = requests.post(
"https://quantapi.51ifind.com/api/v1/update_access_token",
headers={"Content-Type": "application/json", "refresh_token": REFRESH_TOKEN}
)
access_token = json.loads(resp.content)["data"]["access_token"]
```
**注意:**
- `access_token` 7 天有效,最多绑定 20 个 IP
- `refresh_token` 与账号有效期一致,更新后所有旧 token 全部失效
- 每天 token 请求次数有限制
### 通用请求模板
```python
import requests
BASE_URL = "https://quantapi.51ifind.com/api/v1"
ACCESS_TOKEN = "your_access_token"
HEADERS = {"Content-Type": "application/json", "access_token": ACCESS_TOKEN}
def ifind_request(endpoint, params):
"""通用 iFinD API 请求"""
url = f"{BASE_URL}/{endpoint}"
resp = requests.post(url, json=params, headers=HEADERS)
data = resp.json()
if data.get("errorcode") != 0:
raise Exception(f"iFinD Error {data['errorcode']}: {data.get('errmsg', '')}")
return data
```
### 通用返回结构
所有数据接口返回 JSON,包含以下字段:
| 字段 | 说明 |
|------|------|
| errorcode | 0=成功,其他为错误码 |
| errmsg | 错误信息(errorcode 非 0 时) |
| tables | 数据结构体,含 thscode 和 table |
| datatype | 指标格式 |
| perf | 请求耗时(ms) |
| dataVol | 消耗数据量 |
---
## 核心数据接口
### 1. basic_data_service — 基础数据(截面)
获取多品种多指标的截面数据(对应 WindPy 的 `w.wss()`)。
**URL:** `https://quantapi.51ifind.com/api/v1/basic_data_service`
| 参数 | 必须 | 说明 | 示例 |
|------|------|------|------|
| codes | 是 | 半角逗号分隔的代码 | `"300033.SZ,600030.SH"` |
| indipara | 是 | 指标数组,每项含 indicator 和 indiparams | 见下方 |
**indipara 结构:** indicator 为指标英文名,indiparams 为该指标的用户参数。推荐使用超级命令生成。
```python
# 获取 ROE 和平均 ROE
params = {
"codes": "300033.SZ,600030.SH",
"indipara": [
{"indicator": "ths_roe_stock", "indiparams": ["20241231"]},
{"indicator": "ths_roe_avg_by_ths_stock", "indiparams": ["20241231"]}
]
}
data = ifind_request("basic_data_service", params)
```
---
### 2. date_sequence — 日期序列
获取多品种多指标的历史时间序列(对应 WindPy 的 `w.wsd()` + 自定义指标)。
**URL:** `https://quantapi.51ifind.com/api/v1/date_sequence`
| 参数 | 必须 | 说明 | 示例 |
|------|------|------|------|
| codes | 是 | 半角逗号分隔的代码 | `"300033.SZ,600030.SH"` |
| startdate | 是 | 开始日期 | `"2023-01-01"` |
| enddate | 是 | 结束日期 | `"2024-12-31"` |
| functionpara | 否 | 功能参数 | 见下方 |
| indipara | 是 | 指标数组 | 同 basic_data_service |
**functionpara 说明:**
| 名称 | key | 值 | 默认 |
|------|-----|------|------|
| 时间周期 | Interval | D-日 W-周 M-月 Q-季 S-半年 Y-年 | D |
| 日期类型 | Days | Tradedays-交易日 Alldays-日历日 | Tradedays |
| 非交易间隔处理 | Fill | Previous-沿用前值 Blank-空值 | Previous |
```python
# 获取归母所有者权益合计和定期报告实际披露日期
params = {
"codes": "300033.SZ,600030.SH",
"startdate": "20230101",
"enddate": "20241231",
"functionpara": {"Days": "Alldays", "Fill": "Blank", "Interval": "Y"},
"indipara": [
{"indicator": "ths_total_equity_atoopc_stock", "indiparams": ["", "100"]},
{"indicator": "ths_regular_report_actual_dd_stock", "indiparams": [""]}
]
}
data = ifind_request("date_sequence", params)
```
---
### 3. cmd_history_quotation — 历史行情
获取日/周/月级别的 OHLCV 等历史行情数据(对应 WindPy 的 `w.wsd()` 行情部分)。
**URL:** `https://quantapi.51ifind.com/api/v1/cmd_history_quotation`
| 参数 | 必须 | 说明 | 示例 |
|------|------|------|------|
| codes | 是 | 代码 | `"300033.SZ,600030.SH"` |
| indicators | 是 | 半角逗号分隔指标 | `"preClose,open,high,low,close"` |
| startdate | 是 | 开始日期 | `"2024-01-01"` |
| enddate | 是 | 结束日期 | `"2025-01-01"` |
| functionpara | 否 | 功能参数 | 见下方 |
**indicators 常用指标(股票):**
`preClose`(前收盘价), `open`(开盘), `high`(最高), `low`(最低), `close`(收盘), `avgPrice`(均价), `change`(涨跌), `changeRatio`(涨跌幅), `volume`(成交量), `amount`(成交额), `turnoverRatio`(换手率), `totalShares`(总股本), `totalCapital`(总市值), `floatSharesOfAShares`(A股流通股本), `floatCapitalOfAShares`(A股流通市值), `pe_ttm`(市盈率TTM), `pe`(PE), `pb`(PB), `ps`(PS), `pcf`(PCF)
**indicators 特殊品种:**
- 基金: `netAssetValue`(单位净值), `adjustedNAV`(复权净值), `accumulatedNAV`(累计净值)
- 指数: `floatCapital`(流通市值), `pe_ttm_index`(PE TTM)
- 债券: `yieldMaturity`(到期收益率), `remainingTerm`(剩余期限), `modifiedDuration`(修正久期)
- 期货: `openInterest`(持仓量), `settlement`(结算价)
**functionpara 说明:**
| 名称 | key | 值 | 默认 |
|------|-----|------|------|
| 时间周期 | Interval | D W M Q S Y(返回周期汇总统计值) | D |
| 抽样周期 | SampleInterval | D W M Q S Y(返回周期最后一个交易日数据) | D |
| 复权方式 | CPS | 1-不复权 2-前复权(分红再投) 3-后复权(分红再投) 4-全流通前复权 5-全流通后复权 6-前复权(现金分红) 7-后复权(现金分红) | 1 |
| 报价类型 | PriceType | 1-全价 2-净价(仅债券) | 1 |
| 非交易间隔 | Fill | Previous Blank 具体数值 Omit | Previous |
| 复权基点 | BaseDate | `"YYYY-MM-DD"` | 后复权按上市日,前复权按最新日 |
| 货币 | Currency | MHB-美元 GHB-港元 RMB-人民币 YSHB-原始货币 | YSHB |
```python
# 获取周线数据(后复权)
params = {
"codes": "300033.SZ,600030.SH",
"indicators": "open,close,volume",
"startdate": "2024-08-25",
"enddate": "2025-08-25",
"functionpara": {"Interval": "W", "CPS": "3", "Currency": "RMB", "Fill": "Blank"}
}
data = ifind_request("cmd_history_quotation", params)
```
---
### 4. high_frequency — 高频序列(分钟级)
获取 1-60 分钟级别的 K 线数据(对应 WindPy 的 `w.wsi()`)。
**URL:** `https://quantapi.51ifind.com/api/v1/high_frequency`
| 参数 | 必须 | 说明 | 示例 |
|------|------|------|------|
| codes | 是 | 代码 | `"300033.SZ,600030.SH"` |
| indicators | 是 | 指标 | `"open,high,low,close"` |
| starttime | 是 | 开始时间 | `"2024-01-01 09:15:00"` |
| endtime | 是 | 结束时间 | `"2024-01-01 15:15:00"` |
| functionpara | 否 | 功能参数 | 见下方 |
**indicators 通用指标:**
`open`, `high`, `low`, `close`, `avgPrice`, `volume`, `amount`, `change`, `changeRatio`, `turnoverRatio`, `sellVolume`(内盘), `buyVolume`(外盘)
**indicators 技术指标(需同时在 functionpara.calculate 中设置参数):**
MACD, KDJ, RSI, BOLL, MA, EXPMA, CCI, ATR, OBV, MFI 等 50+ 种技术指标。
选择技术指标时,需在 functionpara 中添加 `calculate` 字段:
```python
# 分钟数据含技术指标
params = {
"codes": "300033.SZ,600030.SH",
"indicators": "open,high,SI,MACD,DPTB,OBV,KDJ",
"starttime": "2018-01-01 09:15:00",
"endtime": "2018-01-01 09:50:00",
"functionpara": {
"Interval": "1", # 1分钟
"Fill": "Original",
"calculate": {
"SI": "",
"MACD": "12,26,9,MACD", # 短周期,长周期,周期,{DIFF/DEA/MACD}
"DPTB": "7,000001", # 周期,大盘代码
"OBV": "OBV_XZ", # {OBV/OBV_XZ}
"KDJ": "9,3,3,K" # 周期,周期1,周期2,{K/D/J}
}
}
}
data = ifind_request("high_frequency", params)
```
**functionpara 说明:**
| 名称 | key | 值 | 默认 |
|------|-----|------|------|
| 时间区间开始 | Limitstart | 限定每个交易日数据的开始时间 | - |
| 时间区间结束 | Limitend | 限定每个交易日数据的截止时间 | - |
| 时间周期 | Interval | 1(1分钟) 3 5 10 15 30 60 | 1 |
| 非交易间隔处理 | Fill | Previous Blank 具体数值 Original(不处理) | Original |
| 复权方式 | CPS | -backward1(后复权分红) -backward(前复权交易所) -forward3(后复权交易所) 等 no(不复权) | no |
| 时间截格式 | Timeformat | BeiJingTime LocalTime | BeiJingTime |
| 复权基点 | BaseDate | `"YYYY-MM-DD"` | - |
**常用技术指标参数格式:** 参见 `references/technical-indicators.md`
---
### 5. real_time_quotation — 实时行情
获取当前实时行情快照(对应 WindPy 的 `w.wsq()`)。
**URL:** `https://quantapi.51ifind.com/api/v1/real_time_quotation`
| 参数 | 必须 | 说明 | 示例 |
|------|------|------|------|
| codes | 是 | 代码 | `"300033.SZ,600000.SH"` |
| indicators | 是 | 指标 | `"open,high,low,latest"` |
GitHub에서 보기