Python

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_secret từ SSI
  • private_key cho 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-sdk

Tà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, TradingWSError

Tê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
  1. Tạo Config với credential.
  2. Khởi tạo Auth / AsyncAuth với Config.
  3. Gọi auth.authenticate(otp=...) — không cần OTP nếu chỉ dùng market data.
  4. Khởi tạo client cần thiết (Data, Trading, Stream) với auth.
  5. Với Stream, gọi stream.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.

Trên trang này