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

  1. iTick
  2. 教程
馬來西亞股票 API 接入指南:即時行情與歷史數據 - iTick
馬來西亞股票 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 BerhadCIMB金融區域性綜合銀行集團
Petronas Chemicals Group BerhadPCHEM化工石化產品領導者
IHH Healthcare BerhadIHH醫療保健主要私立醫院營運商
Axiata Group BerhadAXIATA電信跨國電信公司
IOI Corporation BerhadIOICORP種植業全球棕櫚油領導者

交易時間與貨幣

  • 交易時段:馬來西亞時間 09:00 – 17:00(午休 13:00 – 14:30)
  • 對應北京時間:相同(無時差)
  • 交易貨幣:馬來西亞令吉(MYR)

三、為什麼 iTick 是馬來西亞股票 API 的最佳選擇?

透過與主流數據來源對比,iTick 在以下幾個面向脫穎而出:

對比維度iTick API傳統券商 API免費公共介面
即時性WebSocket <50msREST 輪詢 >500ms15 分鐘延遲
歷史數據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 官網 註冊,開啟您的馬來西亞股市數據之旅!


延伸閱讀: