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 仅支持 1d1m
K线返回字段
字段 说明
contract标准合约代码,例如 A2505.XDCE
freq返回频率,取值 1d1m
start_date请求开始日期。
end_date请求结束日期。
count返回记录条数。
dataK 线数据数组,包含 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 仅支持 cmdtyindex
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"
    }
  ]
}