Go

Cấu hình

Tham chiếu đầy đủ tham số Config cho Go SDK

Config

Config là đối tượng cấu hình trung tâm của SDK. Tạo instance Config với thông tin xác thực:

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

config := ssi.NewConfig("YOUR_CLIENT_ID")
config.APIKey     = os.Getenv("SSI_API_KEY")
config.APISecret  = os.Getenv("SSI_API_SECRET")
config.PrivateKey = os.Getenv("SSI_PRIVATE_KEY")

Tất cả tham số cấu hình

Mọi khoảng thời gian đều là số nguyên tính bằng mili giây với hậu tố Ms (các field cũ Timeout int và RetryDelay float64 không còn, và DeviceID đã bị loại bỏ).

Tham sốKiểuMặc địnhMô tả
ClientIDstring(bắt buộc)Client ID xác thực
APIKeystring""API key từ SSI
APISecretstring""API secret từ SSI
PrivateKeystring""Private key để ký lệnh giao dịch (lệnh REST và lệnh Trading WebSocket)
APIURLstring"https://api.ssi.com.vn"URL REST API. Auth và market data luôn dùng URL này
StreamingURLstring"wss://stream.ssi.com.vn/ws/v3"URL WebSocket streaming
TradingAPIDomainstringtheo APIURLDomain tùy chọn cho các lời gọi REST trading, account và portfolio. Host trần sẽ được thêm https://
TradingWSDomainstring"wss://api.ssi.com.vn/ws/v3/trading"Domain của Trading WebSocket. Host trần sẽ được thêm wss:// và đường dẫn /ws/v3/trading
TimeoutMsint60000Timeout request HTTP và timeout handshake WebSocket (ms)
MaxRetriesint5Số lần retry tối đa
RetryDelayMsint2000Delay cơ sở giữa các lần retry (ms, nhân đôi sau mỗi lần retry)
RateLimitPerSecondint10Giới hạn request/giây phía client (0 = không giới hạn). Giới hạn do server báo chỉ có thể làm giá trị này thấp đi
MaxBatchOrdersint20Batch lớn nhất mà PlaceBatchOrders / CancelBatchOrders (và các lệnh batch của Trading WebSocket) chấp nhận. Giá trị nhỏ hơn 1 được chuẩn hóa thành 20
LogLevelstring"INFO"Mức log: DEBUG, INFO, WARNING, ERROR
Proxystring""Proxy URL (chỉ cho REST)
UserAgentstring(mặc định giống trình duyệt)Tùy chọn. Gửi kèm request HTTP và payload lệnh. Cũng là User-Agent của request upgrade Trading WebSocket
AutoReconnectbooltrueStream tự reconnect và subscribe lại. Xem Connection events
OTPPollIntervalMsint5000Chu kỳ EnsureAuthenticated poll khi Smart OTP đang chờ duyệt (ms)
OTPPollMaxWaitMsint60000Thời gian tối đa EnsureAuthenticated chờ duyệt Smart OTP (ms)

Các hàm hỗ trợ

HàmMô tả
Normalized()Trả về bản sao đã áp dụng giá trị mặc định (ví dụ MaxBatchOrders nhỏ hơn 1 thành 20). Bản gốc không bị sửa
TradingAPIURL()(string, error) — base URL cho các lời gọi trading, lấy từ TradingAPIDomain hoặc APIURL
TradingWSURL()URL của Trading WebSocket, dựng từ TradingWSDomain
String() / GoString()In config mà không có APISecret và PrivateKey (APIKey chỉ hiển thị là đã đặt/chưa đặt), nên log.Printf("%v", config) không làm lộ chúng

Batch orders: MaxBatchOrders

Config.MaxBatchOrders mặc định 20 (hằng số ssisdk.MaxBatchOrders). Batch rỗng hoặc lớn hơn giới hạn bị SDK từ chối ngay bằng *ValidationError, không gọi mạng. Theo comment trong code SDK, 20 là mặc định phía server.

Lưu ý — chưa xác minh. API reference (endpoint batch place order) mô tả tối đa 50 lệnh mỗi batch, trong khi SDK áp dụng Config.MaxBatchOrders (mặc định 20) ngay tại local. Chưa xác minh được server có nhận hơn 20 lệnh mỗi batch hay không. Nếu bạn tăng MaxBatchOrders, hãy thử trên môi trường của bạn trước.

Xem Batch Orders cho các hàm.

Cài đặt Trading WebSocket

Package tradingws nằm ngoài các facade. Xem Trading WebSocket.

Cài đặtỞ đâuMô tả
Config.TradingWSDomainConfigDomain WebSocket (mặc định wss://api.ssi.com.vn/ws/v3/trading). Chỉ chấp nhận wss://
Config.PrivateKeyConfigBắt buộc với lệnh thay đổi trạng thái. Thiếu key thì SDK không gửi gì (fail closed)
Config.TimeoutMsConfigRequest timeout mặc định của tradingws.TradingWS (10000 ms khi chưa đặt) và timeout handshake
Config.UserAgentConfigUser-Agent của request upgrade
WithRequestTimeoutMs, WithSignatureEncoding, WithUserAgent, WithHandshakeGraceMs, WithRespectRateLimit, WithMaxRateLimitWaitMs, WithPingIntervalMsOption của tradingws.TradingWSGhi đè theo từng kết nối, xem bảng options

Cấu hình nâng cao

Debug logging

config := ssi.NewConfig("YOUR_CLIENT_ID")
config.APIKey    = os.Getenv("SSI_API_KEY")
config.APISecret = os.Getenv("SSI_API_SECRET")
config.LogLevel  = "DEBUG"

Tuỳ chỉnh retry & rate limit

config := ssi.NewConfig("YOUR_CLIENT_ID")
config.APIKey             = os.Getenv("SSI_API_KEY")
config.APISecret          = os.Getenv("SSI_API_SECRET")
config.MaxRetries         = 3
config.RetryDelayMs       = 1000
config.RateLimitPerSecond = 5
config.TimeoutMs          = 30000

Proxy

config.Proxy = "http://proxy.example.com:8080"

Domain trading riêng

config.TradingAPIDomain = "trading.example.com"       // host trần: tự thêm https://
config.TradingWSDomain  = "trading-ws.example.com"    // host trần: tự thêm wss:// và đường dẫn

Xác thực và market data vẫn dùng APIURL.

Hành vi rate limit và retry

SDK retry request đọc bị rate limit tối đa ssisdk.RateLimitMaxRetries (3) lần, bắt đầu từ RateLimitDefaultWaitMs (1000 ms, nhân đôi). Nếu thời gian chờ vượt RateLimitMaxWaitMs (30000 ms) thì trả *RateLimitError. Request ghi (POST / PUT / DELETE) không được retry. Xem Enums & Constants cho danh sách đầy đủ các hằng số.

Khuyến nghị

  • Lưu credentials (APIKey, APISecret, PrivateKey) trong biến môi trường hoặc secret manager.
  • Thiếu APIKey/APISecret sẽ gây lỗi xác thực.
  • Thiếu PrivateKey sẽ ảnh hưởng đến thao tác ký lệnh.
  • Đặt RateLimitPerSecond theo chính sách nền tảng.
  • Chỉ bật LogLevel = "DEBUG" trong môi trường phát triển.
  • Điều chỉnh TimeoutMs, MaxRetries, và RetryDelayMs theo workload thực tế.
  • Giữ đồng hồ máy chính xác (NTP): lệnh batch mang timestamp được kiểm tra theo replay window.

Trên trang này