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ểu | Mặc định | Mô tả |
|---|---|---|---|
ClientID | string | (bắt buộc) | Client ID xác thực |
APIKey | string | "" | API key từ SSI |
APISecret | string | "" | API secret từ SSI |
PrivateKey | string | "" | Private key để ký lệnh giao dịch (lệnh REST và lệnh Trading WebSocket) |
APIURL | string | "https://api.ssi.com.vn" | URL REST API. Auth và market data luôn dùng URL này |
StreamingURL | string | "wss://stream.ssi.com.vn/ws/v3" | URL WebSocket streaming |
TradingAPIDomain | string | theo APIURL | Domain tùy chọn cho các lời gọi REST trading, account và portfolio. Host trần sẽ được thêm https:// |
TradingWSDomain | string | "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 |
TimeoutMs | int | 60000 | Timeout request HTTP và timeout handshake WebSocket (ms) |
MaxRetries | int | 5 | Số lần retry tối đa |
RetryDelayMs | int | 2000 | Delay cơ sở giữa các lần retry (ms, nhân đôi sau mỗi lần retry) |
RateLimitPerSecond | int | 10 | Giớ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 |
MaxBatchOrders | int | 20 | Batch 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 |
LogLevel | string | "INFO" | Mức log: DEBUG, INFO, WARNING, ERROR |
Proxy | string | "" | Proxy URL (chỉ cho REST) |
UserAgent | string | (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 |
AutoReconnect | bool | true | Stream tự reconnect và subscribe lại. Xem Connection events |
OTPPollIntervalMs | int | 5000 | Chu kỳ EnsureAuthenticated poll khi Smart OTP đang chờ duyệt (ms) |
OTPPollMaxWaitMs | int | 60000 | Thời gian tối đa EnsureAuthenticated chờ duyệt Smart OTP (ms) |
Các hàm hỗ trợ
| Hàm | Mô 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ăngMaxBatchOrders, 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 | Ở đâu | Mô tả |
|---|---|---|
Config.TradingWSDomain | Config | Domain WebSocket (mặc định wss://api.ssi.com.vn/ws/v3/trading). Chỉ chấp nhận wss:// |
Config.PrivateKey | Config | Bắ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.TimeoutMs | Config | Request timeout mặc định của tradingws.TradingWS (10000 ms khi chưa đặt) và timeout handshake |
Config.UserAgent | Config | User-Agent của request upgrade |
WithRequestTimeoutMs, WithSignatureEncoding, WithUserAgent, WithHandshakeGraceMs, WithRespectRateLimit, WithMaxRateLimitWaitMs, WithPingIntervalMs | Option của tradingws.TradingWS | Ghi đè 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 = 30000Proxy
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ẫnXá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/APISecretsẽ gây lỗi xác thực. - Thiếu
PrivateKeysẽ ảnh hưởng đến thao tác ký lệnh. - Đặt
RateLimitPerSecondtheo 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àRetryDelayMstheo 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.