K 线数据

K 线数据 API

获取股票的历史 K 线数据,支持多种时间周期。

方法端点说明
GET/v1/markets/history历史 K 线(OHLCV)时间序列
GET/v1/export/history导出 CSV 或 JSON 历史行情
POST/v1/markets/chart/batch批量生成静态图表
GET/v1/markets/margin融资融券汇总
GET/v1/markets/margin-detail融资融券明细
GET/v1/markets/block-trade-daily大宗交易统计
GET/v1/markets/block-trade-detail大宗交易明细
GET/v1/markets/hsgt-stock-statistics沪深港通持股统计
GET/v1/markets/suspend-resume-events停复牌事件

1. 时间序列 (Time Series)

获取股票的历史 K 线数据,支持多种时间周期。

端点

方法端点
GET/v1/markets/history

请求参数

参数类型必填默认值说明
symbolstring必填-股票代码 (如 sz.000001, sh.600519)
intervalstring-1d时间周期: 1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w
start_datestring--开始日期 (YYYY-MM-DD)
end_datestring--结束日期 (YYYY-MM-DD)
adjuststring--复权类型: qfq(前复权), hfq(后复权), 空字符串(不复权)

在线试用

GET/v1/markets/history

代码示例

Python

import requests
import pandas as pd

API_KEY = "your_api_key"

# 获取平安银行日线数据
response = requests.get(
    "https://tickerlab.org/v1/markets/history",
    params={
        "symbol": "sz.000001",
        "interval": "1d",
        "start_date": "2024-01-01",
        "end_date": "2024-01-31",
        "limit": 100
    },
    headers={"X-API-Key": API_KEY}
)

data = response.json()

# 转换为 DataFrame
df = pd.DataFrame(data["values"])
df["datetime"] = pd.to_datetime(df["datetime"])
print(df.head())

#               datetime      open      high       low     close      volume
# 0  2024-01-15 00:00:00   10.25    10.35     10.20    10.30   12345678
# 1  2024-01-14 00:00:00   10.20    10.28     10.15    10.25   11234567

JavaScript

const API_KEY = 'your_api_key';

async function getKLineData(symbol, interval = '1d', startDate = '2024-01-01', endDate = '2024-01-31') {
  const params = new URLSearchParams({
    symbol,
    interval,
    start_date: startDate,
    end_date: endDate
  });
  
  const response = await fetch(
    `https://tickerlab.org/v1/markets/history?${params}`,
    { headers: { 'X-API-Key': API_KEY } }
  );
  
  return response.json();
}

// 使用示例
const data = await getKLineData('sz.000001', '1d', '2024-01-01', '2024-01-31');
console.log(`获取 ${data.values.length} 条数据`);

cURL

curl -G "https://tickerlab.org/v1/markets/history" \
  -H "X-API-Key: your_api_key" \
  -d "symbol=sz.000001" \
  -d "interval=1d" \
  -d "start_date=2024-01-01" \
  -d "end_date=2024-01-31" \
  -d "limit=100"

响应示例

{
  "meta": {
    "symbol": "sz.000001",
    "interval": "1d",
    "currency": "CNY",
    "exchange_timezone": "Asia/Shanghai",
    "exchange": "SZSE",
    "mic_code": "XSHE",
    "type": "Common Stock"
  },
  "values": [
    {
      "datetime": "2024-01-15 00:00:00",
      "open": "10.25",
      "high": "10.35",
      "low": "10.20",
      "close": "10.30",
      "volume": "12345678"
    },
    {
      "datetime": "2024-01-14 00:00:00",
      "open": "10.20",
      "high": "10.28",
      "low": "10.15",
      "close": "10.25",
      "volume": "11234567"
    }
  ],
  "status": "ok"
}

数据字段说明

字段说明
datetime时间戳
open开盘价
high最高价
low最低价
close收盘价
volume成交量

2. 历史数据导出 (History Export)

获取标准化的 OHLCV 历史数据列表,支持 CSV/JSON 导出。

端点

方法端点
GET/v1/export/history

参数

参数类型必填默认说明
symbolstring-标的代码
start_datestring-开始日期 (YYYY-MM-DD)
end_datestring-结束日期 (YYYY-MM-DD)
intervalstring-1d周期
formatstring-csv输出格式: csvjson

在线试用

GET/v1/export/history

代码示例

Python

import requests

API_KEY = "your_api_key"
response = requests.get(
    "https://tickerlab.org/v1/export/history",
    params={
        "symbol": "sz.000001",
        "start_date": "2024-01-01",
        "end_date": "2024-12-31",
        "format": "csv"
    },
    headers={"X-API-Key": API_KEY}
)

# 保存为 CSV 文件
with open("data.csv", "wb") as f:
    f.write(response.content)

JavaScript

const response = await fetch(
  "https://tickerlab.org/v1/export/history?symbol=sz.000001&start_date=2024-01-01&end_date=2024-12-31&format=json",
  { headers: { "X-API-Key": "your_api_key" } }
);
const data = await response.json();
console.log(data.values.slice(0, 5));

cURL

curl -H "X-API-Key: your_key" \
  "https://tickerlab.org/v1/export/history?symbol=sz.000001&start_date=2024-01-01&end_date=2024-12-31&format=csv" \
  -o data.csv

3. 批量图表生成 (Batch Chart)

一次性生成多张 K 线图表 (PNG格式)。

端点

方法端点
POST/v1/markets/chart/batch

请求体 (JSON)

[
  {
    "symbol": "sh.600519",
    "interval": "1d",
    "studies": [{"name": "RSI"}]
  },
  {
    "symbol": "sz.000001",
    "interval": "1d",
    "studies": [{"name": "MACD"}, {"name": "VWAP"}]
  }
]

代码示例

Python

import requests

API_KEY = "your_api_key"

# 定义批量生成的配置
payload = [
    {
        "symbol": "sh.600519",
        "interval": "1d",
        "studies": [{"name": "RSI"}]
    },
    {
        "symbol": "sz.000001",
        "interval": "1d",
        "studies": [{"name": "MACD"}, {"name": "VWAP"}]
    }
]

response = requests.post(
    "https://tickerlab.org/v1/markets/chart/batch",
    json=payload,
    headers={"X-API-Key": API_KEY}
)

results = response.json()

# 打印生成的图表链接
for res in results["results"]:
    print(f"股票代码: {res['symbol']}")
    print(f"图表地址: {res['data']['url']}")
    print("-" * 30)

JavaScript

const API_KEY = 'your_api_key';

const payload = [
  { symbol: "sh.600519", interval: "1d", studies: [{ name: "RSI" }] },
  { symbol: "sz.000001",  studies: [{ name: "MACD" }] }
];

const response = await fetch("https://tickerlab.org/v1/markets/chart/batch", {
  method: "POST",
  headers: {
    "X-API-Key": API_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
data.results.forEach(res => {
  console.log(`${res.symbol}: ${res.data.url}`);
});

响应示例

{
  "count": 2,
  "results": [
    {
      "status": "ok",
      "symbol": "sh.600519",
      "data": {
        "url": "https://tickerlab.org/static/charts/sh600519_rsi_1d.png",
        "expires_at": "2024-03-20T11:00:00Z"
      }
    },
    {
      "status": "ok",
      "symbol": "sz.000001",
      "data": {
        "url": "https://tickerlab.org/static/charts/sz000001_macd_vwap_1d.png",
        "expires_at": "2024-03-20T11:00:00Z"
      }
    }
  ]
}