馬來西亞股票 API 接入指南:即時行情與歷史數據

馬來西亞交易所(Bursa Malaysia)作為東盟核心資本市場,匯聚了 Maybank、大眾銀行(Public Bank)、國家能源(Tenaga Nasional)等優質藍籌股,吸引全球量化交易者與跨境投資人的高度關注。然而,獲取穩定、低延遲的馬來西亞股票數據一直是開發者的痛點:免費介面延遲高、歷史數據不完整、缺乏 WebSocket 支援……本文將為您全面解析如何利用 iTick API 快速接入馬來西亞股票數據,並提供從即時行情到歷史回測的完整解決方案。
為什麼需要專業的馬來西亞股票 API?
在投資馬來西亞股市或開發量化策略時,數據品質直接決定成敗。以下是開發者常遇到的挑戰:
| 挑戰 | 免費介面的問題 | iTick 的解決方案 |
|---|---|---|
| 數據延遲 | 15 分鐘延遲,錯失交易機會 | WebSocket 即時推送 <50ms |
| 歷史數據缺失 | 僅 1–2 年,無法進行長週期回測 | 超過 15 年日線/分鐘線 |
| 市場覆蓋不全 | 僅主流指數成分股 | 大馬交易所全部股票 |
| 協議單一 | 僅 REST,無法即時推送 | REST + WebSocket + FIX |
| 穩定性差 | 頻繁斷線,無自動重連機制 | 企業級高可用架構 |
iTick 作為專業的全球金融數據服務商,針對馬來西亞市場(region=MY)提供全面數據覆蓋與開發者友善的 API 介面,且免費方案已包含基礎即時行情,是個人與團隊入門的理想選擇。
iTick 馬來西亞股票 API 核心功能一覽
iTick 為馬來西亞股票市場提供以下關鍵數據服務,滿足不同場景需求:
- 即時行情(REST API):取得最新價、漲跌幅、成交量、盤口快照,延遲 <100ms
- 歷史 K 線(REST API):支援日線、週線、月線及分鐘線,最長可達 30 年以上,適合策略回測
- WebSocket 即時推送:訂閱
tick(逐筆成交)、quote(報價)、depth(盤口深度),延遲 <50ms - 公司基本面:財務指標、估值數據
- 多市場支援:同一套 API 可無縫切換馬來西亞、新加坡、韓國、港台、日本、印度、泰國、越南等多個市場
一、5 分鐘快速接入:獲取馬來西亞股票即時行情
1. 註冊並取得 API Token
前往 iTick 官網 註冊帳號,約 30 秒完成。在控制台取得您的專屬 Token。
2. 安裝 Python 依賴套件
pip install requests websocket-client
3. 獲取即時報價(REST API)
以下程式碼取得馬來西亞 Maybank(代碼:MAYBANK)的即時行情:
import requests
API_TOKEN = "your_token_here" # 請替換為您的實際 Token
BASE_URL = "https://api.itick.org"
def get_malaysia_quote(symbol):
url = f"{BASE_URL}/stock/quote"
params = {"region": "MY", "code": symbol}
headers = {"token": API_TOKEN}
try:
resp = requests.get(url, params=params, headers=headers, timeout=5)
data = resp.json()
if data.get("code") == 0:
quote = data["data"]
print(f"📈 {quote.get('n')} ({quote.get('s')})")
print(f"最新價: {quote.get('ld')} MYR")
print(f"漲跌幅: {quote.get('chp')}%")
print(f"成交量: {quote.get('v')}")
return quote
else:
print(f"API 錯誤: {data.get('msg')}")
except Exception as e:
print(f"請求異常: {e}")
# 呼叫範例
get_malaysia_quote("MAYBANK") # Maybank
4. 獲取歷史 K 線(用於回測)
歷史數據是量化回測的基石。以下取得 Maybank 最近 100 個交易日的數據:
def get_malaysia_kline(symbol, ktype=8, limit=100):
"""ktype:8=日線, 9=週線, 10=月線, 1~5=分鐘線"""
url = f"{BASE_URL}/stock/kline"
params = {"region": "MY", "code": symbol, "kType": ktype, "limit": limit}
headers = {"token": API_TOKEN}
resp = requests.get(url, params=params, headers=headers)
data = resp.json()
if data.get("code") == 0:
kline_list = data.get("data", [])
print(f"取得 {len(kline_list)} 條 K 線數據")
for item in kline_list[-5:]: # 顯示最近 5 條
print(f"時間:{item['t']} 開:{item['o']} 高:{item['h']} 低:{item['l']} 收:{item['c']} 量:{item['v']}")
else:
print(f"錯誤: {data.get('msg')}")
get_malaysia_kline("MAYBANK", limit=10) # 最近 10 個交易日
5. WebSocket 即時推送(低延遲)
對於量化策略,即時性至關重要。以下訂閱馬來西亞三檔股票的即時報價:
import websocket
import json
import threading
import time
WS_URL = "wss://api.itick.org/stock"
API_TOKEN = "your_token_here"
def on_message(ws, message):
data = json.loads(message)
if "data" in data:
md = data["data"]
if md.get("type") == "quote":
print(f"[{md['s']}] 最新: {md['ld']} MYR | 漲跌:{md['chp']}%")
def on_open(ws):
# 訂閱格式:股票代碼$MY
subscribe = {
"ac": "subscribe",
"params": "MAYBANK$MY,PBBANK$MY,TENAGA$MY",
"types": "quote"
}
ws.send(json.dumps(subscribe))
def send_ping(ws):
while True:
time.sleep(30)
ws.send(json.dumps({"ac": "ping", "params": str(int(time.time()*1000))}))
ws = websocket.WebSocketApp(WS_URL, header={"token": API_TOKEN},
on_open=on_open, on_message=on_message)
threading.Thread(target=send_ping, args=(ws,), daemon=True).start()
ws.run_forever()
二、馬來西亞市場核心要點
股票代碼與市場標識
- 本地代碼:如 MAYBANK、PBBANK、TENAGA(不區分大小寫)
- REST 請求:
region=MY+code=MAYBANK - WebSocket 訂閱:
MAYBANK$MY
主流馬來西亞股票列表(SEO 關鍵詞覆蓋)
| 公司名稱 | 股票代碼 | 所屬板塊 | 業務簡介 |
|---|---|---|---|
| Malayan Banking (Maybank) | MAYBANK | 金融 | 馬來西亞最大銀行集團 |
| Public Bank Berhad (大眾銀行) | PBBANK | 金融 | 領先的零售銀行 |
| Tenaga Nasional Berhad (國家能源) | TENAGA | 公用事業 | 國家電力巨頭 |
| CIMB Group Holdings Berhad | CIMB | 金融 | 區域性綜合銀行集團 |
| Petronas Chemicals Group Berhad | PCHEM | 化工 | 石化產品領導者 |
| IHH Healthcare Berhad | IHH | 醫療保健 | 主要私立醫院營運商 |
| Axiata Group Berhad | AXIATA | 電信 | 跨國電信公司 |
| IOI Corporation Berhad | IOICORP | 種植業 | 全球棕櫚油領導者 |
交易時間與貨幣
- 交易時段:馬來西亞時間 09:00 – 17:00(午休 13:00 – 14:30)
- 對應北京時間:相同(無時差)
- 交易貨幣:馬來西亞令吉(MYR)
三、為什麼 iTick 是馬來西亞股票 API 的最佳選擇?
透過與主流數據來源對比,iTick 在以下幾個面向脫穎而出:
| 對比維度 | iTick API | 傳統券商 API | 免費公共介面 |
|---|---|---|---|
| 即時性 | WebSocket <50ms | REST 輪詢 >500ms | 15 分鐘延遲 |
| 歷史數據 | 30 年+ 日線/分鐘線 | 通常 5–10 年 | 僅 1–2 年 |
| 市場覆蓋 | 大馬交易所全部股票 | 僅可交易標的 | 指數成分股 |
| 協議支援 | REST + WebSocket + FIX | 通常僅 REST | 僅 REST |
| 免費方案 | ✅ 基礎行情無限呼叫 | ❌ 需開戶 | ✅ 但有限制 |
| 多資產支援 | 股票/外匯/期貨/基金 | 僅股票 | 僅股票 |
真實場景應用案例
- 量化交易者:透過 WebSocket 即時訂閱 Maybank、大眾銀行的報價數據(延遲<50ms),結合長週期歷史 K 線進行回測,開發 alpha 策略。
- 金融應用開發者:利用 REST API 快速將馬來西亞股票行情整合進 App,免費方案足以應付初期用戶量。
- 跨境投資人:取得 Tenaga、PCHEM 等股票的基本面數據,輔助投資決策。
四、常見問題解答(FAQ)
Q1:iTick 免費方案能取得馬來西亞股票的歷史數據嗎?
A:可以。免費方案包含歷史日線數據(有限制數量),足以進行個人學習與輕量級回測。如需超長週期或分鐘線,可升級付費方案。
Q2:WebSocket 訂閱需要自己處理重連嗎?
A:生產環境建議實作自動重連機制。本文範例程式碼已提供基礎心跳邏輯,詳細可參考 iTick 官方文件。
Q3:馬來西亞股票代碼是否區分大小寫?
A:不區分,但建議使用官方大寫格式(如 MAYBANK)以保持一致性。
Q4:是否支援取得公司財報等基本面數據?
A:支援。iTick 提供財務指標介面,可透過 /stock/info 取得,詳細參數請參考 官方文件。
Q5:如何獲得技術支援?
A:iTick 官網提供完整文件與技術支援信箱,付費用戶享有專屬服務 @iticksupport。
五、總結
透過本文,您已掌握使用 iTick API 接入馬來西亞股票數據的核心方法。從即時行情、歷史 K 線到 WebSocket 推送,iTick 提供一站式、低延遲、高可用的數據服務。無論您是開發量化交易系統、智能投顧應用,還是進行學術研究,iTick 都能滿足您的需求。
立即前往 iTick 官網 註冊,開啟您的馬來西亞股市數據之旅!
延伸閱讀: