一、前言
在量化交易、数据分析领域,获取可靠的K线历史数据是第一步。今天给大家分享一个免费的K线数据API接口,支持A股、港股、期货三大市场,包含分钟级、日K、周K等多种周期数据。
二、功能特点
| 📈 多市场支持 | A股、港股、期货一网打尽 |
| ⏱️ 多时间周期 | min5/min15/min30/min60/day/week/month/season/year |
| 📊 数据字段 | 时间、开盘、最高、最低、收盘、总量 |
| 🔓 完全免费 | 无需注册,直接调用 |
三、核心代码解析
3.1 请求封装
python
import requests
import json
API_URL = "http://ddnsapi.top:18080/api/v1/request"
def get_kline_data(code, period="day", count=5):
"""
获取K线历史数据
:param code: 证券代码
:param period: 时间周期
:param count: 获取条数(最高1024)
"""
data = {
'req_type': 'klinedata',
'code': code,
'period': period,
'count': count
}
try:
response = requests.post(API_URL, data=data, timeout=10)
response.raise_for_status()
return json.loads(response.text)
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
return None
3.2 时间周期参数说明
| min5 | 5分钟K线 |
| min15 | 15分钟K线 |
| min30 | 30分钟K线 |
| min60 | 60分钟K线 |
| day | 日K线 |
| week | 周K线 |
| month |
月K线 |
|
season |
季K线 |
|
year |
年K线 |
四、使用示例
4.1 获取期货数据
python
# 螺纹钢期货 lu9999
data = get_kline_data('lu9999', period='min5', count=5)
print(data)
输出结果:
python
{
'code': 'lu9999',
'fields': ['时间', '开盘', '最高', '最低', '收盘', '总量'],
'items': [
[1780584000, 4728, 4738, 4726, 4735, 204],
[1780584300, 4734, 4735, 4726, 4729, 96],
…
]
}
4.2 获取A股数据
python
# 贵州茅台 600519
data = get_kline_data('600519', period='min5', count=5)
print(data)
4.3 获取港股数据
python
# 宁德时代 HK3750
data = get_kline_data('HK3750', period='min5', count=5)
print(data)
五、完整源码
python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
K线历史数据获取工具
支持:A股 / 港股 / 期货 多市场K线数据获取
"""
import requests
import json
API_URL = "http://ddnsapi.top:18080/api/v1/request"
def get_kline_data(code, period="day", count=5):
data = {
'req_type': 'klinedata',
'code': code,
'period': period,
'count': count
}
try:
response = requests.post(API_URL, data=data, timeout=10)
response.raise_for_status()
return json.loads(response.text)
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
return None
def format_kline_data(raw_data):
if not raw_data or 'items' not in raw_data:
print("数据格式异常")
return
print(f"\\n{'='*60}")
print(f"证券代码: {raw_data['code']}")
print(f"字段说明: {raw_data['fields']}")
print("-" * 60)
for item in raw_data['items']:
print(f"时间戳: {item[0]} | 开盘: {item[1]} | 最高: {item[2]} | 最低: {item[3]} | 收盘: {item[4]} | 总量: {item[5]}")
print(f"{'='*60}\\n")
if __name__ == "__main__":
# 期货测试
print("【期货 – lu9999】")
format_kline_data(get_kline_data('lu9999', 'min5', 5))
# A股测试
print("【A股 – 贵州茅台 600519】")
format_kline_data(get_kline_data('600519', 'min5', 5))
# 港股测试
print("【港股 – 宁德时代 HK3750】")
format_kline_data(get_kline_data('HK3750', 'min5', 5))
六、注意事项
七、总结
这个API接口非常适合量化交易初学者快速获取市场数据进行研究分析。如果对你有帮助,欢迎点赞、收藏、转发!
💡 关注我,获取更多量化交易干货!
🔔 提示:文章中的接口地址请以实际测试为准,如有变动请关注最新更新。



