API接口实战:获取现货黄金、原油及美股K线数据

引言

在做回测或技术指标分析时,历史K线数据是基础。很多开发者会遇到数据清洗难、频率限制严格、返回体过大等问题。

最近在调研行情数据源时,发现了一个脉动数据行情平台,它支持黄金(XAUUSD)、原油(USOIL)、美股(如AAPL)以及沪深A股的接口,其设计简洁且支持Gzip压缩,大幅提升了传输效率。本文将以该接口为例,分享如何高效获取和管理多周期K线数据。

1. K线接口概览

该接口通过HTTP GET方式请求,支持标准的RESTful风格。最大的亮点是支持从1分钟到月线 的多周期切换,且通过rows参数灵活控制数据量。

基础参数:

  • code:产品代码(如 XAUUSD代表黄金)

  • time:周期 (1m, 5m, 15m, 1h, 1d, 1M)

  • rows:获取条数

请求示例:

python 复制代码
# 获取黄金最近40条1小时线
curl "http://39.107.99.235:1008/redis.php?code=xauusd&time=1h&rows=40"

# 获取比特币1天线
curl "http://39.107.99.235:1008/redis.php?code=btcusdt&time=1d&rows=100"
2. 性能优化:必开Gzip

金融数据重复文本多,压缩率极高。文档中特别强调在Header中加入Accept-Encoding: gzip。实测下来,原本100KB的数据可压缩至10KB左右,对于云服务器带宽节省显著。

Python请求优化示例:

python 复制代码
import requests
import pandas as pd

headers = {
    'Accept-Encoding': 'gzip'  # 关键:开启压缩
}
# 获取原油1分钟线
url = "http://39.107.99.235:1008/redis.php?code=usoil&time=1m&rows=200"
response = requests.get(url, headers=headers)

# 注意:如果requests库自动解压,可直接解析json
data = response.json()
print(f"获取到 {len(data)} 条数据")
3. 数据结构解析

该接口返回的是一个数组,每个K线包含7个要素。这种格式非常紧凑,适合直接存入InfluxDB或ClickHouse等时序数据库。

返回格式示例:

python 复制代码
[
  1623061860000,   // 毫秒时间戳
  36500,           // 开盘价
  36540.08,        // 最高价
  36500,           // 最低价
  36510.65,        // 收盘价
  "2021-06-07 18:31:00", // 时间字符串
  100              // 成交量
]

解析技巧: 建议直接转换成Pandas DataFrame进行处理。

python 复制代码
columns = ['timestamp', 'open', 'high', 'low', 'close', 'datetime', 'volume']
df = pd.DataFrame(data, columns=columns)
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
print(df.head())
4. 产品分类与代码查询

面对几百个品种(外汇、期货、股票),记忆代码是不现实的。该平台提供了两个元数据接口:

  1. 查询分类 (getCategory.php):获取"外汇"、"数字货币"、"国际期货"等大类ID。

  2. 查询代码 (getSymbolList.php?category=1):根据分类ID拉取该类别下所有产品代码及中文名。

逻辑流程:

先调getCategory.php -> 获取ID -> 调getSymbolList.php -> 获取具体code -> 订阅行情。

结语

该行情数据接口覆盖了从外汇、贵金属到全球股指的广泛资产,尤其适合需要同时做国内外市场的量化团队。通过合理的Gzip配置和频率控制,开发者可以快速搭建一个稳健的数据中台。

相关推荐
Li emily2 个月前
如何通过外汇API平台快速实现实时数据接入?
开发语言·python·api·fastapi·美股
Li emily3 个月前
如何获取免费加密货币历史数据和实时行情接口
人工智能·api·美股