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

在全球化配置成为量化交易主流趋势的今天,中东地区的金融市场,特别是以色列特拉维夫证券交易所(TASE),因其在高科技与军工领域的独特地位,吸引了大量跨境投资者的目光。成功的量化交易离不开高质量的数据源。iTick 作为一家专业的金融数据代理机构,为开发者提供了覆盖全球的实时行情 API 解决方案。
一、为什么选择 iTick 接入 TASE 市场?
在接入一个相对小众但潜力巨大的市场(如以色列股市)时,数据源的稳定性与覆盖度至关重要。
- 多市场统一覆盖:iTick 不仅支持主流的美股、港股、A 股,还广泛覆盖了包括以色列、新加坡、印度、德国等在内的全球交易所数据。无论你想交易 TASE 的股票还是进行跨市场套利,一个 API 即可搞定。
- 开发者友好:提供标准的 RESTful 接口(适合批量获取历史数据)和低延迟的 WebSocket 接口(适合实时行情推送),数据结构统一,上手极快。
- 免费套餐:对于个人量化开发者和初创团队,iTick 提供了包含一定调用额度的免费套餐,足以覆盖策略回测和初步验证的需求。
二、快速开始:准备你的 API 密钥
在开始编写代码之前,你需要完成以下两步:
- 注册账户:访问 iTick 官网 进行注册,过程仅需 30 秒。
- 获取 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 调用方案和费率优惠。
延伸阅读: