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 分鐘, ..., 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 呼叫方案與費率優惠。
延伸閱讀: