Cài đặt và cấu hình
Hướng dẫn cài đặt và cấu hình Python SDK 3.3.2
Yêu cầu môi trường
- Python
>=3.10 - Kết nối mạng đến REST API và WebSocket endpoint
client_id,api_key,api_secrettừ SSIprivate_keycho ký lệnh giao dịch- OTP khi xác thực cho các luồng Trading/Stream (hoặc duyệt Smart OTP trong app)
Cài đặt
pip install ssi-sdkTài liệu này dành cho phiên bản 3.3.2.
Nâng cấp từ 3.3.1 trở về trước
3.3.2 có một thay đổi breaking: Trading WebSocket không còn là tính năng thử nghiệm, và module ssi_sdk.experimental đã bị xoá, không có alias. Import cũ sẽ ném ModuleNotFoundError. Hãy import từ package gốc:
# trước (3.3.1 trở về trước)
from ssi_sdk.experimental import trading_ws, async_trading_ws, TradingWSClient, AsyncTradingWSClient, TradingWSError
# sau (3.3.2)
from ssi_sdk import trading_ws, async_trading_ws, TradingWSClient, AsyncTradingWSClient, TradingWSErrorTên, signature và giá trị mặc định không đổi. 3.3.2 cũng thêm các method corporate actions trong MarketData, xem Services, mục 3.7.
Cấu hình
Thay các giá trị <...> bằng thông tin của bạn; không ghi credential vào mã nguồn.
Tạo đối tượng Config với thông tin xác thực:
from ssi_sdk import Config
config = Config(
client_id="<CLIENT_ID>",
api_key="<API_KEY>",
api_secret="<API_SECRET>",
private_key="<PRIVATE_KEY_CONTENT>",
)Hoặc truyền config bằng keyword arguments trực tiếp cho Auth:
from ssi_sdk import Auth
auth = Auth(
client_id="<CLIENT_ID>",
api_key="<API_KEY>",
api_secret="<API_SECRET>",
private_key="<PRIVATE_KEY_CONTENT>",
timeout_ms=60000,
log_level="DEBUG",
)Mọi giá trị thời gian của Config tính bằng mili-giây (hậu tố _ms, ví dụ timeout_ms, retry_delay_ms). Danh sách đầy đủ: Configuration.
Luồng khởi tạo
Config → Auth → authenticate(otp=...) → Data / Trading / Stream- Tạo
Configvới credential. - Khởi tạo
Auth/AsyncAuthvớiConfig. - Gọi
auth.authenticate(otp=...)— không cần OTP nếu chỉ dùng market data. - Khởi tạo client cần thiết (
Data,Trading,Stream) vớiauth. - Với
Stream, gọistream.streaming.connect()trước khi subscribe.
Với tài khoản dùng Smart OTP (duyệt trong app), xem Client Classes: Smart OTP.
Ví dụ khởi tạo theo use case
Chỉ dữ liệu thị trường (không cần OTP)
from ssi_sdk import Auth, Data, Config
config = Config(
client_id="<CLIENT_ID>",
api_key="<API_KEY>",
api_secret="<API_SECRET>",
)
with Auth(config) as auth:
auth.authenticate() # Không cần OTP
with Data(auth) as data:
ohlc = data.market_data.get_ohlc_1minute("SSI")
print(ohlc)Giao dịch (cần OTP)
from ssi_sdk import Auth, 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)Streaming realtime (cần OTP)
from ssi_sdk import Auth, Stream, 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 Stream(auth) as stream:
stream.streaming.connect()
stream.streaming.on_data = lambda msg: print(msg)
stream.streaming.subscribe_symbol_trade(["SSI"])
stream.streaming.wait()Gợi ý
- Xác thực trước khi gọi API cần token.
- Với streaming, gọi
connect()sau khi xác thực thành công. - Bật
log_level="DEBUG"khi cần điều tra lỗi, và chỉ trong môi trường phát triển. - Giữ thông tin khóa (
api_key,api_secret,private_key) trong secret manager; không in hoặc log token và OTP.