Python

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-sdk

Kiến trúc Client

SDK sử dụng kiến trúc modular gồm 4 client chuyên biệt:

ClientAsyncMô tảYêu cầu
AuthAsyncAuthXác thực & quản lý tokenConfig
DataAsyncDataDữ liệu thị trường (OHLC, chỉ số, chứng khoán)Auth (không cần OTP)
TradingAsyncTradingGiao dịch + danh mục + tài khoảnAuth (cần OTP)
StreamAsyncStreamStreaming realtime qua WebSocketAuth (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 / Stream

Auth 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:

ClientServiceTruy cậpMô tả
AuthTokenManagerauth.token_managerXác thực, OTP, Smart OTP, refresh token
DataMarketDataServicedata.market_dataOHLC, chỉ số, chứng khoán, securities summary, master data, corporate actions
TradingTradingServicetrading.tradingĐặt/sửa/huỷ lệnh, batch order, sức mua/bán, lệnh điều kiện (FCO)
TradingAccountServicetrading.accountThông tin tài khoản
TradingPortfolioServicetrading.portfolioSố dư, vị thế, sổ lệnh, PPMMR
StreamStreamingServicestream.streamingSubscribe/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 caseClient đề xuấtYêu cầu xác thực
Dữ liệu thị trường (OHLC, chỉ số, chứng khoán)Data / AsyncDataKhông cần OTP
Đặt/sửa/hủy lệnh, batch order, xem tài khoản, danh mụcTrading / AsyncTradingCần OTP
Streaming WebSocket realtime (gồm chỉ số thời gian thực)Stream / AsyncStreamCần OTP
Đặt lệnh qua WebSockettrading_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, Stream và 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ố.

Trên trang này