在量化交易和金融数据分析领域,获取实时、高质量的股票行情数据是关键。亚太地区作为全球经济的重要引擎,日本、韩国、新加坡和印尼等市场的股市行情备受关注。本文将介绍一个高效的亚太股市数据 API,支持日本股市行情、韩国股市行情、新加坡股市行情和印尼股市行情的实时数据查询。该 API 提供实时价格、K 线数据、历史数据查询、实时 tick、实时报价、低延时报价 api、盘口数据和逐笔成交等功能,特别适合量化交易开发者使用。我们将重点通过 Python 代码示例来演示如何实现这些功能。
API 概述
这个亚太股市数据 API 专注于日本(JP)、韩国(KR)、新加坡(SG)和印尼(ID)等市场的股票行情数据。数据源直接对接交易所,确保低延迟和高可用性。API 支持 RESTful 接口和 WebSocket 推送,覆盖实时 tick、实时报价、盘口数据、逐笔成交以及历史 K 线数据查询。无论是构建投资仪表盘、进行量化交易策略回测,还是监控市场波动,这个 API 都能提供可靠的支持。
主要优势:
- 实时数据:毫秒级更新,支持实时价格和逐笔成交。
- 历史数据查询:批量获取多股 K 线数据,包括开盘价、最高价、最低价、收盘价和成交量(OHLCV)。
- 多市场覆盖:专注于亚太地区,轻松切换日本股市行情、韩国股市行情、新加坡股市行情和印尼股市行情。
- 低延时报价 API:适合高频交易场景。
- 易集成:提供 Python、Java、Go 等多种语言示例,这里重点用 Python 实现。
在使用前,需要获取 API token,并注意速率限制和订阅计划。
核心功能详解
1. 实时成交(Tick 数据)
这个功能提供股票的逐笔成交数据,包括最新价、成交数量和时间戳。适用于监控实时 tick 和逐笔成交,支持低延时报价 api。
- 请求路径:GET /stock/tick?region={region}&code={code}
- 参数:
- region:市场代码(如 JP 日本、KR 韩国、SG 新加坡、ID 印尼)。
- code:股票代码。
- 响应:包含产品代码、最新价、时间戳和成交数量。
2. 批量历史 K 线查询
支持多股同时查询历史 K 线数据,周期从分钟线到月线。适合历史数据查询和 K 线数据分析。
- 请求路径:GET /stock/klines?region={region}&codes={codes}&kType={kType}&limit={limit}&et={et}
- 参数:
- region:市场代码。
- codes:多个股票代码,用逗号分隔。
- kType:K 线类型(1:分钟 K,8:日 K 等)。
- limit:K 线数量。
- et:截止时间戳(可选)。
- 响应:OHLCV 数据数组,包括成交额。
3. WebSocket 实时行情推送
通过 WebSocket 实现实时报价、盘口数据和逐笔成交的推送。适合需要持续监控的应用,如量化交易系统。
- 连接:wss://api.itick.org/stock,携带 token header。
- 订阅:发送 JSON 指令订阅股票和类型(tick、quote、depth)。
- 心跳:每 30 秒发送 ping 保持连接。
Python 代码示例
下面通过 Python 代码演示如何使用这些功能。假设你已经安装了requests和websocket-client库(pip install requests websocket-client)。
示例 1:获取实时成交(Tick 数据)
import requests
# API基础URL和token
BASE_URL = "https://api.itick.org"
TOKEN = "your_token" # 替换为你的API token
def get_tick_data(region, code):
url = f"{BASE_URL}/stock/tick?region={region}&code={code}"
headers = {
"accept": "application/json",
"token": TOKEN
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
if data['code'] == 0:
tick = data['data']
print(f"股票 {tick['s']} 最新价: {tick['ld']}, 成交量: {tick['v']}, 时间: {tick['t']}")
else:
print("请求失败:", data['msg'])
else:
print("HTTP错误:", response.status_code)
# 示例:查询日本股市行情(例如Toyota股票,代码7203)
get_tick_data("JP", "7203")
# 示例:查询韩国股市行情(例如Samsung,代码005930)
get_tick_data("KR", "005930")
# 示例:查询新加坡股市行情(例如DBS银行,代码D05)
get_tick_data("SG", "D05")
# 示例:查询印尼股市行情(例如Bank Central Asia,代码BBCA)
get_tick_data("ID", "BBCA")
这个示例展示了如何获取实时 tick 数据,支持日本股市行情、韩国股市行情等市场的低延时报价 api。
示例 2:批量历史 K 线查询
import requests
def get_klines(region, codes, k_type, limit):
url = f"{BASE_URL}/stock/klines?region={region}&codes={codes}&kType={k_type}&limit={limit}"
headers = {
"accept": "application/json",
"token": TOKEN
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
if data['code'] == 0:
for code, klines in data['data'].items():
print(f"股票 {code} 的K线数据:")
for k in klines:
print(f"时间: {k['t']}, 开: {k['o']}, 高: {k['h']}, 低: {k['l']}, 收: {k['c']}, 量: {k['v']}")
else:
print("请求失败:", data['msg'])
else:
print("HTTP错误:", response.status_code)
# 示例:批量查询韩国股市行情和新加坡股市行情的日K线(5条)
get_klines("KR", "005930,000660", 8, 5) # Samsung和SK Hynix
get_klines("SG", "D05,O39", 8, 5) # DBS和OCBC
这个功能便于历史数据查询和 K 线数据分析,支持多股批量操作。
示例 3:WebSocket 实时行情推送
import websocket
import json
import threading
import time
WS_URL = "wss://api.itick.org/stock"
def on_message(ws, message):
data = json.loads(message)
if data.get("code") == 1 and data.get("msg") == "Connected Successfully":
print("连接成功")
elif data.get("resAc") == "auth" and data.get("code") == 1:
print("认证成功")
subscribe(ws)
elif data.get("resAc") == "subscribe" and data.get("code") == 1:
print("订阅成功")
elif data.get("data"):
market_data = data["data"]
data_type = market_data.get("type")
symbol = market_data.get("s")
print(f"{data_type} 数据 for {symbol}: {market_data}")
def on_error(ws, error):
print("错误:", error)
def on_close(ws, close_status_code, close_msg):
print("连接关闭")
def on_open(ws):
print("WebSocket连接打开")
def subscribe(ws):
subscribe_msg = {
"ac": "subscribe",
"params": "7203$JP,005930$KR,D05$SG,BBCA$ID", # 日本、韩国、新加坡、印尼股票
"types": "tick,quote,depth" # 实时tick、报价、盘口数据
}
ws.send(json.dumps(subscribe_msg))
print("订阅消息已发送")
def send_ping(ws):
while True:
time.sleep(30)
ping_msg = {
"ac": "ping",
"params": str(int(time.time() * 1000))
}
ws.send(json.dumps(ping_msg))
print("Ping 已发送")
if __name__ == "__main__":
ws = websocket.WebSocketApp(
WS_URL,
header={"token": TOKEN},
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close
)
ping_thread = threading.Thread(target=send_ping, args=(ws,))
ping_thread.daemon = True
ping_thread.start()
ws.run_forever()
这个 WebSocket 示例实现了实时报价、盘口数据和逐笔成交的推送,适用于量化交易场景。
结语
通过这个亚太股市数据 API,你可以轻松获取日本股市行情、韩国股市行情、新加坡股市行情和印尼股市行情的股票行情数据。Python 实现简单高效,适合初学者和专业开发者。注意在实际使用中,遵守 API 的速率限制,并处理异常情况。如果你是量化交易爱好者,这个 API 将大大提升你的数据获取效率。
温馨提示:本文仅供参考,不构成任何投资建议。市场有风险,投资需谨慎
参考文档:docs.itick.org/rest-api/st…
GitHub:github.com/itick-org/