Go

Tổng quan

Tổng quan về SSI FastConnect Go SDK — REST API và WebSocket streaming

Go SDK cho nền tảng giao dịch chứng khoán SSI. Hỗ trợ REST API và WebSocket streaming.

Yêu cầu: Go 1.22+

Mã nguồn: github.com/SSI-Securities-Inc/ssi-sdk-go

Cài đặt

go get github.com/SSI-Securities-Inc/ssi-sdk-go/v3

Kiến trúc Client

SDK sử dụng kiến trúc module với 4 client chuyên biệt:

ClientMô tảYêu cầu
AuthXác thực & quản lý tokenConfig
DataDữ liệu thị trường (OHLC, chỉ số, chứng khoán)Auth (không cần OTP)
TradingGiao dịch + danh mục + tài khoảnAuth (cần OTP)
StreamStreaming realtime qua WebSocketAuth (cần OTP)

Luồng khởi tạo:

Config → Auth → Authenticate(otp) → Data / Trading / Stream

Auth là client gốc — quản lý REST client và token. Data, Trading, và Stream đều nhận *Auth làm tham số và dùng chung HTTP connection.

Service của mỗi client:

ClientServiceTruy cậpMô tả
AuthTokenManagerauth.TokenManagerXác thực, OTP, làm mới token
DataMarketDataServicedata.MarketDataOHLC, chỉ số, chứng khoán
TradingTradingServicet.TradingĐặt/sửa/huỷ lệnh, sức mua/bán
TradingAccountServicet.AccountThông tin tài khoản
TradingPortfolioServicet.PortfolioSố dư, vị thế, sổ lệnh, PPMMR
StreamStreamingServices.StreamingSubscribe/unsubscribe dữ liệu realtime

Bắt đầu nhanh

Chỉ lấy dữ liệu thị trường (không cần OTP)

package main

import (
    "fmt"
    "log"

    "github.com/SSI-Securities-Inc/ssi-sdk-go/v3/ssi"
)

func main() {
    config := ssi.NewConfig("YOUR_CLIENT_ID")
    config.APIKey    = "YOUR_API_KEY"
    config.APISecret = "YOUR_API_SECRET"

    auth := ssi.NewAuth(config)
    defer auth.Close()

    if _, err := auth.Authenticate(""); err != nil {
        log.Fatal(err)
    }

    data := ssi.NewData(auth)
    ohlc, err := data.MarketData.GetOHLC1Minute("SSI")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(ohlc)
}

Giao dịch (cần OTP)

package main

import (
    "fmt"
    "log"

    "github.com/SSI-Securities-Inc/ssi-sdk-go/v3/ssi"
    "github.com/SSI-Securities-Inc/ssi-sdk-go/v3/trading"
)

func main() {
    config := ssi.NewConfig("YOUR_CLIENT_ID")
    config.APIKey     = "YOUR_API_KEY"
    config.APISecret  = "YOUR_API_SECRET"
    config.PrivateKey = "YOUR_PRIVATE_KEY"

    auth := ssi.NewAuth(config)
    defer auth.Close()

    if _, err := auth.Authenticate("222222"); err != nil {
        log.Fatal(err)
    }

    t := ssi.NewTrading(auth)

    accounts, err := t.Account.GetAccountInfo()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(accounts)

    result, err := t.Trading.PlaceLimitOrder("1234561", "SSI", trading.OrderSideBuy, 100, 66000)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(result)
}

Streaming realtime (cần OTP)

package main

import (
    "fmt"
    "log"

    "github.com/SSI-Securities-Inc/ssi-sdk-go/v3/ssi"
    "github.com/SSI-Securities-Inc/ssi-sdk-go/v3/stream"
)

func main() {
    config := ssi.NewConfig("YOUR_CLIENT_ID")
    config.APIKey     = "YOUR_API_KEY"
    config.APISecret  = "YOUR_API_SECRET"
    config.PrivateKey = "YOUR_PRIVATE_KEY"

    auth := ssi.NewAuth(config)
    defer auth.Close()

    if _, err := auth.Authenticate("222222"); err != nil {
        log.Fatal(err)
    }

    s := ssi.NewStream(auth)
    defer s.Disconnect()

    s.Streaming.SetOnData(func(msg interface{}) {
        switch m := msg.(type) {
        case *stream.TradeMessage:
            fmt.Printf("[TRADE] %s | %.0f | %d\n", m.Symbol, m.Price, m.Quantity)
        }
    })

    if err := s.Connect(); err != nil {
        log.Fatal(err)
    }

    s.Streaming.SubscribeSymbolTrade([]string{"SSI"}, nil)
    s.Wait(nil)
}

Trường hợp sử dụng

Trường hợpClientXác thực
Dữ liệu thị trường (OHLC, chỉ số, chứng khoán)DataKhông cần OTP
Đặt/sửa/huỷ lệnh, tài khoản, danh mụcTradingCần OTP
Streaming WebSocket realtimeStreamCần OTP

Điều hướng tài liệu

  • Cài đặt & Cấu hình: môi trường, packages, Config.
  • Client Classes: Auth, Data, Trading, Stream — khởi tạo và sử dụng.
  • API Services: chi tiết các method API.
  • Cấu hình: tham chiếu đầy đủ Config.
  • Xử lý lỗi: các loại error và cách xử lý.
  • Enums: hằng số như OrderSide, OrderType, Board, ...
  • Models: các model dữ liệu và message streaming.

Trên trang này