Go SDK REST API 和 WebSocket 實時推送接口 金融數據API文檔 SDK & 開發工具 iTick 官方 Go SDK,提供基礎、股票、指數、期貨、基金、外匯、加密貨幣數據的 REST API 查詢和 WebSocket 實時數據訂閱功能。

Go SDK 文檔

Go 語言版本的 iTick API SDK,提供基礎、股票、指數、期貨、基金、外匯、加密貨幣數據的 REST API 查詢和 WebSocket 實時數據訂閱功能。

功能特性

  • 支持 REST API 查詢基礎、股票、指數、期貨、基金、外匯、加密貨幣數據
  • 支持 WebSocket 實時數據訂閱
  • 自動重連機制
  • 心跳保持連接
  • 回調式事件處理

安裝

go get io.github.itick/sdk

快速開始

初始化客戶端

package main

import (
    "io.github.itick/sdk"
)

func main() {
    token := "your_api_token"
    client := sdk.NewClient(token)
}

REST API 使用

外匯數據查詢

// 獲取外匯實時成交
tick, err := client.GetForexTick("GB", "EURUSD")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Forex Tick: %+v\n", tick)

// 獲取外匯實時報價
quote, err := client.GetForexQuote("GB", "EURUSD")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Forex Quote: %+v\n", quote)

// 獲取外匯實時盤口
depth, err := client.GetForexDepth("GB", "EURUSD")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Forex Depth: %+v\n", depth)

// 獲取外匯歷史K線
kline, err := client.GetForexKline("GB", "EURUSD", 2, 10, nil)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Forex Kline: %+v\n", kline)

股票數據查詢

// 獲取股票實時成交
tick, err := client.GetStockTick("US", "AAPL")
if err != nil {
    log.Fatal(err)
}

// 獲取股票實時報價
quote, err := client.GetStockQuote("US", "AAPL")
if err != nil {
    log.Fatal(err)
}

// 獲取股票實時盤口
depth, err := client.GetStockDepth("US", "AAPL")
if err != nil {
    log.Fatal(err)
}

// 獲取股票歷史K線
kline, err := client.GetStockKline("US", "AAPL", 2, 10, nil)
if err != nil {
    log.Fatal(err)
}

加密貨幣數據查詢

// 獲取加密貨幣實時成交
tick, err := client.GetCryptoTick("BA", "BTCUSDT")
if err != nil {
    log.Fatal(err)
}

// 獲取加密貨幣實時報價
quote, err := client.GetCryptoQuote("BA", "BTCUSDT")
if err != nil {
    log.Fatal(err)
}

// 獲取加密貨幣實時盤口
depth, err := client.GetCryptoDepth("BA", "BTCUSDT")
if err != nil {
    log.Fatal(err)
}

// 獲取加密貨幣歷史K線
kline, err := client.GetCryptoKline("BA", "BTCUSDT", 2, 10, nil)
if err != nil {
    log.Fatal(err)
}

WebSocket 使用

SDK 提供了增強的 WebSocket 功能,包括自動重連和心跳保持,用戶無需手動管理連接狀態。

設置回調函數

// 設置消息處理器
client.SetMessageHandler(func(message []byte) {
    fmt.Printf("Received WebSocket message: %s\n", message)
})

// 設置錯誤處理器
client.SetErrorHandler(func(err error) {
    log.Printf("WebSocket error: %v\n", err)
})

連接和訂閱

// 連接外匯 WebSocket
err := client.ConnectForexWebSocket()
if err != nil {
    log.Fatal(err)
}
defer client.CloseWebSocket()

// 發送訂閱消息
subscribeMsg := []byte(`{"action": "subscribe", "codes": ["EURUSD"]}`)
err = client.SendWebSocketMessage(subscribeMsg)
if err != nil {
    log.Fatal(err)
}

// 等待接收消息
time.Sleep(10 * time.Second)

// 檢查連接狀態
fmt.Printf("WebSocket connected: %v\n", client.IsWebSocketConnected())

其他 WebSocket 連接

// 連接股票 WebSocket
err := client.ConnectStockWebSocket()

// 連接加密貨幣 WebSocket
err := client.ConnectCryptoWebSocket()

API 接口列表

基礎 (Basics)

方法說明
GetSymbolList獲取符號列表
GetSymbolHolidays獲取節假日信息

股票 (Stock)

方法說明
GetStockInfo獲取股票信息
GetStockIPO獲取股票IPO信息
GetStockSplit獲取股票分拆信息
GetStockTick獲取股票實時成交
GetStockQuote獲取股票實時報價
GetStockDepth獲取股票實時盤口
GetStockKline獲取股票歷史K線
GetStockTicks獲取股票批量實時成交
GetStockQuotes獲取股票批量實時報價
GetStockDepths獲取股票批量實時盤口
GetStockKlines獲取股票批量歷史K線
ConnectStockWebSocket連接股票 WebSocket

指數 (Indices)

方法說明
GetIndicesTick獲取指數實時成交
GetIndicesQuote獲取指數實時報價
GetIndicesDepth獲取指數實時盤口
GetIndicesKline獲取指數歷史K線
GetIndicesTicks獲取指數批量實時成交
GetIndicesQuotes獲取指數批量實時報價
GetIndicesDepths獲取指數批量實時盤口
GetIndicesKlines獲取指數批量歷史K線
ConnectIndicesWebSocket連接指數 WebSocket

期貨 (Futures)

方法說明
GetFutureTick獲取的貨實時成交
GetFutureQuote獲取的貨實時報價
GetFutureDepth獲取的貨實時盤口
GetFutureKline獲取的貨歷史K線
GetFutureTicks獲取的貨批量實時成交
GetFutureQuotes獲取的貨批量實時報價
GetFutureDepths獲取的貨批量實時盤口
GetFutureKlines獲取的貨批量歷史K線
ConnectFutureWebSocket連接的貨 WebSocket

基金 (Funds)

方法說明
GetFundTick獲取基金實時成交
GetFundQuote獲取基金實時報價
GetFundDepth獲取基金實時盤口
GetFundKline獲取基金歷史K線
GetFundTicks獲取基金批量實時成交
GetFundQuotes獲取基金批量實時報價
GetFundDepths獲取基金批量實時盤口
GetFundKlines獲取基金批量歷史K線
ConnectFundWebSocket連接基金 WebSocket

外匯 (Forex)

方法說明
GetForexTick獲取外匯實時成交
GetForexQuote獲取外匯實時報價
GetForexDepth獲取外匯實時盤口
GetForexKline獲取外匯歷史K線
GetForexTicks獲取外匯批量實時成交
GetForexQuotes獲取外匯批量實時報價
GetForexDepths獲取外匯批量實時盤口
GetForexKlines獲取外匯批量歷史K線
ConnectForexWebSocket連接外匯 WebSocket

加密貨幣 (Crypto)

方法說明
GetCryptoTick獲取加密貨幣實時成交
GetCryptoQuote獲取加密貨幣實時報價
GetCryptoDepth獲取加密貨幣實時盤口
GetCryptoKline獲取加密貨幣歷史K線
GetCryptoTicks獲取加密貨幣批量實時成交
GetCryptoQuotes獲取加密貨幣批量實時報價
GetCryptoDepths獲取加密貨幣批量實時盤口
GetCryptoKlines獲取加密貨幣批量歷史K線
ConnectCryptoWebSocket連接加密貨幣 WebSocket

WebSocket 功能說明

自動重連

SDK 內置自動重連機制,當網絡異常或連接斷開時,會自動嘗試重新連接:

  • 重連間隔:5 秒
  • 最大重連次數:10 次
  • 重連成功後自動恢復訂閱

心跳保持

SDK 自動維護 WebSocket 連接的心跳:

  • 心跳間隔:30 秒
  • 自動發送 ping 消息保持連接活躍

連接狀態檢查

// 檢查 WebSocket 是否連接
connected := client.IsWebSocketConnected()

完整示例

package main

import (
    "fmt"
    "log"
    "time"

    "io.github.itick/sdk"
)

func main() {
    // 初始化客戶端
    token := "your_api_token"
    client := sdk.NewClient(token)

    // 設置 WebSocket 消息處理器
    client.SetMessageHandler(func(message []byte) {
        fmt.Printf("Received WebSocket message: %s\n", message)
    })

    // 設置 WebSocket 錯誤處理器
    client.SetErrorHandler(func(err error) {
        log.Printf("WebSocket error: %v\n", err)
    })

    // 測試 REST API
    tick, err := client.GetForexTick("GB", "EURUSD")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("Forex Tick: %+v\n", tick)

    // 測試 WebSocket
    err = client.ConnectForexWebSocket()
    if err != nil {
        log.Fatal(err)
    }
    defer client.CloseWebSocket()

    // 發送訂閱消息
    subscribeMsg := []byte(`{"action": "subscribe", "codes": ["EURUSD"]}`)
    err = client.SendWebSocketMessage(subscribeMsg)
    if err != nil {
        log.Fatal(err)
    }

    // 等待接收消息
    time.Sleep(10 * time.Second)
}
  1. Java SDK

    iTick 官方 Java SDK,提供基礎、股票、指數、期貨、基金、外匯、加密貨幣數據的 REST API 查詢和 WebSocket 實時數據訂閱功能。

  2. NodeJs SDK

    iTick 官方 NodeJs SDK,提供基礎、股票、指數、期貨、基金、外匯、加密貨幣數據的 REST API 查詢和 WebSocket 實時數據訂閱功能。