TASE 以色列股市 API 接口详解:获取股票数据、行情与量化对接

  1. iTick
  2. 教程
TASE 以色列股市 API 接口详解:获取股票数据、行情与量化对接 - iTick
TASE 以色列股市 API 接口详解:获取股票数据、行情与量化对接

在全球化配置成为量化交易主流趋势的今天,中东地区的金融市场,特别是以色列特拉维夫证券交易所(TASE),因其在高科技与军工领域的独特地位,吸引了大量跨境投资者的目光。成功的量化交易离不开高质量的数据源。iTick 作为一家专业的金融数据代理机构,为开发者提供了覆盖全球的实时行情 API 解决方案。

一、为什么选择 iTick 接入 TASE 市场?

在接入一个相对小众但潜力巨大的市场(如以色列股市)时,数据源的稳定性与覆盖度至关重要。

  1. 多市场统一覆盖:iTick 不仅支持主流的美股、港股、A 股,还广泛覆盖了包括以色列、新加坡、印度、德国等在内的全球交易所数据。无论你想交易 TASE 的股票还是进行跨市场套利,一个 API 即可搞定。
  2. 开发者友好:提供标准的 RESTful 接口(适合批量获取历史数据)和低延迟的 WebSocket 接口(适合实时行情推送),数据结构统一,上手极快。
  3. 免费套餐:对于个人量化开发者和初创团队,iTick 提供了包含一定调用额度的免费套餐,足以覆盖策略回测和初步验证的需求。

二、快速开始:准备你的 API 密钥

在开始编写代码之前,你需要完成以下两步:

  1. 注册账户:访问 iTick 官网 进行注册,过程仅需 30 秒。
  2. 获取 Token:登录后,在控制台找到你的专属 API 密钥(Token),后续所有的请求都需要在 Header 中包含这个 Token 进行身份验证。

三、核心接口详解与 Python 实战

iTick 的 API 基址为 https://api.itick.org。所有请求需在 headers 中包含 accept: application/json 和你的 token

1. 查询 TASE 股票实时报价(REST API)

假设我们需要获取以色列一家知名企业的实时行情。虽然 TASE 的具体代码需要参考 iTick 的产品清单,但接口格式是统一的。我们以获取实时报价为例:

请求说明

  • 接口: /stock/quote
  • 参数:
    • region: 市场代码,以色列市场代码为 IL
    • code: 股票代码(如以色列的 TEVA)。

Python 示例代码

      import requests

# 配置你的 API 密钥
API_TOKEN = "your_token_here"
headers = {
    "accept": "application/json",
    "token": API_TOKEN
}

# 定义请求参数
# 实际使用时请参考 iTick 官方产品列表获取正确的 code
region = "IL"
code = "TEVA"

url = f"https://api.itick.org/stock/quote?region={region}&code={code}"

try:
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        data = response.json().get('data', {})
        print(f"股票: {code}.{region}")
        print(f"最新价: {data.get('ld')}")          # latest price
        print(f"涨跌幅: {data.get('chp')}%")        # change percent
        print(f"开盘价: {data.get('o')}")           # open price
        print(f"最高价: {data.get('h')}")           # high price
        print(f"最低价: {data.get('l')}")           # low price
        print(f"成交量: {data.get('v')}")           # volume
    else:
        print(f"请求失败,状态码: {response.status_code}, 错误: {response.text}")
except Exception as e:
    print(f"网络异常: {e}")

    

这段代码演示了如何用不到 10 行核心逻辑就获取到 TASE 股票的实时买卖报价,为你的量化模型提供即时的输入数据。

2. 获取历史 K 线数据(用于回测)

量化策略在实盘前必须经过严格的回测。iTick 的 REST API 同样提供了历史 K 线数据下载功能,支持从分钟线到月线的多种周期。

请求说明

  • 接口: /stock/kline
  • 参数:
    • kType: K 线类型(如 1: 1 分钟, 2: 5 分钟, 3: 15 分钟, 4: 30 分钟, 5: 1 小时, 6: 2 小时, 7: 4 小时, 8: 日 K, 9: 周 K, 10: 月 K)。
    • limit: 返回的 K 线根数。
    • et: 截止时间戳(可选)。

Python 示例代码

      import requests
import pandas as pd

API_TOKEN = "your_token_here"
headers = {
    "accept": "application/json",
    "token": API_TOKEN
}

# 获取以色列股票的日线数据
region = "IL"
code = "TEVA"  # 示例代码
kType = "8"    # 8 代表日线
limit = "100"  # 获取最近100根

url = f"https://api.itick.org/stock/kline?region={region}&code={code}&kType={kType}&limit={limit}"

response = requests.get(url, headers=headers)

if response.status_code == 200:
    kline_data = response.json().get('data', [])
    if kline_data:
        # 将数据转换为 pandas DataFrame,便于分析
        df = pd.DataFrame(kline_data)
        # 通常返回的字段包括:t(时间), o(开), h(高), l(低), c(收), v(量)
        df = df.rename(columns={'t': 'timestamp', 'o': 'open', 'h': 'high', 'l': 'low', 'c': 'close', 'v': 'volume'})
        df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s')  # 转换时间戳
        print(df[['timestamp', 'open', 'high', 'low', 'close', 'volume']].head())
    else:
        print("未获取到数据")
else:
    print("请求失败")

    

通过这种方式,你可以轻松构建一个包含 TASE 市场的历史数据库,用于验证你的双均线、动量等量化策略在以色列市场的表现。

3. 实时行情推送(WebSocket)

对于高频交易或需要实时监控的程序,WebSocket 是更好的选择。iTick 提供了专门的 WebSocket 端点,可以在连接建立后订阅感兴趣的标的。

Python 示例代码

      import websocket
import json
import threading

WS_URL = "wss://api.itick.org/stock"  # 股票行情WebSocket地址
API_TOKEN = "your_token_here"

def on_open(ws):
    """连接建立后,发送订阅消息"""
    print("连接已打开,正在订阅TASE股票...")

    # 订阅消息:订阅以色列市场的TEVA股票的报价(quote)和成交(tick)
    subscribe_msg = {
        "ac": "subscribe",
        "params": "TEVA$IL",  # 格式:代码$市场
        "types": "quote,tick"   # 订阅数据类型:报价和逐笔成交
    }
    ws.send(json.dumps(subscribe_msg))

def on_message(ws, message):
    """处理收到的实时数据"""
    data = json.loads(message)
    # 这里可以添加你的策略逻辑
    print(f"实时数据: {data}")

def on_error(ws, error):
    print(f"错误: {error}")

def on_close(ws, close_status_code, close_msg):
    print("连接已关闭")

if __name__ == "__main__":
    # 在header中传递token
    ws = websocket.WebSocketApp(WS_URL,
                                header={"token": API_TOKEN},
                                on_open=on_open,
                                on_message=on_message,
                                on_error=on_error,
                                on_close=on_close)

    # 在后台线程中运行WebSocket客户端,避免阻塞主线程
    wst = threading.Thread(target=ws.run_forever)
    wst.start()

    # 这里可以继续执行其他任务
    try:
        while True:
            # 主线程保持运行
            pass
    except KeyboardInterrupt:
        ws.close()

    

这段代码展示了如何通过 WebSocket 建立长连接,一旦 TASE 市场有新的报价或成交,你的程序会立即收到推送,延迟通常在毫秒级别。

四、量化对接:构建简单的交易信号

有了数据,我们就能构建策略。以下是一个基于双均线策略的简化版伪代码,它结合了我们上面获取数据的方法。

      # 假设我们已经通过 REST API 获取了 TASE 股票的日线数据并存在 df 中
# df 包含 'close' 列

import talib

# 计算短期和长期移动平均线
df['MA_Short'] = talib.SMA(df['close'], timeperiod=20)
df['MA_Long'] = talib.SMA(df['close'], timeperiod=60)

# 获取最新两条数据判断金叉/死叉
if df['MA_Short'].iloc[-2] <= df['MA_Long'].iloc[-2] and df['MA_Short'].iloc[-1] > df['MA_Long'].iloc[-1]:
    print("金叉信号出现!考虑买入 TASE 股票")
    signal = "BUY"
elif df['MA_Short'].iloc[-2] >= df['MA_Long'].iloc[-2] and df['MA_Short'].iloc[-1] < df['MA_Long'].iloc[-1]:
    print("死叉信号出现!考虑卖出 TASE 股票")
    signal = "SELL"
else:
    signal = "HOLD"
    print("无明确信号,继续持有或观望")

# 此处可将信号接入你的交易系统

    

通过 iTick 实时推送的 WebSocket 数据流,你可以将上述逻辑放入 on_message 函数中,实现真正的自动化程序化交易。

五、总结

iTick API 大幅降低了 TASE 以色列股市数据的对接门槛,无需复杂的本地券商授权和协议适配,仅通过简单的 Python 代码即可获取实时行情、历史 K 线等核心数据。无论是跨境金融数据应用、量化策略开发,还是股市监控系统搭建,iTick API 都能提供稳定、完整的 TASE 数据支撑。 如果需要更定制化的对接方案(如批量股票数据调取、量化策略集成),可联系 iTick 官方技术支持,获取专属的 API 调用方案和费率优惠。

延伸阅读: