调用价格
5 匠币/次
快速接入
保持统一返回结构,直接通过服务端发起请求即可接入。
https://openapi.toolkk.com/v1/aliyunmarket-cmapi029045-query-comkm4v2cURL 示例
curl --request GET \
--url 'https://openapi.toolkk.com/v1/aliyunmarket-cmapi029045-query-comkm4v2' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{\n "symbol": "品种合约代码(查询连接 http://demo.konpn.com/symbols.shtml",\n "period": "取 1M,3M,5M,10M,15M,30M,1H,2H,3H,4H,D,W,M。周期是1,5,15分钟则返回date当日的数据。 周期是30分钟或1小时则返回...",\n "date": "日期,返回结果排序顺序。接口输出的日周期数据最多只有10年,1分钟周期数据只有最近30天,5分钟及小时周期最多180天",\n "withlast": "是否包含最新的一个动态k线数据,(填写1是,0否)"\n}'Python 示例
import os
import requests
url = "https://openapi.toolkk.com/v1/aliyunmarket-cmapi029045-query-comkm4v2"
payload = {
"symbol": "品种合约代码(查询连接 http://demo.konpn.com/symbols.shtml",
"period": "取 1M,3M,5M,10M,15M,30M,1H,2H,3H,4H,D,W,M。周期是1,5,15分钟则返回date当日的数据。 周期是30分钟或1小时则返回...",
"date": "日期,返回结果排序顺序。接口输出的日周期数据最多只有10年,1分钟周期数据只有最近30天,5分钟及小时周期最多180天",
"withlast": "是否包含最新的一个动态k线数据,(填写1是,0否)"
}
headers = {
"Content-Type": "application/json",
"X-API-Key": os.getenv("TOOLKK_API_KEY", "YOUR_API_KEY"),
}
response = requests.get(url, headers=headers, params=payload, timeout=30)
response.raise_for_status()
print(response.json())Go 示例
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
endpoint := "https://openapi.toolkk.com/v1/aliyunmarket-cmapi029045-query-comkm4v2"
payload := []byte("{\n \"symbol\": \"品种合约代码(查询连接 http://demo.konpn.com/symbols.shtml\",\n \"period\": \"取 1M,3M,5M,10M,15M,30M,1H,2H,3H,4H,D,W,M。周期是1,5,15分钟则返回date当日的数据。 周期是30分钟或1小时则返回...\",\n \"date\": \"日期,返回结果排序顺序。接口输出的日周期数据最多只有10年,1分钟周期数据只有最近30天,5分钟及小时周期最多180天\",\n \"withlast\": \"是否包含最新的一个动态k线数据,(填写1是,0否)\"\n}")
req, err := http.NewRequest("GET", endpoint, bytes.NewBuffer(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}Java 示例
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ToolkkExample {
public static void main(String[] args) throws Exception {
String payload = "{\n \"symbol\": \"品种合约代码(查询连接 http://demo.konpn.com/symbols.shtml\",\n \"period\": \"取 1M,3M,5M,10M,15M,30M,1H,2H,3H,4H,D,W,M。周期是1,5,15分钟则返回date当日的数据。 周期是30分钟或1小时则返回...\",\n \"date\": \"日期,返回结果排序顺序。接口输出的日周期数据最多只有10年,1分钟周期数据只有最近30天,5分钟及小时周期最多180天\",\n \"withlast\": \"是否包含最新的一个动态k线数据,(填写1是,0否)\"\n}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://openapi.toolkk.com/v1/aliyunmarket-cmapi029045-query-comkm4v2"))
.method("GET", HttpRequest.BodyPublishers.ofString(payload))
.header("Content-Type", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}PHP 示例
<?php
$endpoint = 'https://openapi.toolkk.com/v1/aliyunmarket-cmapi029045-query-comkm4v2';
$payload = "{\n \"symbol\": \"品种合约代码(查询连接 http://demo.konpn.com/symbols.shtml\",\n \"period\": \"取 1M,3M,5M,10M,15M,30M,1H,2H,3H,4H,D,W,M。周期是1,5,15分钟则返回date当日的数据。 周期是30分钟或1小时则返回...\",\n \"date\": \"日期,返回结果排序顺序。接口输出的日周期数据最多只有10年,1分钟周期数据只有最近30天,5分钟及小时周期最多180天\",\n \"withlast\": \"是否包含最新的一个动态k线数据,(填写1是,0否)\"\n}";
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-API-Key: YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
echo $response;响应示例
{
"code": "SUCCESS",
"message": "success",
"data": {
"Code": 0,
"Msg": "",
"Obj": "1600854240,10452.6,10455.8,10456.2,10452.5,0,5.37;1600854180,10455.8,10452.6,10455.8,10452.6,0,5.08"
}
}示例用于理解返回结构,实际结果以接口返回为准。
- 鉴权方式
- 请求头传入 X-API-Key
- 默认限流
- 60 次/分钟
- 超时时间
- 5000 ms
服务端调用时,将 API Key 放在 X-API-Key 请求头中。
建议按 response code 与业务字段双重判断调用结果。
高频调用场景请结合速率限制与重试策略使用。
请求字段
从服务端发起请求,并在 X-API-Key 请求头中传入密钥。
请求字段
字段来自接口结构定义。未提供的说明和示例会标为未标注。
| 字段路径 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| symbol | string | 是 | 品种合约代码(查询连接 http://demo.konpn.com/symbols.shtml | 未标注 |
| period | string | 是 | 取 1M,3M,5M,10M,15M,30M,1H,2H,3H,4H,D,W,M。周期是1,5,15分钟则返回date当日的数据。 周期是30分钟或1小时则返回date当日及前2日的数据。 2~4小时则返回date当日及前9日的数据。 日则返回date当月及前2个月的数据,周则返回近2年数据,月则返回近5年数据 | 未标注 |
| date | string | 是 | 日期,返回结果排序顺序。接口输出的日周期数据最多只有10年,1分钟周期数据只有最近30天,5分钟及小时周期最多180天 | 未标注 |
| withlast | int | 否 | 是否包含最新的一个动态k线数据,(填写1是,0否) | 未标注 |
请求示例
{
"symbol": "品种合约代码(查询连接 http://demo.konpn.com/symbols.shtml",
"period": "取 1M,3M,5M,10M,15M,30M,1H,2H,3H,4H,D,W,M。周期是1,5,15分钟则返回date当日的数据。 周期是30分钟或1小时则返回...",
"date": "日期,返回结果排序顺序。接口输出的日周期数据最多只有10年,1分钟周期数据只有最近30天,5分钟及小时周期最多180天",
"withlast": "是否包含最新的一个动态k线数据,(填写1是,0否)"
}- 鉴权方式
- 请求头传入 X-API-Key
- 默认限流
- 60 次/分钟
- 超时时间
- 5000 ms
响应字段
示例用于理解返回结构,实际结果以接口返回为准。
响应字段
以下字段根据示例 JSON 自动提取,仅作接入参考。
| 字段路径 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| code | string | 未标注 | 未标注 | SUCCESS |
| message | string | 未标注 | 未标注 | success |
| data | object | 未标注 | 未标注 | {...} |
| data.Code | number | 未标注 | 未标注 | 0 |
| data.Msg | string | 未标注 | 未标注 | 未标注 |
| data.Obj | string | 未标注 | 未标注 | 1600854240,10452.6,10455.8,10456.2,10452.5,0,5.37;1600854180,10455.8,10452.6,10455.8,10452.6,0,5.08 |
响应示例
{
"code": "SUCCESS",
"message": "success",
"data": {
"Code": 0,
"Msg": "",
"Obj": "1600854240,10452.6,10455.8,10456.2,10452.5,0,5.37;1600854180,10455.8,10452.6,10455.8,10452.6,0,5.08"
}
}接口简介
接口能力、应用场景、使用限制与常见问题。
接口能力
按金融品种代码、周期及日期条件查询历史K线数据,用于观察相应时段的价格序列。当前返回将多根K线组织在Obj文本中,使用分号分隔记录、逗号分隔列;它不是已经展开的开高低收对象数组。调用方解析后可以构建走势图,并保留原始序列用于检查时间和数据缺失。
应用场景
适合历史价格图表、行情教学及按日期研究同一品种的变化。不同品种和周期应分别查询和存储,比较时先统一观察区间及交易时间。应用可以在解析后按时间排序、筛选所需日期,并检查是否有重复记录;这些处理属于调用方的数据整理,接口本身不直接输出策略回测或分析结论。
使用与结果解读
提交代码、周期和日期等条件后,先检查内部结果码,再解析Obj。已核查文档给出七列顺序:秒级时间戳、收盘、开盘、最高、最低、成交额、成交量,不能按常见“时间、开、高、低、收”的顺序套用。样例按时间倒序排列,绘图前应明确排序方向。若选择当前K线,其价格可能仍在变化,不能当作已经结束的完整周期数据。
范围与限制
资料对可回溯窗口和不同周期覆盖存在相互矛盾的说明,因此不承诺固定两年、十年或固定天数范围,以实际返回为准。缺失记录不能直接补成零价格;成交额、成交量的计量也应结合具体品种确认。用于计算前应检查列数、时间间隔和价格关系,避免解析错位导致看似合理但实际错误的图表。
常见问题
返回数据为什么不是JSON对象数组?
当前Obj是分隔文本;需要先按分号拆记录,再按逗号读取每条的七列。
第二列是开盘价吗?
不是。已核查顺序中第二列是收盘价,第三列才是开盘价。
时间戳需要按毫秒解析吗?
当前文档的K线时间戳为秒,转换到使用毫秒的环境时需明确换算。
能保证返回多年完整历史吗?
不能。可回溯范围和条数以实际返回为准,并应检查所需日期是否齐全。