Tổng quan
Tổng quan Python SDK 3.3.2 của SSI FastConnect — REST API và WebSocket streaming
Python SDK cho nền tảng giao dịch chứng khoán SSI. Hỗ trợ REST API và WebSocket streaming, cả đồng bộ (sync) và bất đồng bộ (async). Tài liệu này dành cho phiên bản 3.3.2.
Yêu cầu: Python 3.10+
Cài đặt
pip install ssi-sdkKiến trúc Client
SDK sử dụng kiến trúc modular gồm 4 client chuyên biệt:
| Client | Async | Mô tả | Yêu cầu |
|---|---|---|---|
Auth | AsyncAuth | Xác thực & quản lý token | Config |
Data | AsyncData | Dữ liệu thị trường (OHLC, chỉ số, chứng khoán) | Auth (không cần OTP) |
Trading | AsyncTrading | Giao dịch + danh mục + tài khoản | Auth (cần OTP) |
Stream | AsyncStream | Streaming realtime qua WebSocket | Auth (cần OTP) |
Ngoài 4 client trên, SDK có Trading WebSocket, tạo bằng hàm trading_ws(auth) (import từ ssi_sdk). Xem Client Classes.
Luồng khởi tạo:
Config → Auth → authenticate(otp=...) → Data / Trading / StreamAuth là client gốc — quản lý REST client và token. Các client Data, Trading, Stream đều nhận Auth làm tham số và chia sẻ chung HTTP connection.
Services được cung cấp bởi mỗi client:
| Client | Service | Truy cập | Mô tả |
|---|---|---|---|
Auth | TokenManager | auth.token_manager | Xác thực, OTP, Smart OTP, refresh token |
Data | MarketDataService | data.market_data | OHLC, chỉ số, chứng khoán, securities summary, master data, corporate actions |
Trading | TradingService | trading.trading | Đặt/sửa/huỷ lệnh, batch order, sức mua/bán, lệnh điều kiện (FCO) |
Trading | AccountService | trading.account | Thông tin tài khoản |
Trading | PortfolioService | trading.portfolio | Số dư, vị thế, sổ lệnh, PPMMR |
Stream | StreamingService | stream.streaming | Subscribe/unsubscribe realtime data, gồm dữ liệu chỉ số thời gian thực |
Ví dụ nhanh
Thay các giá trị <...> bằng thông tin của bạn. Không ghi credential hoặc OTP thật vào mã nguồn; đọc từ biến môi trường hoặc secret manager.
Async (khuyến nghị)
import asyncio
from ssi_sdk import AsyncAuth, AsyncData, AsyncTrading, AsyncStream, Config
async def main():
config = Config(
client_id="<CLIENT_ID>",
api_key="<API_KEY>",
api_secret="<API_SECRET>",
private_key="<PRIVATE_KEY_CONTENT>",
)
async with AsyncAuth(config) as auth:
await auth.authenticate(otp="<OTP>")
# Dữ liệu thị trường
async with AsyncData(auth) as data:
ohlc = await data.market_data.get_ohlc_1minute("SSI")
print(ohlc)
# Giao dịch & danh mục
async with AsyncTrading(auth) as trading:
accounts = await trading.account.get_account_info()
print(accounts)
# Streaming
async with AsyncStream(auth) as stream:
await stream.streaming.connect()
stream.streaming.on_data = lambda msg: print(msg)
await stream.streaming.subscribe_symbol_trade(["SSI"])
await stream.streaming.wait()
asyncio.run(main())Sync
from ssi_sdk import Auth, Data, Trading, Config
config = Config(
client_id="<CLIENT_ID>",
api_key="<API_KEY>",
api_secret="<API_SECRET>",
private_key="<PRIVATE_KEY_CONTENT>",
)
with Auth(config) as auth:
auth.authenticate(otp="<OTP>")
with Trading(auth) as trading:
accounts = trading.account.get_account_info()
print(accounts)Chỉ dùng dữ liệu thị trường (không cần OTP)
from ssi_sdk import Auth, Data, Config
with Auth(config) as auth:
auth.authenticate() # Không cần OTP cho market data
with Data(auth) as data:
ohlc = data.market_data.get_ohlc_1minute("SSI")Mapping nhanh theo use case
| Use case | Client đề xuất | Yêu cầu xác thực |
|---|---|---|
| Dữ liệu thị trường (OHLC, chỉ số, chứng khoán) | Data / AsyncData | Không cần OTP |
| Đặt/sửa/hủy lệnh, batch order, xem tài khoản, danh mục | Trading / AsyncTrading | Cần OTP |
| Streaming WebSocket realtime (gồm chỉ số thời gian thực) | Stream / AsyncStream | Cần OTP |
| Đặt lệnh qua WebSocket | trading_ws(auth) | Cần OTP và private_key |
Điều hướng tài liệu
- Cài đặt và cấu hình: môi trường, package,
Config. - Client classes:
Auth,Data,Trading,Streamvà Trading WebSocket — cách khởi tạo và sử dụng. - Service classes: chi tiết các method API cho từng service, gồm Batch Order (mục 5.4), dữ liệu chỉ số thời gian thực (mục 6.7) và Trading WebSocket (mục 7).
- Cấu hình: tham số
Configđầy đủ (thời gian tính bằng mili-giây, hậu tố_ms). - Xử lý lỗi: hệ thống exception, Smart OTP,
ServerErrorCode. - Enums & Hằng số (trang
transport-classes):OrderSide,OrderType,Board,from_value, ... - Models (trang
utilities): các model dữ liệu trả về, message streaming và hằng số.