.NET

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ườngKiểuMô tả
AccessTokenstringToken truy cập (credential, không in ra log)
TokenTypestringLoại token (mặc định "Bearer")
ExpiresAtlongThời điểm access token hết hạn, epoch giây. 0 là không biết (coi như đã hết hạn)
RefreshTokenstringToken làm mới (credential)
RefreshTokenExpiresAtlongThời điểm refresh token hết hạn, epoch giây. 0 là không biết
EffectiveExpiresAtlong (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
CanRefreshbool (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ườngKiểuMô tả
MessagestringThông báo từ server
TransactionIdstring?Mã giao dịch Smart OTP để poll duyệt, khi server cấp (null khi không có)

Account

Account

TrườngKiểuMô tả
AccountNostringSố tài khoản
AccountTypestring?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ườngKiểuMô tả
SymbolstringMã chứng khoán
TradingDatestringNgày giao dịch
OpenPricedecimalGiá mở cửa
HighPricedecimalGiá cao nhất
LowPricedecimalGiá thấp nhất
ClosePricedecimalGiá đóng cửa
VolumeintKhối lượng
ValuedecimalGiá trị giao dịch

MarketIndexes

TrườngKiểuMô tả
IndexstringMã chỉ số
IndexNamestringTên chỉ số
Boardstring?Sàn, đúng như server gửi (null khi trống)

MarketIndexSummary

TrườngKiểuMô tả
IndexstringMã chỉ số
BoardstringSàn
TradingDatestringNgày giao dịch
IndexValuedecimalGiá trị chỉ số
IndexChangedecimalThay đổi
IndexChangePercentdecimalThay đổi (%)
TotalTradeintTổng KL giao dịch
TotalTradeValuedecimalTổng giá trị giao dịch
TotalAdvanceStockintSố mã tăng
TotalDeclineStockintSố mã giảm
TotalSteadyStockintSố mã đứng
TotalMatchintTổng khối lượng khớp
TotalMatchValuedecimalTổng giá trị khớp
TotalDealintTổng khối lượng thoả thuận
TotalDealValuedecimalTổng giá trị thoả thuận
TotalCeilingStockintSố CP trần
TotalFloorStockintSố CP sàn
TotalPropBuy / TotalPropSellintTổng KL mua / bán tự doanh
TotalPropBuyValue / TotalPropSellValuedecimalTổng GT mua / bán tự doanh
TotalBuyForeign / TotalSellForeigndecimal?KL mua / bán của khối ngoại
TotalBuyForeignValue / TotalSellForeignValuedecimal?GT mua / bán của khối ngoại
NetPurchasesForeignVolume / NetPurchasesForeignValuedecimal?KL / GT mua ròng của khối ngoại

SecuritiesInfo

TrườngKiểuMô tả
SymbolstringMã chứng khoán
Boardstring?Sàn
IndexstringChỉ số
SymbolNameVistringTên tiếng Việt
SymbolNameEnstringTên tiếng Anh
LotSizeint?Lô giao dịch (null khi server không gửi)
ListedSharesint?Số CP niêm yết (null khi server không gửi)
IcbCode / IcbNamestring?Mã / tên ngành ICB
MaturityDatestring?Ngày đáo hạn
FirstTradingDate / LastTradingDatestring?Ngày GD đầu tiên / cuối cùng
CwUnderlyingSymbolstring?Mã CK cơ sở CW
CwExercisePrice / CwExecutionRatiodecimal?Giá / tỷ lệ thực hiện CW
IIndexdecimal?Chỉ số I
INavdecimal?Giá trị iNAV
OpenInterestdecimal?Khối lượng mở
SettlementPricedecimal?Giá thanh toán
StockTypestring?Loại chứng khoán

SecuritiesSummary

TrườngKiểuMô tả
SymbolstringMã chứng khoán
TradingDatestringNgày giao dịch
PriceChange / PriceChangePercentdecimalThay đổi giá / thay đổi giá (%)
OpenPrice / HighPrice / LowPrice / ClosePricedecimalGiá mở / cao / thấp / đóng
AveragePricedecimalGiá trung bình
TotalMatch / TotalMatchValueint / decimalTổng KL / GT khớp
TotalBuy / TotalTradeBuyint / decimalTổng KL / GT mua
TotalSell / TotalTradeSellint / decimalTổng KL / GT bán
TotalForeignBuy / TotalForeignSellintKL mua / bán khối ngoại
TotalForeignBuyValue / TotalForeignSellValuedecimalGT mua / bán khối ngoại
RemainForeignRoom / TotalForeignRoomintRoom ngoại còn lại / tổng
TotalDeal / TotalDealValueint / decimalKL / GT thoả thuận
OpenInterest / SettlementPricedecimalKhối lượng mở / giá thanh toán
Ceiling / Floor / RefPricedecimal?Giá trần / sàn / tham chiếu

MasterData

TrườngKiểuMô tả
Boardstring?Sàn
SymbolstringMã chứng khoán
TradingDatestringNgày giao dịch
CeilingdecimalGiá trần
FloordecimalGiá sàn
RefPricedecimalGiá 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ườngKiểuMô tả
SymbolstringMã chứng khoán
EventTitlestringTiêu đề sự kiện
ExrightDatestringNgày giao dịch không hưởng quyền
RecordDatestringNgày đăng ký cuối cùng
IssueDatestringNgày thực hiện
ExchangestringSàn
RatiostringTỷ lệ

Method trả về model này: GetCorporateActionsAsync, GetCorporateActionsHistoricalAsync (mục 3.7 của API Services).

DownloadData không còn trong SDK: các hàm Download* ném NotImplementedException.

Portfolio

EquityAccountBalance

TrườngKiểuMô tả
AccountNostringSố tài khoản
AccountBalancedecimalSố dư tài khoản (tiền mặt khả dụng)
TotalDebtdecimalTổng nợ
InterestLoandecimalLãi vay
OverdueFeeLoandecimalPhí vay quá hạn
WithdrawabledecimalTiền có thể rút
OnHoldCashdecimalTiền tạm giữ
SellUnmatched / BuyUnmatcheddecimalTiền bán/mua chờ khớp
SellT0 / SellT1 / SellT2decimalTiền bán T0/T1/T2
BuyT0 / BuyT1 / BuyT2decimalTiền mua T0/T1/T2
AdvanceCashT0 / AdvanceCashT1decimalỨng tiền T0/T1
HoldSubscriptiondecimalTiền giữ đăng ký
DividenddecimalCổ tức

DerivativeAccountBalance

TrườngKiểuMô tả
AccountNostringSố tài khoản
AccountBalancedecimalSố dư tài khoản
Fee / Commission / Interest / ExtInterestdecimalPhí / Hoa hồng / Lãi
LoandecimalVay
DeliveryAmountdecimalGiá trị giao nhận
FloatingPL / TradingPL / TotalPLdecimalLãi/lỗ chưa thực hiện / giao dịch / tổng
WithdrawabledecimalTiền rút được
CashSSI / ValidNonCashSSI / WithdrawableSSIdecimalTiền mặt / tài sản phi tiền mặt hợp lệ / rút được (SSI)
CashVSDC / ValidNonCashVSDC / WithdrawableVSDCdecimalTương tự tại VSDC

CashWithdrawableSSI và CashWithdrawableVSDC là tên cũ, được đánh dấu [Obsolete]; dùng WithdrawableSSI và WithdrawableVSDC.

EquityPosition

TrườngKiểuMô tả
AccountNostringSố tài khoản
SymbolstringMã chứng khoán
QuantityintTổng số lượng
SellableQuantityintSố lượng bán được
CostPricedecimalGiá vốn
BuyingQuantity / SellingQuantityintSL đang mua / đang bán
BoughtQuantity / SoldQuantityintKhối lượng đã mua / đã bán
MortgageQuantityintSL cầm cố
BlockQuantityintKhối lượng phong toả
DividendQuantityintKhối lượng cổ tức
T1SellQuantity / T2SellQuantityintKL bán T1 / T2
T1BuyQuantity / T2BuyQuantityintKL mua T1 / T2
RestrictedQuantityintKhối lượng hạn chế

DerivativePosition

TrườngKiểuMô tả
AccountNostringSố tài khoản
SymbolstringMã hợp đồng
Long / Short / NetintVị thế mua / bán / ròng
BidAvgPrice / AskAvgPricedecimalGiá TB mua / bán
TradePricedecimalGiá giao dịch
FloatingPL / TradingPLdecimalLãi/lỗ

AllDerivativePosition

TrườngKiểuMô tả
OpenPositionsList<DerivativePosition>Vị thế đang mở
ClosedPositionsList<DerivativePosition>Vị thế đã đóng
AccountNostringSố 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ườngKiểuMô tả
EquityList<EquityPosition>?Vị thế cơ sở
DerivativeAllDerivativePosition?Vị thế phái sinh

Order

TrườngKiểuMô tả
AccountNostringSố tài khoản
ClientRequestIdstringID yêu cầu client
OrderIdstringID lệnh
SymbolstringMã chứng khoán
Sidestring?"B" / "S"; chuỗi gốc nếu không nhận ra; null khi vắng mặt
OrderTypestring?Loại lệnh (xem OrderType); chuỗi gốc nếu không nhận ra; null khi vắng mặt
PricedecimalGiá đặt; 0 khi lệnh không có giá số (xem PriceMarker)
PriceMarkerstring?Từ chỉ giá server gửi thay cho số (ví dụ "ATO", "MP"); null với giá số
AvgPricedecimalGiá TB khớp
QuantityintSL đặt
OsQuantityint?SL chờ (null khi server không gửi)
FilledQuantityintSL đã khớp
CancelQuantityintSL đã huỷ
Statusstring?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 / ModifyTimestringThời gian đặt / sửa
MessagestringThô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ườngKiểuMô tả
OrdersList<Order>Danh sách lệnh
TotalOrdersintTổ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ườngKiểuMô tả
AccountNostringSố tài khoản
PurchasingPower (EquityPPMMR)decimalSức mua
WithdrawabledecimalTiền/tài sản rút được
MarginRatio (EquityPPMMR)decimalTỷ lệ ký quỹ
TotalEquitydecimalTổng tài sản ròng
AccountBalancedecimalSố 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ườngKiểuMô tả
AccountNostringSố tài khoản
SymbolstringMã chứng khoán
MaxBuyQuantityintSL mua tối đa
MaxSellQuantityintSL bán tối đa
MarginRatiostring?Tỷ lệ ký quỹ
PurchasingPowerlong?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âng MaxBatchOrders do bên gọi quyết định.

BatchPlaceOrderItem

record với các tham số giống PlaceOrderAsync.

Thuộc tínhKiểuBắt buộcMô tả
AccountNostringCó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ả.
SymbolstringCóMã chứng khoán
SidestringCóOrderSide.Buy ("B") hoặc OrderSide.Sell
QuantityintCóSố lượng, phải lớn hơn 0
Pricedecimal?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.
OrderTypestringCóOrderType.LO, OrderType.ATO, OrderType.ATC, OrderType.MP, ...
ClientRequestIdstring?KhôngMã lệnh do bạn đặt, 1 đến 20 ký tự. Nếu null, SDK tự sinh.

BatchCancelOrderItem

Thuộc tínhKiểuBắt buộcMô tả
AccountNostringCóTài khoản giao dịch
OrderIdstring?Một trong haiMã lệnh do hệ thống sinh
ClientRequestIdstring?Một trong haiClientRequestId 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ínhKiểuMô tả
BatchRequestIdstringMã batch được trả lại
ResultsList<BatchOrderResult>Một phần tử cho mỗi lệnh, cùng thứ tự với request

BatchOrderResult

Thuộc tínhKiểuMô tả
ClientRequestIdstringMã lệnh do bạn gửi, hoặc được sinh
OrderIdstringMã lệnh của hệ thống (khi được chấp nhận)
StatusstringTrạng thái lệnh sau request (orderStatus)
Successbooltrue nếu lệnh được chấp nhận xử lý
ErrorCodestringMã lỗi của lệnh này khi Success là false
ErrorMessagestringMô tả lỗi của lệnh này khi Success là false
ClientCancelIdstringMã 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ườngKiểuMô tả
PageIndexintTrang hiện tại
PageSizeintKích thước trang
ItemsCountintTổng số bản ghi
PagesCountintTổng số trang
FCOListList<FCOInfo>Danh sách lệnh FCO

FCOInfo

Thông tin chi tiết một lệnh điều kiện.

TrườngKiểuMô tả
FCOIDstringMã lệnh FCO
ClientIDstringUsername / Client ID
AccountNostringSố tài khoản
QuantityintKhối lượng đặt
PricestringGiá đặt
PriceSlipdecimal?Độ trượt giá
SymbolstringMã chứng khoán
Typestring?Loại lệnh điều kiện (xem FCOType)
FromDatestringNgày bắt đầu hiệu lực
ToDatestringNgày kết thúc hiệu lực
MatchedQuantityintKhối lượng đã khớp
IsPlaceOrderboolĐã đẩy lệnh vào sổ hay chưa
Statusstring?Trạng thái lệnh FCO (xem FCOStatus)
DetailstringChi tiết trạng thái
ParamsFCOParams?Tham số kích hoạt lệnh FCO
OrderTypestring?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ườngKiểuMô tả
StopPricedecimal?Giá dừng / giá kích hoạt
Sidestring?Chiều lệnh (Mua/Bán)
ActivePricedecimal?Giá kích hoạt (Trailing Stop)
TrailingAmountdecimal?Khoảng bám sát (Trailing Amount)
TPActivePricedecimal?Giá kích hoạt chốt lời (Take Profit)
SLActivePricedecimal?Giá kích hoạt cắt lỗ (Stop Loss)
TPPricestring?Giá chốt lời
SLPricestring?Giá cắt lỗ
TPSlipdecimal?Trượt giá chốt lời
SLSlipdecimal?Trượt giá cắt lỗ
Operatorstring?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ườngKiểuMô tả
PageIndexintTrang hiện tại
PageSizeintKích thước trang
ItemsCountintTổng số bản ghi
PagesCountintTổng số trang
OrderBookList<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ườngKiểuMô tả
FCOIDstringMã lệnh FCO gốc
AccountNostringSố tài khoản
QuantityintKhối lượng
PricestringGiá đặt
SymbolstringMã chứng khoán
Sidestring?Chiều lệnh
OrderTypestring?Loại lệnh con
IsMainOrderboolLà lệnh chính
IsAttachedOrderboolLà lệnh kèm theo
CreatedTime / UpdatedTimestringThời gian tạo / cập nhật
UniqueIDstringID duy nhất
OrderIDstringMã lệnh trên sàn
MatchedQuantityintKhối lượng đã khớp
OSQuantityintKhối lượng chờ khớp
AvgPricedecimalGiá khớp trung bình
Statusstring?Trạng thái lệnh con
DetailstringChi tiết
Typestring?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ườngKiểuMô tả
StatestringTrạng thái
TimestringThời điểm
Codestring?Mã
DetailstringChi 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:

TopicModel
trade.index.CODEIndexTickMessage
trade.index.CODE@1m / @5mIntervalMessage
trade.CODETradeMessage
trade.CODE@1m / @5mIntervalMessage
quote.CODEQuoteMessage
room.CODEForeignRoomMessage
indexsummary.CODEIndexSummaryMessage
market.flagMarketFlagMessage
market.* (có s, ce, fl hoặc ref)MarketDataMessage
market.* (còn lại)MarketStatusMessage
put.CODEPutMessage
oddlot.CODEOddLotMessage

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ường Open/High/Low/Avg của TradeMessage) chưa được xác nhận với server thật. Dùng Raw hoặc Data khi 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ườngKiểuKhóa serverMô tả
TypestringLoại dữ liệu
TradingTimestringtThời gian giao dịch
SymbolstringsMã chứng khoán
PricedecimalpGiá khớp
QuantityintqKhối lượng khớp
SidestringsiChiều khớp; mặc định "U" khi server không gửi
TotalVolumeintvTổng khối lượng
Open / High / Low / Avgdecimal?o, h, l, anull khi server không gửi

IndexTickMessage

Tick của chính chỉ số, từ trade.index.CODE.

Thuộc tínhKiểuKhóa serverMô tả
TypestringLoại message (trade)
SymbolstringsMã chỉ số
BoardstringbBảng
StatusstringssTrạng thái chỉ số
TradingTimestringtThời gian giao dịch
Valuedecimal?vGiá trị chỉ số
Changedecimal?cThay đổi (điểm)
ChangePercentdecimal?crThay đổi (%)
Advancesdecimal?advSố mã tăng
Declinesdecimal?decSố mã giảm
NoChangedecimal?ncSố mã đứng giá
Ceilingsdecimal?ceSố mã trần
Floorsdecimal?flSố mã sàn
TotalMatchValuedecimal?tmvGiá trị khớp lệnh
TotalMatchQuantitydecimal?tmqKhối lượng khớp lệnh
TotalPutValuedecimal?tvpGiá trị thỏa thuận
TotalPutQuantitydecimal?tqpKhối lượng thỏa thuận
TotalQuantitydecimal?tqTổng khối lượng
TotalValuedecimal?tvTổng giá trị
RawDictionary<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ínhKiểuKhóa serverMô tả
TypestringLoại message (trade)
IntervalTimestringstThời điểm bắt đầu nến
TradingTimestringtThời gian giao dịch
SymbolstringsMã
Open, High, Low, Closedecimalo, h, l, cGiá của nến
VolumeintvKhối lượng

IndexSummaryMessage

Từ indexsummary.CODE.

Thành phầnKiểuMô tả
IndexstringMã chỉ số, viết hoa
DataDictionary<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ườngKiểuMô tả
TypestringLoại dữ liệu
TradingTimestringThời gian
SymbolstringMã chứng khoán
BidPrices / AskPricesList<decimal>Các mức giá mua / bán
BidVolumes / AskVolumesList<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ườngKiểuKhóa serverMô tả
BoardstringbSàn
TradingTimestringtThời gian
FlagstringfCờ 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ườngKiểuKhóa serverMô tả
SymbolstringsMã chứng khoán
BoardstringbSàn
TradingTimestringtThời gian
Ceiling / Floor / RefPricedecimal?ce, fl, refGiá 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ườngKiểuMô tả
TypestringLoại sự kiện
AccountNostringSố tài khoản
ClientRequestId / OrderIdstringMã yêu cầu client / mã lệnh
SymbolstringMã chứng khoán
Sidestring?"B" / "S"; chuỗi gốc nếu không nhận ra
OrderTypestring?Loại lệnh
PricedecimalGiá đặt; 0 khi server gửi từ chỉ giá (xem PriceMarker)
PriceMarkerstring?Từ chỉ giá thay cho số (ví dụ "ATO")
Quantity / OsQuantity / FilledQuantity / CancelQuantityintSL đặt / chờ / khớp / huỷ
AvgPricedecimalGiá TB khớp
Statusstring?Mã trạng thái (xem OrderStatus)
InputTime / ModifiedTimestringThời gian đặt / sửa. ModifyTime là tên cũ, [Obsolete]
MessagestringThông báo
RejectReasonstringLý do từ chối
SystemRequestId, ErrorCode, ErrorMessage, NotifyId, ConnectionIdstringThô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ườngKiểuMô tả
TypestringLoại sự kiện
NotifyId, ConnectionIdstringThông tin hệ thống
ClientRequestId / OrderIdstringMã yêu cầu client / mã lệnh
SymbolstringMã chứng khoán
Sidestring?"B" / "S"
AccountNostringSố tài khoản
MatchPricedecimalGiá khớp
MatchQtyintKhối lượng khớp
MatchTimestringThờ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ườngKiểuMô tả
TypestringLoại sự kiện
AccountNostringSố tài khoản
SymbolstringMã hợp đồng
LongQty / ShortQty / NetintKL mua / bán / ròng
BidAvgPrice / AskAvgPricedecimal?Giá TB mua / bán
TradePrice / MarketPricedecimal?Giá giao dịch / giá thị trường
FloatingPL / TradingPLdecimal?Lãi/lỗ chưa thực hiện / giao dịch
PositionTypestringLoạ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ê streaming fcoEvent là 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ườngKiểuMô tả
FCOIDstringMã lệnh FCO
ProcessStatusstring?Trạng thái xử lý lệnh FCO (INIT, WAIT, WC, TER, ... — xem FCOStatus)
MatchedQuantityintKhối lượng đã khớp
IsPlaceOrderboolĐã đẩy lệnh vào sổ hay chưa
SymbolstringMã chứng khoán
QuantityintKhối lượng đặt
PricestringGiá đặt
AccountNostringSố tài khoản
UpdatedTimestringThời gian cập nhật
StatusstringMã trạng thái
MessagestringThông báo chi tiết / lý do kích hoạt
UsernamestringUsername đặt lệnh
EventTypestringLoại sự kiện ("fcoEvent")
FCOTypestring?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ườngKiểuMô tả
IdstringMã yêu cầu của lệnh
MethodstringTên method đã gửi
StatusintMã trạng thái, mặc định 200
ResultJsonElementThành phần result; Undefined khi frame không có
RateLimitIReadOnlyDictionary<string, JsonElement>Hạn mức server báo kèm frame (limit / remaining / resetMs)
ReceivedTimelong?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.

Trên trang này