Models
Các model dữ liệu trả về trong .NET SDK
Tất cả model nằm trong namespace SsiSdk.Models, là các sealed class (hoặc record) với auto-property:
using SsiSdk.Models;Quy ước chung từ 3.3.x: tiền và giá là decimal (không dùng double); trường server có thể không gửi thì là kiểu nullable (int?, decimal?, string?) và là null khi vắng mặt.
Xác thực
Token
| Trường | Kiểu | Mô tả |
|---|---|---|
AccessToken | string | Token truy cập (credential, không in ra log) |
TokenType | string | Loại token (mặc định "Bearer") |
ExpiresAt | long | Thời điểm access token hết hạn, epoch giây. 0 là không biết (coi như đã hết hạn) |
RefreshToken | string | Token làm mới (credential) |
RefreshTokenExpiresAt | long | Thời điểm refresh token hết hạn, epoch giây. 0 là không biết |
EffectiveExpiresAt | long (chỉ đọc) | Mốc hết hạn sớm nhất trong hai token đã biết, hoặc 0 nếu cả hai chưa biết |
CanRefresh | bool (chỉ đọc) | Có thể dùng refresh token để làm mới |
ToString() của Token che AccessToken và RefreshToken.
OtpResponse
Kết quả của RequestOtpTypedAsync().
| Trường | Kiểu | Mô tả |
|---|---|---|
Message | string | Thông báo từ server |
TransactionId | string? | Mã giao dịch Smart OTP để poll duyệt, khi server cấp (null khi không có) |
Account
Account
| Trường | Kiểu | Mô tả |
|---|---|---|
AccountNo | string | Số tài khoản |
AccountType | string? | Một giá trị của AccountType ("Cash", "Margin", "Derivative"); với loại không nhận ra thì giữ nguyên chuỗi server gửi; null khi vắng mặt |
Market Data
OhlcData
| Trường | Kiểu | Mô tả |
|---|---|---|
Symbol | string | Mã chứng khoán |
TradingDate | string | Ngày giao dịch |
OpenPrice | decimal | Giá mở cửa |
HighPrice | decimal | Giá cao nhất |
LowPrice | decimal | Giá thấp nhất |
ClosePrice | decimal | Giá đóng cửa |
Volume | int | Khối lượng |
Value | decimal | Giá trị giao dịch |
MarketIndexes
| Trường | Kiểu | Mô tả |
|---|---|---|
Index | string | Mã chỉ số |
IndexName | string | Tên chỉ số |
Board | string? | Sàn, đúng như server gửi (null khi trống) |
MarketIndexSummary
| Trường | Kiểu | Mô tả |
|---|---|---|
Index | string | Mã chỉ số |
Board | string | Sàn |
TradingDate | string | Ngày giao dịch |
IndexValue | decimal | Giá trị chỉ số |
IndexChange | decimal | Thay đổi |
IndexChangePercent | decimal | Thay đổi (%) |
TotalTrade | int | Tổng KL giao dịch |
TotalTradeValue | decimal | Tổng giá trị giao dịch |
TotalAdvanceStock | int | Số mã tăng |
TotalDeclineStock | int | Số mã giảm |
TotalSteadyStock | int | Số mã đứng |
TotalMatch | int | Tổng khối lượng khớp |
TotalMatchValue | decimal | Tổng giá trị khớp |
TotalDeal | int | Tổng khối lượng thoả thuận |
TotalDealValue | decimal | Tổng giá trị thoả thuận |
TotalCeilingStock | int | Số CP trần |
TotalFloorStock | int | Số CP sàn |
TotalPropBuy / TotalPropSell | int | Tổng KL mua / bán tự doanh |
TotalPropBuyValue / TotalPropSellValue | decimal | Tổng GT mua / bán tự doanh |
TotalBuyForeign / TotalSellForeign | decimal? | KL mua / bán của khối ngoại |
TotalBuyForeignValue / TotalSellForeignValue | decimal? | GT mua / bán của khối ngoại |
NetPurchasesForeignVolume / NetPurchasesForeignValue | decimal? | KL / GT mua ròng của khối ngoại |
SecuritiesInfo
| Trường | Kiểu | Mô tả |
|---|---|---|
Symbol | string | Mã chứng khoán |
Board | string? | Sàn |
Index | string | Chỉ số |
SymbolNameVi | string | Tên tiếng Việt |
SymbolNameEn | string | Tên tiếng Anh |
LotSize | int? | Lô giao dịch (null khi server không gửi) |
ListedShares | int? | Số CP niêm yết (null khi server không gửi) |
IcbCode / IcbName | string? | Mã / tên ngành ICB |
MaturityDate | string? | Ngày đáo hạn |
FirstTradingDate / LastTradingDate | string? | Ngày GD đầu tiên / cuối cùng |
CwUnderlyingSymbol | string? | Mã CK cơ sở CW |
CwExercisePrice / CwExecutionRatio | decimal? | Giá / tỷ lệ thực hiện CW |
IIndex | decimal? | Chỉ số I |
INav | decimal? | Giá trị iNAV |
OpenInterest | decimal? | Khối lượng mở |
SettlementPrice | decimal? | Giá thanh toán |
StockType | string? | Loại chứng khoán |
SecuritiesSummary
| Trường | Kiểu | Mô tả |
|---|---|---|
Symbol | string | Mã chứng khoán |
TradingDate | string | Ngày giao dịch |
PriceChange / PriceChangePercent | decimal | Thay đổi giá / thay đổi giá (%) |
OpenPrice / HighPrice / LowPrice / ClosePrice | decimal | Giá mở / cao / thấp / đóng |
AveragePrice | decimal | Giá trung bình |
TotalMatch / TotalMatchValue | int / decimal | Tổng KL / GT khớp |
TotalBuy / TotalTradeBuy | int / decimal | Tổng KL / GT mua |
TotalSell / TotalTradeSell | int / decimal | Tổng KL / GT bán |
TotalForeignBuy / TotalForeignSell | int | KL mua / bán khối ngoại |
TotalForeignBuyValue / TotalForeignSellValue | decimal | GT mua / bán khối ngoại |
RemainForeignRoom / TotalForeignRoom | int | Room ngoại còn lại / tổng |
TotalDeal / TotalDealValue | int / decimal | KL / GT thoả thuận |
OpenInterest / SettlementPrice | decimal | Khối lượng mở / giá thanh toán |
Ceiling / Floor / RefPrice | decimal? | Giá trần / sàn / tham chiếu |
MasterData
| Trường | Kiểu | Mô tả |
|---|---|---|
Board | string? | Sàn |
Symbol | string | Mã chứng khoán |
TradingDate | string | Ngày giao dịch |
Ceiling | decimal | Giá trần |
Floor | decimal | Giá sàn |
RefPrice | decimal | Giá tham chiếu |
CorporateAction
Mỗi trường là chuỗi đúng như server trả: ngày giữ nguyên dạng YYYY/MM/DD, Ratio không được ép kiểu vì ý nghĩa phụ thuộc loại sự kiện. Trường server để trống hoặc không gửi là "" (không phải null).
| Trường | Kiểu | Mô tả |
|---|---|---|
Symbol | string | Mã chứng khoán |
EventTitle | string | Tiêu đề sự kiện |
ExrightDate | string | Ngày giao dịch không hưởng quyền |
RecordDate | string | Ngày đăng ký cuối cùng |
IssueDate | string | Ngày thực hiện |
Exchange | string | Sàn |
Ratio | string | Tỷ lệ |
Method trả về model này: GetCorporateActionsAsync, GetCorporateActionsHistoricalAsync (mục 3.7 của API Services).
DownloadDatakhông còn trong SDK: các hàmDownload*némNotImplementedException.
Portfolio
EquityAccountBalance
| Trường | Kiểu | Mô tả |
|---|---|---|
AccountNo | string | Số tài khoản |
AccountBalance | decimal | Số dư tài khoản (tiền mặt khả dụng) |
TotalDebt | decimal | Tổng nợ |
InterestLoan | decimal | Lãi vay |
OverdueFeeLoan | decimal | Phí vay quá hạn |
Withdrawable | decimal | Tiền có thể rút |
OnHoldCash | decimal | Tiền tạm giữ |
SellUnmatched / BuyUnmatched | decimal | Tiền bán/mua chờ khớp |
SellT0 / SellT1 / SellT2 | decimal | Tiền bán T0/T1/T2 |
BuyT0 / BuyT1 / BuyT2 | decimal | Tiền mua T0/T1/T2 |
AdvanceCashT0 / AdvanceCashT1 | decimal | Ứng tiền T0/T1 |
HoldSubscription | decimal | Tiền giữ đăng ký |
Dividend | decimal | Cổ tức |
DerivativeAccountBalance
| Trường | Kiểu | Mô tả |
|---|---|---|
AccountNo | string | Số tài khoản |
AccountBalance | decimal | Số dư tài khoản |
Fee / Commission / Interest / ExtInterest | decimal | Phí / Hoa hồng / Lãi |
Loan | decimal | Vay |
DeliveryAmount | decimal | Giá trị giao nhận |
FloatingPL / TradingPL / TotalPL | decimal | Lãi/lỗ chưa thực hiện / giao dịch / tổng |
Withdrawable | decimal | Tiền rút được |
CashSSI / ValidNonCashSSI / WithdrawableSSI | decimal | Tiền mặt / tài sản phi tiền mặt hợp lệ / rút được (SSI) |
CashVSDC / ValidNonCashVSDC / WithdrawableVSDC | decimal | Tương tự tại VSDC |
CashWithdrawableSSI và CashWithdrawableVSDC là tên cũ, được đánh dấu [Obsolete]; dùng WithdrawableSSI và WithdrawableVSDC.
EquityPosition
| Trường | Kiểu | Mô tả |
|---|---|---|
AccountNo | string | Số tài khoản |
Symbol | string | Mã chứng khoán |
Quantity | int | Tổng số lượng |
SellableQuantity | int | Số lượng bán được |
CostPrice | decimal | Giá vốn |
BuyingQuantity / SellingQuantity | int | SL đang mua / đang bán |
BoughtQuantity / SoldQuantity | int | Khối lượng đã mua / đã bán |
MortgageQuantity | int | SL cầm cố |
BlockQuantity | int | Khối lượng phong toả |
DividendQuantity | int | Khối lượng cổ tức |
T1SellQuantity / T2SellQuantity | int | KL bán T1 / T2 |
T1BuyQuantity / T2BuyQuantity | int | KL mua T1 / T2 |
RestrictedQuantity | int | Khối lượng hạn chế |
DerivativePosition
| Trường | Kiểu | Mô tả |
|---|---|---|
AccountNo | string | Số tài khoản |
Symbol | string | Mã hợp đồng |
Long / Short / Net | int | Vị thế mua / bán / ròng |
BidAvgPrice / AskAvgPrice | decimal | Giá TB mua / bán |
TradePrice | decimal | Giá giao dịch |
FloatingPL / TradingPL | decimal | Lãi/lỗ |
AllDerivativePosition
| Trường | Kiểu | Mô tả |
|---|---|---|
OpenPositions | List<DerivativePosition> | Vị thế đang mở |
ClosedPositions | List<DerivativePosition> | Vị thế đã đóng |
AccountNo | string | Số tài khoản |
Position
Vị thế của một tài khoản; phần nào server không trả về thì là null.
| Trường | Kiểu | Mô tả |
|---|---|---|
Equity | List<EquityPosition>? | Vị thế cơ sở |
Derivative | AllDerivativePosition? | Vị thế phái sinh |
Order
| Trường | Kiểu | Mô tả |
|---|---|---|
AccountNo | string | Số tài khoản |
ClientRequestId | string | ID yêu cầu client |
OrderId | string | ID lệnh |
Symbol | string | Mã chứng khoán |
Side | string? | "B" / "S"; chuỗi gốc nếu không nhận ra; null khi vắng mặt |
OrderType | string? | Loại lệnh (xem OrderType); chuỗi gốc nếu không nhận ra; null khi vắng mặt |
Price | decimal | Giá đặt; 0 khi lệnh không có giá số (xem PriceMarker) |
PriceMarker | string? | Từ chỉ giá server gửi thay cho số (ví dụ "ATO", "MP"); null với giá số |
AvgPrice | decimal | Giá TB khớp |
Quantity | int | SL đặt |
OsQuantity | int? | SL chờ (null khi server không gửi) |
FilledQuantity | int | SL đã khớp |
CancelQuantity | int | SL đã huỷ |
Status | string? | Mã trạng thái (xem OrderStatus); chuỗi gốc nếu không nhận ra; null khi vắng mặt |
InputTime / ModifyTime | string | Thời gian đặt / sửa |
Message | string | Thông báo |
OrderBook
Các lệnh của một tài khoản cùng tổng số bản ghi do server báo.
| Trường | Kiểu | Mô tả |
|---|---|---|
Orders | List<Order> | Danh sách lệnh |
TotalOrders | int | Tổng số bản ghi |
EquityPPMMR / DerivativePPMMR
Hai model chứa rất nhiều chỉ số ký quỹ chi tiết (margin ratio, limit, collateral, ...), tất cả là decimal. Các trường thường dùng nhất:
| Trường | Kiểu | Mô tả |
|---|---|---|
AccountNo | string | Số tài khoản |
PurchasingPower (EquityPPMMR) | decimal | Sức mua |
Withdrawable | decimal | Tiền/tài sản rút được |
MarginRatio (EquityPPMMR) | decimal | Tỷ lệ ký quỹ |
TotalEquity | decimal | Tổng tài sản ròng |
AccountBalance | decimal | Số dư tài khoản |
Trading Responses
PlaceOrderResponse
OrderId, ClientRequestId, Status — đều string.
ModifyOrderResponse
ClientModifyId, OrderId, ClientRequestId, Status — đều string.
CancelOrderResponse
ClientCancelId, OrderId, ClientRequestId, Status — đều string.
MaxBuySellResponse
| Trường | Kiểu | Mô tả |
|---|---|---|
AccountNo | string | Số tài khoản |
Symbol | string | Mã chứng khoán |
MaxBuyQuantity | int | SL mua tối đa |
MaxSellQuantity | int | SL bán tối đa |
MarginRatio | string? | Tỷ lệ ký quỹ |
PurchasingPower | long? | Sức mua (VND); null khi server không trả về |
PurchasePower (kiểu string) là tên cũ, được đánh dấu [Obsolete]; dùng PurchasingPower.
Models lệnh hàng loạt (Batch)
Các model dùng cho PlaceBatchOrdersAsync và CancelBatchOrdersAsync (REST) và cho batch qua Trading WebSocket. Method, giới hạn, cách hoạt động và ví dụ nằm ở mục 5.6 của API Services; trang này chỉ liệt kê cấu trúc.
Giới hạn số lệnh mỗi batch là
Config.MaxBatchOrders(mặc định 20). API reference ghi giới hạn phía server là 50, chưa đối chiếu được với server thật; việc nângMaxBatchOrdersdo bên gọi quyết định.
BatchPlaceOrderItem
record với các tham số giống PlaceOrderAsync.
| Thuộc tính | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
AccountNo | string | Có | Tài khoản giao dịch. Các lệnh trong một batch có thể thuộc tài khoản khác nhau, nhưng API Key phải được cấp quyền cho tất cả. |
Symbol | string | Có | Mã chứng khoán |
Side | string | Có | OrderSide.Buy ("B") hoặc OrderSide.Sell |
Quantity | int | Có | Số lượng, phải lớn hơn 0 |
Price | decimal? | Có | Giá, không được âm. null được gửi là "0" với loại lệnh thị trường. Bắt buộc với OrderType.LO và OrderType.PLO. |
OrderType | string | Có | OrderType.LO, OrderType.ATO, OrderType.ATC, OrderType.MP, ... |
ClientRequestId | string? | Không | Mã lệnh do bạn đặt, 1 đến 20 ký tự. Nếu null, SDK tự sinh. |
BatchCancelOrderItem
| Thuộc tính | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
AccountNo | string | Có | Tài khoản giao dịch |
OrderId | string? | Một trong hai | Mã lệnh do hệ thống sinh |
ClientRequestId | string? | Một trong hai | ClientRequestId bạn đã dùng khi đặt lệnh |
Mỗi item hủy cần đúng một trong OrderId hoặc ClientRequestId, nếu không sẽ ném ValidationException.
BatchOrderResponse
| Thuộc tính | Kiểu | Mô tả |
|---|---|---|
BatchRequestId | string | Mã batch được trả lại |
Results | List<BatchOrderResult> | Một phần tử cho mỗi lệnh, cùng thứ tự với request |
BatchOrderResult
| Thuộc tính | Kiểu | Mô tả |
|---|---|---|
ClientRequestId | string | Mã lệnh do bạn gửi, hoặc được sinh |
OrderId | string | Mã lệnh của hệ thống (khi được chấp nhận) |
Status | string | Trạng thái lệnh sau request (orderStatus) |
Success | bool | true nếu lệnh được chấp nhận xử lý |
ErrorCode | string | Mã lỗi của lệnh này khi Success là false |
ErrorMessage | string | Mô tả lỗi của lệnh này khi Success là false |
ClientCancelId | string | Mã hủy, trong kết quả hủy |
Luôn kiểm tra Success của từng phần tử trong Results: một lệnh bị từ chối không làm ném exception.
Lệnh điều kiện (FCO)
FcoPrice
Trường giá của lệnh điều kiện: một số (100.5m, 25000) hoặc một từ loại lệnh ("MP", OrderType.MTL). Chuỗi được gửi nguyên văn. Có chuyển đổi ngầm từ decimal, int, long và string. Với các từ thị trường (ATO, ATC, MTL, MP, MOK, MAK), độ trượt giá (slip) không được áp dụng.
FCOPlaceResponse
Kết quả đặt lệnh điều kiện — FCOID (string).
FCOCancelResponse
Kết quả huỷ lệnh điều kiện — FCOID (string).
FCOListResponse
Danh sách lệnh điều kiện (phân trang).
| Trường | Kiểu | Mô tả |
|---|---|---|
PageIndex | int | Trang hiện tại |
PageSize | int | Kích thước trang |
ItemsCount | int | Tổng số bản ghi |
PagesCount | int | Tổng số trang |
FCOList | List<FCOInfo> | Danh sách lệnh FCO |
FCOInfo
Thông tin chi tiết một lệnh điều kiện.
| Trường | Kiểu | Mô tả |
|---|---|---|
FCOID | string | Mã lệnh FCO |
ClientID | string | Username / Client ID |
AccountNo | string | Số tài khoản |
Quantity | int | Khối lượng đặt |
Price | string | Giá đặt |
PriceSlip | decimal? | Độ trượt giá |
Symbol | string | Mã chứng khoán |
Type | string? | Loại lệnh điều kiện (xem FCOType) |
FromDate | string | Ngày bắt đầu hiệu lực |
ToDate | string | Ngày kết thúc hiệu lực |
MatchedQuantity | int | Khối lượng đã khớp |
IsPlaceOrder | bool | Đã đẩy lệnh vào sổ hay chưa |
Status | string? | Trạng thái lệnh FCO (xem FCOStatus) |
Detail | string | Chi tiết trạng thái |
Params | FCOParams? | Tham số kích hoạt lệnh FCO |
OrderType | string? | Loại lệnh |
FCOParams
Tham số kích hoạt của lệnh điều kiện. Giá trị chưa đặt là null.
| Trường | Kiểu | Mô tả |
|---|---|---|
StopPrice | decimal? | Giá dừng / giá kích hoạt |
Side | string? | Chiều lệnh (Mua/Bán) |
ActivePrice | decimal? | Giá kích hoạt (Trailing Stop) |
TrailingAmount | decimal? | Khoảng bám sát (Trailing Amount) |
TPActivePrice | decimal? | Giá kích hoạt chốt lời (Take Profit) |
SLActivePrice | decimal? | Giá kích hoạt cắt lỗ (Stop Loss) |
TPPrice | string? | Giá chốt lời |
SLPrice | string? | Giá cắt lỗ |
TPSlip | decimal? | Trượt giá chốt lời |
SLSlip | decimal? | Trượt giá cắt lỗ |
Operator | string? | Toán tử so sánh kích hoạt (xem FCOOperator). Server có thể trả số 0..4 trong response, SDK đổi về tên |
FCOOrderBookResponse
Nhật ký khớp lệnh FCO (phân trang).
| Trường | Kiểu | Mô tả |
|---|---|---|
PageIndex | int | Trang hiện tại |
PageSize | int | Kích thước trang |
ItemsCount | int | Tổng số bản ghi |
PagesCount | int | Tổng số trang |
OrderBook | List<FCOOrder> | Danh sách nhật ký lệnh FCO |
FCOOrder
Nhật ký giao dịch / thực thi của lệnh FCO.
| Trường | Kiểu | Mô tả |
|---|---|---|
FCOID | string | Mã lệnh FCO gốc |
AccountNo | string | Số tài khoản |
Quantity | int | Khối lượng |
Price | string | Giá đặt |
Symbol | string | Mã chứng khoán |
Side | string? | Chiều lệnh |
OrderType | string? | Loại lệnh con |
IsMainOrder | bool | Là lệnh chính |
IsAttachedOrder | bool | Là lệnh kèm theo |
CreatedTime / UpdatedTime | string | Thời gian tạo / cập nhật |
UniqueID | string | ID duy nhất |
OrderID | string | Mã lệnh trên sàn |
MatchedQuantity | int | Khối lượng đã khớp |
OSQuantity | int | Khối lượng chờ khớp |
AvgPrice | decimal | Giá khớp trung bình |
Status | string? | Trạng thái lệnh con |
Detail | string | Chi tiết |
Type | string? | Loại lệnh điều kiện |
FCOStatusHistoryItem
Một lần chuyển trạng thái của lệnh FCO.
| Trường | Kiểu | Mô tả |
|---|---|---|
State | string | Trạng thái |
Time | string | Thời điểm |
Code | string? | Mã |
Detail | string | Chi tiết |
Models streaming
Message streaming là các sealed class trong SsiSdk.Models. Chúng đến qua SetOnData / OnData (dữ liệu thị trường) và SetOnTrading (sự kiện giao dịch) dưới dạng object: kiểm tra kiểu bằng pattern matching. Frame mà SDK không có model tương ứng được giữ nguyên là JsonElement. Cách subscribe nằm ở mục 6 của API Services.
Parser chọn model theo topic của frame dữ liệu:
| Topic | Model |
|---|---|
trade.index.CODE | IndexTickMessage |
trade.index.CODE@1m / @5m | IntervalMessage |
trade.CODE | TradeMessage |
trade.CODE@1m / @5m | IntervalMessage |
quote.CODE | QuoteMessage |
room.CODE | ForeignRoomMessage |
indexsummary.CODE | IndexSummaryMessage |
market.flag | MarketFlagMessage |
market.* (có s, ce, fl hoặc ref) | MarketDataMessage |
market.* (còn lại) | MarketStatusMessage |
put.CODE | PutMessage |
oddlot.CODE | OddLotMessage |
Sự kiện giao dịch được chọn theo eventType: orderEvent là OrderStatusMessage, orderMatchEvent là OrderMatchMessage, clientPortfolioEvent là PortfolioMessage, fcoEvent là FCOOrderUpdateMessage. Khi không có eventType, topic order.* được coi là OrderStatusMessage và portfolio.* là PortfolioMessage.
Chưa xác nhận: SDK chỉ ánh xạ khoá server sang thuộc tính. Ý nghĩa chính xác của từng trường tick (đơn vị, có cộng dồn trong phiên hay không, ví dụ
Value,TotalMatchQuantity, và các trườngOpen/High/Low/AvgcủaTradeMessage) chưa được xác nhận với server thật. DùngRawhoặcDatakhi cần đối chiếu, và đừng dùng làm căn cứ cho logic quan trọng khi chưa kiểm chứng.
HeartbeatMessage
Method, Channel, Status, Message — đều string.
TradeMessage
| Trường | Kiểu | Khóa server | Mô tả |
|---|---|---|---|
Type | string | Loại dữ liệu | |
TradingTime | string | t | Thời gian giao dịch |
Symbol | string | s | Mã chứng khoán |
Price | decimal | p | Giá khớp |
Quantity | int | q | Khối lượng khớp |
Side | string | si | Chiều khớp; mặc định "U" khi server không gửi |
TotalVolume | int | v | Tổng khối lượng |
Open / High / Low / Avg | decimal? | o, h, l, a | null khi server không gửi |
IndexTickMessage
Tick của chính chỉ số, từ trade.index.CODE.
| Thuộc tính | Kiểu | Khóa server | Mô tả |
|---|---|---|---|
Type | string | Loại message (trade) | |
Symbol | string | s | Mã chỉ số |
Board | string | b | Bảng |
Status | string | ss | Trạng thái chỉ số |
TradingTime | string | t | Thời gian giao dịch |
Value | decimal? | v | Giá trị chỉ số |
Change | decimal? | c | Thay đổi (điểm) |
ChangePercent | decimal? | cr | Thay đổi (%) |
Advances | decimal? | adv | Số mã tăng |
Declines | decimal? | dec | Số mã giảm |
NoChange | decimal? | nc | Số mã đứng giá |
Ceilings | decimal? | ce | Số mã trần |
Floors | decimal? | fl | Số mã sàn |
TotalMatchValue | decimal? | tmv | Giá trị khớp lệnh |
TotalMatchQuantity | decimal? | tmq | Khối lượng khớp lệnh |
TotalPutValue | decimal? | tvp | Giá trị thỏa thuận |
TotalPutQuantity | decimal? | tqp | Khối lượng thỏa thuận |
TotalQuantity | decimal? | tq | Tổng khối lượng |
TotalValue | decimal? | tv | Tổng giá trị |
Raw | Dictionary<string, JsonElement> | Payload đúng như server gửi |
Trường số là null khi server không gửi. Dùng Raw cho các khóa SDK chưa ánh xạ. Cột "Mô tả" là tên theo SDK, chưa xác nhận với server (xem lưu ý ở đầu mục).
IntervalMessage
Nến, từ trade.CODE@1m / @5m hoặc trade.index.CODE@1m / @5m.
| Thuộc tính | Kiểu | Khóa server | Mô tả |
|---|---|---|---|
Type | string | Loại message (trade) | |
IntervalTime | string | st | Thời điểm bắt đầu nến |
TradingTime | string | t | Thời gian giao dịch |
Symbol | string | s | Mã |
Open, High, Low, Close | decimal | o, h, l, c | Giá của nến |
Volume | int | v | Khối lượng |
IndexSummaryMessage
Từ indexsummary.CODE.
| Thành phần | Kiểu | Mô tả |
|---|---|---|
Index | string | Mã chỉ số, viết hoa |
Data | Dictionary<string, JsonElement> | Các trường đúng như server gửi (không ánh xạ sang thuộc tính có kiểu) |
Get(params string[] keys) | JsonElement? | Khóa đầu tiên có mặt trong Data, hoặc null |
API reference liệt kê các khóa của tổng hợp chỉ số: s, b, ss, t, v, c, cr, adv, dec, nc, ce, fl, tmv, tmq, tvp, tqp, tq, tv, với ý nghĩa như bảng tick ở trên. tq bằng tmq cộng tqp, và tv bằng tmv cộng tvp.
stream.Streaming.OnIndexSummary = m =>
{
// Get trả về khóa đầu tiên có mặt (một JsonElement), hoặc null
Console.WriteLine($"{m.Index}: v={m.Get("v")} ({m.Data.Count} trường)");
};QuoteMessage
| Trường | Kiểu | Mô tả |
|---|---|---|
Type | string | Loại dữ liệu |
TradingTime | string | Thời gian |
Symbol | string | Mã chứng khoán |
BidPrices / AskPrices | List<decimal> | Các mức giá mua / bán |
BidVolumes / AskVolumes | List<int> | Khối lượng tương ứng từng mức |
MarketStatusMessage
Market, Status, TradingDate — đều string.
MarketFlagMessage
Cờ phiên thị trường (ATO, LO, ATC, ...), từ topic market.flag.
| Trường | Kiểu | Khóa server | Mô tả |
|---|---|---|---|
Board | string | b | Sàn |
TradingTime | string | t | Thời gian |
Flag | string | f | Cờ phiên |
MarketDataMessage
Dữ liệu tham chiếu (trần, sàn, tham chiếu) của một mã, từ market.SYMBOL.
| Trường | Kiểu | Khóa server | Mô tả |
|---|---|---|---|
Symbol | string | s | Mã chứng khoán |
Board | string | b | Sàn |
TradingTime | string | t | Thời gian |
Ceiling / Floor / RefPrice | decimal? | ce, fl, ref | Giá trần / sàn / tham chiếu |
ForeignRoomMessage
Type, TradingTime, Symbol (string); TotalRoom, CurrentRoom, BuyQuantity, SellQuantity (int); BuyValue, SellValue (long).
PutMessage
Type, TradingTime, Symbol (string); Price (decimal); Quantity, TotalQuantity (int); TotalValue (long).
OddLotMessage
Type, TradingTime, Symbol (string); Price (decimal); Quantity (int); BidPrices, AskPrices (List<decimal>); BidVolumes, AskVolumes (List<int>).
OrderStatusMessage
Cập nhật trạng thái lệnh (orderEvent, topic order.<accountNo>).
| Trường | Kiểu | Mô tả |
|---|---|---|
Type | string | Loại sự kiện |
AccountNo | string | Số tài khoản |
ClientRequestId / OrderId | string | Mã yêu cầu client / mã lệnh |
Symbol | string | Mã chứng khoán |
Side | string? | "B" / "S"; chuỗi gốc nếu không nhận ra |
OrderType | string? | Loại lệnh |
Price | decimal | Giá đặt; 0 khi server gửi từ chỉ giá (xem PriceMarker) |
PriceMarker | string? | Từ chỉ giá thay cho số (ví dụ "ATO") |
Quantity / OsQuantity / FilledQuantity / CancelQuantity | int | SL đặt / chờ / khớp / huỷ |
AvgPrice | decimal | Giá TB khớp |
Status | string? | Mã trạng thái (xem OrderStatus) |
InputTime / ModifiedTime | string | Thời gian đặt / sửa. ModifyTime là tên cũ, [Obsolete] |
Message | string | Thông báo |
RejectReason | string | Lý do từ chối |
SystemRequestId, ErrorCode, ErrorMessage, NotifyId, ConnectionId | string | Thông tin hệ thống và lỗi kèm theo sự kiện |
OrderMatchMessage
Một lần khớp của lệnh (orderMatchEvent).
| Trường | Kiểu | Mô tả |
|---|---|---|
Type | string | Loại sự kiện |
NotifyId, ConnectionId | string | Thông tin hệ thống |
ClientRequestId / OrderId | string | Mã yêu cầu client / mã lệnh |
Symbol | string | Mã chứng khoán |
Side | string? | "B" / "S" |
AccountNo | string | Số tài khoản |
MatchPrice | decimal | Giá khớp |
MatchQty | int | Khối lượng khớp |
MatchTime | string | Thời gian khớp |
PortfolioMessage
Cập nhật vị thế (clientPortfolioEvent, chỉ tài khoản phái sinh). Số liệu server không gửi là null.
| Trường | Kiểu | Mô tả |
|---|---|---|
Type | string | Loại sự kiện |
AccountNo | string | Số tài khoản |
Symbol | string | Mã hợp đồng |
LongQty / ShortQty / Net | int | KL mua / bán / ròng |
BidAvgPrice / AskAvgPrice | decimal? | Giá TB mua / bán |
TradePrice / MarketPrice | decimal? | Giá giao dịch / giá thị trường |
FloatingPL / TradingPL | decimal? | Lãi/lỗ chưa thực hiện / giao dịch |
PositionType | string | Loại vị thế |
TotalAsset, CashBalance, StockValue còn trong class nhưng đã deprecated: server không bao giờ gửi nên luôn là null.
FCOOrderUpdateMessage
Cập nhật trạng thái lệnh điều kiện FCO, nhận qua SetOnTrading khi eventType là "fcoEvent". Không có topic fco_order.* hay fco.* nào được parse riêng.
Chưa xác nhận: code SDK parse
fcoEvent, nhưng CHANGELOG của SDK liệt kê streamingfcoEventlà chưa triển khai. Chưa kiểm chứng với server thật; đừng dựa vào luồng này cho logic quan trọng.
| Trường | Kiểu | Mô tả |
|---|---|---|
FCOID | string | Mã lệnh FCO |
ProcessStatus | string? | Trạng thái xử lý lệnh FCO (INIT, WAIT, WC, TER, ... — xem FCOStatus) |
MatchedQuantity | int | Khối lượng đã khớp |
IsPlaceOrder | bool | Đã đẩy lệnh vào sổ hay chưa |
Symbol | string | Mã chứng khoán |
Quantity | int | Khối lượng đặt |
Price | string | Giá đặt |
AccountNo | string | Số tài khoản |
UpdatedTime | string | Thời gian cập nhật |
Status | string | Mã trạng thái |
Message | string | Thông báo chi tiết / lý do kích hoạt |
Username | string | Username đặt lệnh |
EventType | string | Loại sự kiện ("fcoEvent") |
FCOType | string? | Loại lệnh điều kiện (gtd, stop, ... — xem FCOType) |
ConnectionEvent
record ConnectionEvent(string State, int ReconnectCount = 0, Exception? Error = null), nhận qua OnConnection. State là một trong các hằng của ConnectionState: "connected", "reconnected", "disconnected", "failed". ReconnectCount là số lần kết nối lại; Error là exception đi kèm khi có.
TradingWsResponse
Frame thành công từ Trading WebSocket (namespace SsiSdk, không phải SsiSdk.Models). Xem mục 7 của API Services.
| Trường | Kiểu | Mô tả |
|---|---|---|
Id | string | Mã yêu cầu của lệnh |
Method | string | Tên method đã gửi |
Status | int | Mã trạng thái, mặc định 200 |
Result | JsonElement | Thành phần result; Undefined khi frame không có |
RateLimit | IReadOnlyDictionary<string, JsonElement> | Hạn mức server báo kèm frame (limit / remaining / resetMs) |
ReceivedTime | long? | Thời điểm server nhận |
Khác
RateLimitInfo
record RateLimitInfo(int? Limit, int? Remaining): thông tin rate limit của response gần nhất, đọc qua auth.RateLimit.