Skip to content

itick-org/go-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iTick Go SDK

Go 语言版本的 iTick API SDK,提供基础、股票、指数、期货、基金、外汇、加密货币数据的 REST API 查询和 WebSocket 实时数据订阅功能。

官网地址:https://itick.org

功能特性

  • 支持 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)
}

文档

详细 API 文档请参考:https://docs.itick.org

许可证

MIT License

About

Go 版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages