Go SDK - Financial Data API REST & WebSocket Real-Time Streaming iTick Documentation SDK & Developer Tools Official iTick Go SDK providing REST API queries and WebSocket real-time data subscription for basic, stock, index, futures, fund, forex, and cryptocurrency market data.

Go SDK Documentation

The Go version of iTick API SDK provides REST API queries and WebSocket real-time data subscription for basic, stock, index, futures, fund, forex, and cryptocurrency data.

Features

  • Supports REST API queries for basic, stock, index, futures, fund, forex, and cryptocurrency data
  • Supports WebSocket real-time data subscription
  • Automatic reconnection mechanism
  • Heartbeat to maintain connection
  • Callback-based event handling

Installation

go get io.github.itick/sdk

Quick Start

Initialize Client

package main

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

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

REST API Usage

Forex Data Query

// Get forex real-time trade
tick, err := client.GetForexTick("GB", "EURUSD")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Forex Tick: %+v\n", tick)

// Get forex real-time quote
quote, err := client.GetForexQuote("GB", "EURUSD")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Forex Quote: %+v\n", quote)

// Get forex real-time order book
depth, err := client.GetForexDepth("GB", "EURUSD")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Forex Depth: %+v\n", depth)

// Get forex historical K-line
kline, err := client.GetForexKline("GB", "EURUSD", 2, 10, nil)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Forex Kline: %+v\n", kline)

Stock Data Query

// Get stock real-time trade
tick, err := client.GetStockTick("US", "AAPL")
if err != nil {
    log.Fatal(err)
}

// Get stock real-time quote
quote, err := client.GetStockQuote("US", "AAPL")
if err != nil {
    log.Fatal(err)
}

// Get stock real-time order book
depth, err := client.GetStockDepth("US", "AAPL")
if err != nil {
    log.Fatal(err)
}

// Get stock historical K-line
kline, err := client.GetStockKline("US", "AAPL", 2, 10, nil)
if err != nil {
    log.Fatal(err)
}

Cryptocurrency Data Query

// Get cryptocurrency real-time trade
tick, err := client.GetCryptoTick("BA", "BTCUSDT")
if err != nil {
    log.Fatal(err)
}

// Get cryptocurrency real-time quote
quote, err := client.GetCryptoQuote("BA", "BTCUSDT")
if err != nil {
    log.Fatal(err)
}

// Get cryptocurrency real-time order book
depth, err := client.GetCryptoDepth("BA", "BTCUSDT")
if err != nil {
    log.Fatal(err)
}

// Get cryptocurrency historical K-line
kline, err := client.GetCryptoKline("BA", "BTCUSDT", 2, 10, nil)
if err != nil {
    log.Fatal(err)
}

WebSocket Usage

The SDK provides enhanced WebSocket functionality including automatic reconnection and heartbeat maintenance, eliminating the need for manual connection management.

Set Callback Functions

// Set message handler
client.SetMessageHandler(func(message []byte) {
    fmt.Printf("Received WebSocket message: %s\n", message)
})

// Set error handler
client.SetErrorHandler(func(err error) {
    log.Printf("WebSocket error: %v\n", err)
})

Connect and Subscribe

// Connect to forex WebSocket
err := client.ConnectForexWebSocket()
if err != nil {
    log.Fatal(err)
}
defer client.CloseWebSocket()

// Send subscription message
subscribeMsg := []byte(`{"action": "subscribe", "codes": ["EURUSD"]}`)
err = client.SendWebSocketMessage(subscribeMsg)
if err != nil {
    log.Fatal(err)
}

// Wait to receive messages
time.Sleep(10 * time.Second)

// Check connection status
fmt.Printf("WebSocket connected: %v\n", client.IsWebSocketConnected())

Other WebSocket Connections

// Connect to stock WebSocket
err := client.ConnectStockWebSocket()

// Connect to cryptocurrency WebSocket
err := client.ConnectCryptoWebSocket()

API Interface List

Basics

MethodDescription
GetSymbolListGet symbol list
GetSymbolHolidaysGet holiday information

Stock

MethodDescription
GetStockInfoGet stock information
GetStockIPOGet stock IPO information
GetStockSplitGet stock split information
GetStockTickGet stock real-time trade
GetStockQuoteGet stock real-time quote
GetStockDepthGet stock real-time order book
GetStockKlineGet stock historical K-line
GetStockTicksGet stock batch real-time trades
GetStockQuotesGet stock batch real-time quotes
GetStockDepthsGet stock batch real-time order books
GetStockKlinesGet stock batch historical K-lines
ConnectStockWebSocketConnect to stock WebSocket

Indices

MethodDescription
GetIndicesTickGet index real-time trade
GetIndicesQuoteGet index real-time quote
GetIndicesDepthGet index real-time order book
GetIndicesKlineGet index historical K-line
GetIndicesTicksGet index batch real-time trades
GetIndicesQuotesGet index batch real-time quotes
GetIndicesDepthsGet index batch real-time order books
GetIndicesKlinesGet index batch historical K-lines
ConnectIndicesWebSocketConnect to index WebSocket

Futures

MethodDescription
GetFutureTickGet futures real-time trade
GetFutureQuoteGet futures real-time quote
GetFutureDepthGet futures real-time order book
GetFutureKlineGet futures historical K-line
GetFutureTicksGet futures batch real-time trades
GetFutureQuotesGet futures batch real-time quotes
GetFutureDepthsGet futures batch real-time order books
GetFutureKlinesGet futures batch historical K-lines
ConnectFutureWebSocketConnect to futures WebSocket

Funds

MethodDescription
GetFundTickGet fund real-time trade
GetFundQuoteGet fund real-time quote
GetFundDepthGet fund real-time order book
GetFundKlineGet fund historical K-line
GetFundTicksGet fund batch real-time trades
GetFundQuotesGet fund batch real-time quotes
GetFundDepthsGet fund batch real-time order books
GetFundKlinesGet fund batch historical K-lines
ConnectFundWebSocketConnect to fund WebSocket

Forex

MethodDescription
GetForexTickGet forex real-time trade
GetForexQuoteGet forex real-time quote
GetForexDepthGet forex real-time order book
GetForexKlineGet forex historical K-line
GetForexTicksGet forex batch real-time trades
GetForexQuotesGet forex batch real-time quotes
GetForexDepthsGet forex batch real-time order books
GetForexKlinesGet forex batch historical K-lines
ConnectForexWebSocketConnect to forex WebSocket

Crypto

MethodDescription
GetCryptoTickGet cryptocurrency real-time trade
GetCryptoQuoteGet cryptocurrency real-time quote
GetCryptoDepthGet cryptocurrency real-time order book
GetCryptoKlineGet cryptocurrency historical K-line
GetCryptoTicksGet cryptocurrency batch real-time trades
GetCryptoQuotesGet cryptocurrency batch real-time quotes
GetCryptoDepthsGet cryptocurrency batch real-time order books
GetCryptoKlinesGet cryptocurrency batch historical K-lines
ConnectCryptoWebSocketConnect to cryptocurrency WebSocket

WebSocket Functionality

Automatic Reconnection

The SDK has a built-in automatic reconnection mechanism that automatically attempts to reconnect when network exceptions or disconnections occur:

  • Reconnection interval: 5 seconds
  • Maximum reconnection attempts: 10 times
  • Automatically restore subscriptions after successful reconnection

Heartbeat Maintenance

The SDK automatically maintains WebSocket connection heartbeats:

  • Heartbeat interval: 30 seconds
  • Automatically sends ping messages to keep the connection active

Connection Status Check

// Check if WebSocket is connected
connected := client.IsWebSocketConnected()

Complete Example

package main

import (
    "fmt"
    "log"
    "time"

    "io.github.itick/sdk"
)

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

    // Set WebSocket message handler
    client.SetMessageHandler(func(message []byte) {
        fmt.Printf("Received WebSocket message: %s\n", message)
    })

    // Set WebSocket error handler
    client.SetErrorHandler(func(err error) {
        log.Printf("WebSocket error: %v\n", err)
    })

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

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

    // Send subscription message
    subscribeMsg := []byte(`{"action": "subscribe", "codes": ["EURUSD"]}`)
    err = client.SendWebSocketMessage(subscribeMsg)
    if err != nil {
        log.Fatal(err)
    }

    // Wait to receive messages
    time.Sleep(10 * time.Second)
}
  1. Java SDK

    Official iTick Java SDK for REST API and WebSocket real-time data streaming. Access financial market data including stocks, forex, crypto, indices, futures, and funds with automatic reconnection and heartbeat support.

  2. Node.js SDK

    Official iTick Node.js SDK providing REST API queries and WebSocket real-time data subscription for basic, stock, index, futures, fund, forex, and cryptocurrency market data with TypeScript support.