亚太股票数据API:日股、韩股、新加坡股票、印尼股票市场实时行情,实时数据API-python

1 阅读6分钟

在量化交易和金融数据分析领域,获取实时、高质量的股票行情数据是关键。亚太地区作为全球经济的重要引擎,日本、韩国、新加坡和印尼等市场的股市行情备受关注。本文将介绍一个高效的亚太股市数据 API,支持日本股市行情、韩国股市行情、新加坡股市行情和印尼股市行情的实时数据查询。该 API 提供实时价格、K 线数据、历史数据查询、实时 tick、实时报价、低延时报价 api、盘口数据和逐笔成交等功能,特别适合量化交易开发者使用。我们将重点通过 Python 代码示例来演示如何实现这些功能。

亚太股市图片.png

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 代码演示如何使用这些功能。假设你已经安装了requestswebsocket-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/