开发者文档
数据下载 API
认证方式
HTTP Basic Auth
所有 API 使用和网站相同的用户名、密码。只有开通 API 权限且账户未过期的用户才能取数。
请求限制
K线与 Tick 的单次限制
1d 当前不限制历史跨度,1m 单次最多 31 个自然日;Tick API 单次仅支持一个 dataset + trade_date 文件。
试用账号有效期 10 天,数据范围限注册日前 10 天。
K线接口地址
http://gstech.a1.luyouxia.net:23442/api/v1/kline
K线请求参数
| 参数 | 必填 | 说明 |
|---|---|---|
contract |
是 | 主格式为 A2505.XDCE,兼容 A2505_XDCE 和短代码 a2505。 |
start_date |
是 | 开始日期,格式 YYYY-MM-DD,闭区间。 |
end_date |
是 | 结束日期,格式 YYYY-MM-DD,闭区间,必须不早于 start_date。 |
freq |
是 | 仅支持 1d 和 1m。 |
K线返回字段
| 字段 | 说明 |
|---|---|
contract | 标准合约代码,例如 A2505.XDCE。 |
freq | 返回频率,取值 1d 或 1m。 |
start_date | 请求开始日期。 |
end_date | 请求结束日期。 |
count | 返回记录条数。 |
data | K 线数据数组,包含 date/open/close/low/high/volume/money/open_interest/name_cn/start_date/end_date。 |
Tick 接口地址
http://gstech.a1.luyouxia.net:23442/api/v1/tick
Tick API 返回对应日期的压缩包原文件,适合脚本按需拉取单天数据。
Tick 请求参数
| 参数 | 必填 | 说明 |
|---|---|---|
dataset |
是 | 仅支持 cmdty 或 index。 |
trade_date |
是 | 目标交易日,格式 YYYY-MM-DD;单次只能请求一个日期。 |
Tick 下载说明
| 项目 | 说明 |
|---|---|
| 返回类型 | 直接返回 .rar 附件,不是 JSON。 |
| 文件命名 | 文件名规则为 YYYYMMDD.rar。 |
| 目录映射 | cmdty 对应商品期货 Tick 目录,index 对应指数 Tick 目录。 |
| 权限口径 | Tick API 会沿用账户的 Tick 日期可见范围;试用账号仅能访问注册日前 10 天范围内的文件。 |
错误码
| 状态码 | 场景 | 说明 |
|---|---|---|
| 400 | 参数错误 | 日期格式错误、频率非法、短代码歧义、dataset 非法等。 |
| 401 | 认证失败 | 用户名或密码错误,或未使用 Basic Auth。 |
| 403 | 无权限 | 账户已过期、未开通 API 权限,或请求日期超出当前账户可访问范围。 |
| 404 | 资源不存在 | K 线合约/文件不存在,或指定日期的 Tick 文件不存在。 |
K线 curl 示例
curl -u your_user:your_password "http://gstech.a1.luyouxia.net:23442/api/v1/kline?contract=A2505.XDCE&start_date=2025-01-01&end_date=2025-01-31&freq=1d"
K线 Python 示例
import requests
resp = requests.get(
"http://gstech.a1.luyouxia.net:23442/api/v1/kline",
params={
"contract": "A2505.XDCE",
"start_date": "2025-01-01",
"end_date": "2025-01-31",
"freq": "1m",
},
auth=("your_user", "your_password"),
timeout=30,
)
resp.raise_for_status()
payload = resp.json()
print(payload["count"])Tick curl 示例
curl -u your_user:your_password -OJ "http://gstech.a1.luyouxia.net:23442/api/v1/tick?dataset=cmdty&trade_date=2026-01-06"
Tick Python 示例
import requests
resp = requests.get(
"http://gstech.a1.luyouxia.net:23442/api/v1/tick",
params={
"dataset": "index",
"trade_date": "2026-01-07",
},
auth=("your_user", "your_password"),
timeout=60,
)
resp.raise_for_status()
with open(resp.headers.get("Content-Disposition", "tick.rar").split("filename=")[-1].strip('"'), "wb") as f:
f.write(resp.content)主力合约 curl 示例
curl -u your_user:your_password "http://gstech.a1.luyouxia.net:23442/api/v1/dominant-contract?symbol=RB&trade_date=2026-01-01"
主力合约 Python 示例
import requests
resp = requests.get(
"http://gstech.a1.luyouxia.net:23442/api/v1/dominant-contract",
params={
"symbol": "RB",
"trade_date": "2026-01-01",
},
auth=("your_user", "your_password"),
timeout=30,
)
resp.raise_for_status()
print(resp.json()["dominant_contract"])当日合约列表 curl 示例
curl -u your_user:your_password "http://gstech.a1.luyouxia.net:23442/api/v1/contract-list?symbol=RB&trade_date=2026-01-01"
当日合约列表 Python 示例
import requests
resp = requests.get(
"http://gstech.a1.luyouxia.net:23442/api/v1/contract-list",
params={
"symbol": "RB",
"trade_date": "2026-01-01",
},
auth=("your_user", "your_password"),
timeout=30,
)
resp.raise_for_status()
payload = resp.json()
print(payload["count"])
print(payload["contracts"])K线成功返回示例
{
"contract": "A2505.XDCE",
"freq": "1d",
"start_date": "2025-01-01",
"end_date": "2025-01-31",
"count": 2,
"data": [
{
"date": "2025-01-02",
"open": 3890.0,
"close": 3884.0,
"low": 3876.0,
"high": 3901.0,
"volume": 12345.0,
"money": 4567890.0,
"open_interest": 23456.0,
"name_cn": "豆一2505",
"start_date": "2024-07-15",
"end_date": "2025-05-14"
}
]
}