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)
}