NodeJS

Models

Các interface TypeScript và message streaming trong Node.js SDK

Các model là TypeScript interface (riêng Token và OTPResponse là class). Import từ package chính.

Cấu trúc Module

@ssi.developer/ssi-sdk
├── Auth, Data, Trading, Stream  (client classes)
├── Config                        (cấu hình)
├── models/
│   ├── auth        → Token, OTPResponse
│   ├── account     → Account
│   ├── marketData  → OHLCData, MarketIndexes, MarketIndexSummary, SecuritiesInfo, SecuritiesSummary, MasterData,
│   │                 CorporateAction
│   ├── trading     → PlaceOrderResponse, ModifyOrderResponse, CancelOrderResponse, MaxBuySellResponse,
│   │                 BatchPlaceOrderItem, BatchCancelOrderItem, BatchOrderResponse, BatchOrderResult
│   ├── portfolio   → EquityAccountBalance, DerivativeAccountBalance, EquityPosition, DerivativePosition,
│   │                 AllDerivativePosition, Order
│   ├── streaming   → DataMessage, TradingMessage, HeartbeatMessage, IndexTickMessage, IntervalMessage,
│   │                 IndexSummaryMessage, FCOOrderUpdateMessage, ...
│   └── fco         → FCOInfo, FCOParams, FCOListResponse, FCOOrder, FCOOrderBookResponse, FCOPlaceResponse,
│                     FCOCancelResponse, FCOStatusHistoryItem
├── enums/          → OrderSide, OrderType, Board, Timeframe, FCOType, FCOOperator, FCOStatus, ...
├── exceptions      → SSIError, APIError, AuthenticationError, ...
└── Trading WebSocket
                    → asyncTradingWs, tradingWs, TradingWSClient, TradingWSService, MUTATING_METHODS,
                      TradingWSResponse, FcoParamsKind, FcoListOptions, OrderBookQuery

Các nhóm theo tính năng, đều trỏ về API Services là nơi mô tả cách dùng:

  • Batch Orders: BatchPlaceOrderItem, BatchCancelOrderItem, BatchOrderResponse, BatchOrderResult.
  • Real-time Index Data: IndexTickMessage, IntervalMessage, IndexSummaryMessage.
  • Trading WebSocket: TradingWSResponse, FcoParamsKind, FcoListOptions và OrderBookQuery.

Xác thực

Token

FieldKiểuMô tả
accessTokenstringAccess token
tokenTypestringLoại token (mặc định "Bearer")
expiresAtnumberThời điểm access token hết hạn, epoch giây (0 = không rõ, coi như đã hết hạn)
refreshTokenstringRefresh token
refreshExpiresAtnumberThời điểm refresh token hết hạn, epoch giây. Trước đây tên là refreshTokenExpiresAt

Ngoài field, Token còn có:

Thành viênKiểuMô tả
effectiveExpiresAtnumber (getter)Mốc epoch giây sau đó bộ token không dùng được nếu không có OTP mới: lấy mốc sớm hơn trong hai mốc hết hạn, bỏ qua mốc không rõ. 0 khi cả hai đều không rõ
canRefreshboolean (getter)Có refresh token và nó chưa (sắp) hết hạn. Nếu không rõ hạn của refresh token thì vẫn trả true, server sẽ từ chối nếu token đã chết
toDict()Record<string, unknown>Giá trị gốc của token (dùng khi bạn thật sự cần lưu lại)

toString(), console.log và JSON.stringify của Token đều che accessToken và refreshToken. Chỉ toDict() trả giá trị thật, vì vậy đừng log kết quả của nó.

OTPResponse

Kết quả của requestOtpTyped() (xem Client Classes). OTPResponse cũng là class và che transactionId khi JSON.stringify.

FieldKiểuMô tả
messagestringThông báo của server ("" nếu không có)
transactionIdstring?Chỉ có với Smart OTP (duyệt qua push). OTP gửi qua SMS/e-mail chỉ có message

Tài khoản

Account

FieldKiểuMô tả
accountNostringSố tài khoản
accountTypeAccountType | string | number | undefinedLoại tài khoản. Là AccountType nếu SDK nhận ra, giữ nguyên giá trị thô nếu không nhận ra, undefined nếu server không gửi

Dữ liệu thị trường

OHLCData

FieldKiểuMô tả
symbolstringMã chứng khoán
tradingDatestringNgày giao dịch
openPricenumberGiá mở
highPricenumberGiá cao
lowPricenumberGiá thấp
closePricenumberGiá đóng
volumenumberKhối lượng
valuenumberGiá trị giao dịch

MarketIndexes

FieldKiểuMô tả
indexstringMã chỉ số
indexNamestringTên chỉ số
boardBoard | string | undefinedSàn. Là Board nếu SDK nhận ra, giữ chuỗi thô nếu không nhận ra
boardRawstring?Giá trị sàn đúng như server gửi

MarketIndexSummary

FieldKiểuMô tả
tradingDatestringNgày giao dịch
indexValuenumberGiá trị chỉ số
indexChangenumberThay đổi
indexChangePercentnumberThay đổi (%)
totalTradenumberTổng khối lượng giao dịch
totalTradeValuenumberTổng giá trị giao dịch
totalAdvanceStocknumberSố CP tăng
totalDeclineStocknumberSố CP giảm
totalSteadyStocknumberSố CP không đổi
totalMatchnumberTổng khối lượng khớp
totalMatchValuenumberTổng giá trị khớp
totalDealnumberTổng khối lượng thoả thuận
totalDealValuenumberTổng giá trị thoả thuận
totalCeilingStocknumberSố CP trần
totalFloorStocknumberSố CP sàn
totalPropBuynumberTổng KL mua tự doanh
totalPropBuyValuenumberTổng GT mua tự doanh
totalPropSellnumberTổng KL bán tự doanh
totalPropSellValuenumberTổng GT bán tự doanh
totalBuyForeignnumber?KL mua nước ngoài
totalBuyForeignValuenumber?GT mua nước ngoài
totalSellForeignnumber?KL bán nước ngoài
totalSellForeignValuenumber?GT bán nước ngoài
netPurchasesForeignVolumenumber?KL mua ròng nước ngoài
netPurchasesForeignValuenumber?GT mua ròng nước ngoài

Các field nước ngoài là undefined khi server không gửi.

SecuritiesInfo

Field số mà server bỏ trống hoặc không gửi là undefined (không phải 0). Chuỗi rỗng cũng thành undefined.

FieldKiểuMô tả
symbolstringMã chứng khoán
boardBoard | string?Sàn
indexstring?Chỉ số
symbolNameVistring?Tên tiếng Việt
symbolNameEnstring?Tên tiếng Anh
lotSizenumber?Lô giao dịch
listedSharesnumber?Số CP niêm yết
icbCodestring?Mã ICB
icbNamestring?Tên ICB
maturityDatestring?Ngày đáo hạn
firstTradingDatestring?Ngày GD đầu tiên
lastTradingDatestring?Ngày GD cuối cùng
cwUnderlyingSymbolstring?Mã CK cơ sở CW
cwExercisePricenumber?Giá thực hiện CW
cwExecutionRationumber?Tỷ lệ thực hiện CW
iIndexnumber?Chỉ số I
iNavnumber?Giá trị iNAV
openInterestnumber?Khối lượng mở (OI)
settlementPricenumber?Giá thanh toán
stockTypestring?Mã loại chứng khoán

SecuritiesSummary

FieldKiểuMô tả
symbolstringMã chứng khoán
tradingDatestringNgày giao dịch
priceChangenumberThay đổi giá
priceChangePercentnumberThay đổi giá (%)
openPricenumberGiá mở
highPricenumberGiá cao
lowPricenumberGiá thấp
closePricenumberGiá đóng
totalMatchnumberTổng khối lượng khớp
totalMatchValuenumberTổng giá trị khớp
averagePricenumberGiá trung bình
totalBuynumberTổng KL mua
totalTradeBuynumberTổng GT mua
totalSellnumberTổng KL bán
totalTradeSellnumberTổng GT bán
totalForeignBuynumberKL mua nước ngoài
totalForeignBuyValuenumberGT mua nước ngoài
totalForeignSellnumberKL bán nước ngoài
totalForeignSellValuenumberGT bán nước ngoài
remainForeignRoomnumberRoom nước ngoài còn lại
totalForeignRoomnumberTổng room nước ngoài
totalDealnumberTổng KL thoả thuận
totalDealValuenumberTổng GT thoả thuận
openInterestnumberKhối lượng mở (OI)
settlementPricenumberGiá thanh toán
ceiling / floor / refPricenumber?Giá trần / sàn / tham chiếu. securitiesSummary không gửi các field này nên luôn là undefined: dùng getMasterData() (xem MasterData)

MasterData

Giá trần, sàn và tham chiếu của một mã, lấy từ getMasterData() (xem API Services, mục 3.6).

FieldKiểuMô tả
boardBoard | string?Sàn
symbolstringMã chứng khoán
tradingDatestringNgày giao dịch
ceilingnumberGiá trần
floornumberGiá sàn
refPricenumberGiá tham chiếu

CorporateAction

Một sự kiện quyền (cổ tức, cổ phiếu thưởng, phát hành thêm...) của một mã, lấy từ getCorporateActions() và getCorporateActionsHistorical() (xem API Services, mục 3.7). Mọi field đều là string đúng như server trả: ngày giữ dạng text YYYY/MM/DD, ratio không được parse vì ý nghĩa phụ thuộc loại sự kiện. Field server để trống (ví dụ sự kiện mới công bố chưa có ngày giao dịch không hưởng quyền hoặc tỷ lệ) là "".

FieldKiể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
exchangestringMã sàn, ví dụ "HOSE"
ratiostringTỷ lệ sự kiện dạng text, ví dụ "0.9388"

Danh mục

EquityAccountBalance

FieldKiểuMô tả
accountNostringSố tài khoản
accountBalancenumberSố dư tài khoản
totalDebtnumberTổng nợ
interestLoannumberLãi vay
overdueFeeLoannumberPhí quá hạn
withdrawablenumberTiền rút được
onHoldCashnumberTiền giữ
sellUnmatchednumberBán chưa khớp
sellT0numberTiền bán T+0
sellT1numberTiền bán T+1
sellT2numberTiền bán T+2
buyUnmatchednumberMua chưa khớp
buyT0numberTiền mua T+0
buyT1numberTiền mua T+1
buyT2numberTiền mua T+2
advanceCashT0numberỨng trước T+0
advanceCashT1numberỨng trước T+1
holdSubscriptionnumberGiữ đăng ký mua
dividendnumberCổ tức

DerivativeAccountBalance

FieldKiểuMô tả
accountNostringSố tài khoản
accountBalancenumberSố dư tài khoản
feenumberPhí
commissionnumberHoa hồng
interestnumberLãi
extInterestnumberLãi mở rộng
loannumberKhoản vay
deliveryAmountnumberGiá trị giao hàng
floatingPlnumberLãi/lỗ chưa thực hiện
tradingPlnumberLãi/lỗ giao dịch
totalPlnumberTổng lãi/lỗ
withdrawablenumberCó thể rút
cashSsinumberTiền tại SSI
validNonCashSsinumberTài sản phi tiền mặt hợp lệ tại SSI
withdrawableSsinumberCó thể rút tại SSI
cashVsdcnumberTiền tại VSDC
validNonCashVsdcnumberTài sản phi tiền mặt hợp lệ tại VSDC
withdrawableVsdcnumberCó thể rút tại VSDC

cashWithdrawableSsi và cashWithdrawableVsdc vẫn đọc được nhưng deprecated: dùng withdrawableSsi và withdrawableVsdc.

EquityPosition

FieldKiểuMô tả
accountNostringSố tài khoản
symbolstringMã chứng khoán
quantitynumberTổng khối lượng
sellableQuantitynumberKhối lượng bán được
costPricenumberGiá vốn
buyingQuantitynumberKhối lượng đang mua
sellingQuantitynumberKhối lượng đang bán
mortgageQuantitynumberKhối lượng cầm cố
blockQuantitynumberKhối lượng phong toả
dividendQuantitynumberKhối lượng cổ tức
boughtQuantitynumberKhối lượng đã mua
soldQuantitynumberKhối lượng đã bán
t1SellQuantitynumberKhối lượng bán T+1
t2SellQuantitynumberKhối lượng bán T+2
t1BuyQuantitynumberKhối lượng mua T+1
t2BuyQuantitynumberKhối lượng mua T+2
restrictedQuantitynumberKhối lượng hạn chế

DerivativePosition

FieldKiểuMô tả
accountNostringSố tài khoản
symbolstringMã hợp đồng
long / short / netnumberVị thế Long / Short / Net (net có thể âm)
bidAvgPrice / askAvgPricenumberGiá TB mua / bán
floatingPl / tradingPlnumberLãi/lỗ
tradePricenumberGiá giao dịch

AllDerivativePosition

Vị thế phái sinh của một tài khoản, tách vị thế đang mở và đã đóng. Nằm trong Position.derivative; Position.equity là danh sách EquityPosition[]. Cả hai là undefined khi tài khoản không có phần đó (xem cách các method positions trả undefined ở API Services).

FieldKiểuMô tả
openPositionsDerivativePosition[]Vị thế đang mở
closedPositionsDerivativePosition[]Vị thế đã đóng
accountNostringSố tài khoản

Order

FieldKiểuMô tả
accountNostringSố tài khoản
clientRequestIdstringClient request ID (tối đa 20 ký tự)
orderIdstringOrder ID
symbolstringMã chứng khoán
sideOrderSide | string | undefinedMua/Bán. Giữ chuỗi thô nếu SDK không nhận ra
orderTypeOrderType | string | undefinedLoại lệnh
pricenumber | OrderType | stringGiá đặt. Lệnh giá thị trường là một từ như "ATO"
avgPricenumberGiá khớp TB
quantitynumberKhối lượng đặt
osQuantitynumber?Khối lượng chờ. Sổ lệnh REST không gửi field này nên ở đó là undefined
filledQuantitynumberKhối lượng khớp
cancelQuantitynumberKhối lượng huỷ
statusOrderStatus | string | undefinedTrạng thái lệnh
inputTime / modifyTimestringThời gian đặt / sửa (yyyy/MM/dd HH:mm:ss)
messagestringThông báo của server (với lệnh bị từ chối là lý do)

Response giao dịch

PlaceOrderResponse

orderId, clientRequestId, status

ModifyOrderResponse

clientModifyId, orderId, clientRequestId, status

CancelOrderResponse

clientCancelId, orderId, clientRequestId, status

MaxBuySellResponse

FieldKiểuMô tả
accountNostringSố tài khoản
symbolstringMã chứng khoán (viết hoa)
maxBuyQuantitynumberKhối lượng mua tối đa
maxSellQuantitynumberKhối lượng bán tối đa
marginRatiostring?Tỷ lệ margin, giữ nguyên chuỗi server gửi
purchasingPowernumber?Sức mua

Tài khoản phái sinh chỉ nhận hai khối lượng. Với tài khoản đó marginRatio và purchasingPower là undefined, không phải 0. purchasePower (chuỗi, "" khi không có) vẫn đọc được nhưng deprecated: dùng purchasingPower.

Lệnh hàng loạt (Batch Orders)

Kiểu dữ liệu của placeBatchOrders và cancelBatchOrders. Cách dùng, chữ ký, idempotency và retry nằm ở API Services, mục 5.6. Giới hạn số lệnh mỗi lô xem Cấu hình và lỗi xem Xử lý lỗi.

BatchPlaceOrderItem

Một lệnh của placeBatchOrders, cùng tham số với placeOrder.

FieldKiểuMô tả
accountNostringSố tài khoản
symbolstringMã chứng khoán
sideOrderSideMua/Bán
quantitynumberKhối lượng
pricePriceLike | null?Giá (number hoặc chuỗi thập phân). Có thể bỏ qua với loại lệnh giá thị trường (ATO/ATC/MP...)
orderTypeOrderTypeLoại lệnh
clientRequestIdstring?Khóa chống trùng, tối đa 20 ký tự. SDK tự sinh nếu bỏ qua

BatchCancelOrderItem

Một lệnh của cancelBatchOrders: accountNo kèm đúng một trong hai id.

FieldKiểuMô tả
accountNostringSố tài khoản
orderIdstring?Order ID cần hủy
clientRequestIdstring?Client request ID của lệnh cần hủy

BatchOrderResponse

FieldKiểuMô tả
batchRequestIdstringId của lô (SDK tự sinh)
resultsBatchOrderResult[]Kết quả từng lệnh, đúng thứ tự request. Thiếu hoặc không phải mảng thì là danh sách rỗng

BatchOrderResult

FieldKiểuMô tả
clientRequestIdstringClient request ID của lệnh
orderIdstringOrder ID ("" nếu không có)
statusOrderStatus | stringTrạng thái lệnh
successbooleanLệnh này có được nhận hay không
errorCodestringMã lỗi ("" nếu không có)
errorMessagestringThông báo lỗi ("" nếu không có)
clientCancelIdstringId hủy ("" nếu không có)

Chưa xác nhận

Hành vi thật của response khi một phần lệnh trong lô lỗi chưa được xác nhận từ mã nguồn. Theo mô tả trong SDK, server chấp nhận hoặc từ chối cả lô, nhưng response luôn có một BatchOrderResult cho mỗi lệnh. Hãy duyệt results và kiểm tra success, errorCode, errorMessage của từng lệnh thay vì coi cả lô là thành công. Giới hạn số lệnh cũng chưa thống nhất (SDK mặc định 20, tài liệu API reference nêu tối đa 50): xem Cấu hình.

Lệnh điều kiện (FCO)

FCOPlaceResponse

Kết quả đặt lệnh điều kiện — fcoId

FCOCancelResponse

Kết quả huỷ lệnh điều kiện — fcoId

FCOListResponse

Danh sách lệnh điều kiện (phân trang).

FieldKiểuMô tả
pageIndexnumberTrang hiện tại
pageSizenumberKích thước trang
itemsCountnumberTổng số bản ghi
pagesCountnumberTổng số trang
fcoListFCOInfo[]Danh sách lệnh FCO

FCOInfo

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

FieldKiểuMô tả
fcoIdstringMã lệnh FCO
clientIdstringUsername / Client ID
accountNostringSố tài khoản
quantitynumberKhối lượng đặt
pricestringGiá đặt, hoặc một từ như "MP" với lệnh giá thị trường
priceSlipnumber?Độ trượt giá
symbolstringMã chứng khoán
typeFCOType?Loại lệnh điều kiện
orderTypeOrderType | string?Loại lệnh được đẩy vào sổ khi điều kiện kích hoạt
fromDatestringNgày bắt đầu hiệu lực
toDatestringNgày kết thúc hiệu lực
matchedQuantitynumberKhối lượng đã khớp
isPlaceOrderbooleanĐã đẩy lệnh vào sổ hay chưa
statusFCOStatus?Trạng thái lệnh FCO
detailstringChi tiết trạng thái
paramsFCOParams?Tham số kích hoạt lệnh FCO

FCOParams

Tham số kích hoạt của lệnh điều kiện.

FieldKiểuMô tả
stopPricenumber?Giá dừng / giá kích hoạt
sideOrderSide?Chiều lệnh (Mua/Bán)
activePricenumber?Giá kích hoạt (Trailing Stop)
trailingAmountnumber?Khoảng bám sát (Trailing Amount)
tpActivePricenumber?Giá kích hoạt chốt lời (Take Profit)
slActivePricenumber?Giá kích hoạt cắt lỗ (Stop Loss)
tpPricestring?Giá chốt lời
slPricestring?Giá cắt lỗ
tpSlipnumber?Trượt giá chốt lời
slSlipnumber?Trượt giá cắt lỗ
operatorFCOOperator?Toán tử so sánh kích hoạt

FCOOrderBookResponse

Nhật ký khớp lệnh FCO (phân trang).

FieldKiểuMô tả
pageIndexnumberTrang hiện tại
pageSizenumberKích thước trang
itemsCountnumberTổng số bản ghi
pagesCountnumberTổng số trang
orderBookFCOOrder[]Danh sách nhật ký lệnh FCO

FCOOrder

Nhật ký giao dịch / thực thi của lệnh FCO.

FieldKiểuMô tả
fcoIdstringMã lệnh FCO gốc
accountNostringSố tài khoản
quantitynumberKhối lượng
pricestringGiá đặt
symbolstringMã chứng khoán
sideOrderSide?Chiều lệnh
orderTypeOrderType?Loại lệnh con
isMainOrderbooleanLà lệnh chính
isAttachedOrderbooleanLà 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
matchedQuantitynumberKhối lượng đã khớp
osQuantitynumberKhối lượng chờ khớp
avgPricenumberGiá khớp trung bình
statusOrderStatus?Trạng thái lệnh con
detailstringChi tiết

FCOStatusHistoryItem

Một lần chuyển trạng thái của lệnh FCO, trả về bởi getFcoStatusHistory(fcoId) (xem API Services, mục 5.5). Nhận danh sách rỗng khi server trả 204.

FieldKiểuMô tả
statestringTrạng thái
timestringThời điểm chuyển trạng thái
codestring?Mã (nếu server gửi)
detailstringChi tiết

Message Streaming

DataMessage

Dữ liệu thị trường nhận qua callback onData. DataMessage là union của các kiểu sau (frame có topic mà SDK chưa có model sẽ đến dưới dạng object thô):

  • TradeMessage — khớp lệnh của một mã (type: 'trade')
  • IndexTickMessage — tick của chính chỉ số (xem bên dưới)
  • IntervalMessage — nến 1 phút / 5 phút (xem bên dưới)
  • QuoteMessage — mua/bán (type: 'quote')
  • ForeignRoomMessage — room ngoại (type: 'room')
  • MarketFlagMessage — cờ phiên thị trường (ATO, LO, ATC...), topic market.flag
  • IndexSummaryMessage — tổng hợp chỉ số (xem bên dưới)
  • MarketDataMessage — giá trần / sàn / tham chiếu của một mã, topic market.<symbol>
  • MarketStatusMessage — trạng thái thị trường (market, status, tradingDate)
  • PutMessage — thoả thuận (type: 'put')
  • OddLotMessage — lô lẻ (type: 'oddlot')

TradingMessage

Sự kiện giao dịch nhận qua callback onTrading. TradingMessage là union của:

  • OrderStatusMessage — cập nhật trạng thái lệnh thường (type: 'orderEvent')
  • OrderMatchMessage — sự kiện khớp lệnh (type: 'orderMatchEvent')
  • PortfolioMessage — thay đổi danh mục, chỉ tài khoản phái sinh (type: 'clientPortfolioEvent')
  • FCOOrderUpdateMessage — cập nhật trạng thái lệnh điều kiện FCO (eventType: 'fcoEvent')

Event type không biết sẽ đến dưới dạng object thô.

FCOOrderUpdateMessage

Cập nhật trạng thái lệnh điều kiện FCO (streaming, nhận qua onTrading). Message này không có type: 'fcoOrderEvent': nhận diện bằng eventType (ví dụ "fcoEvent") hoặc bằng fcoId.

FieldKiểuMô tả
fcoIdstringMã lệnh FCO
processStatusFCOStatus?Trạng thái xử lý lệnh FCO (INIT, WAIT, WC, TER, ...)
matchedQuantitynumberKhối lượng đã khớp
isPlaceOrderbooleanĐã đẩy lệnh vào sổ hay chưa
symbolstringMã chứng khoán
quantitynumberKhố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, ngắt kết nối
usernamestringUsername đặt lệnh
eventTypestringLoại sự kiện (ví dụ "fcoEvent")
typeFCOType | string?Loại lệnh điều kiện (GTD, STOP, ...)

HeartbeatMessage

method, channel, status, message

ConnectionEvent

Sự kiện kết nối truyền vào onConnection của Stream (xem API Services, mục 6.8). Import từ package chính.

FieldKiểuMô tả
state'connected' | 'reconnected' | 'disconnected' | 'failed'Trạng thái kết nối
reconnectCountnumberSố lần đã reconnect
errorError?Lỗi kèm theo (nếu có)

Dữ liệu chỉ số real-time

Kiểu dữ liệu của các topic chỉ số (trade.index.<code> và indexsummary.<code>). Cách subscribe, quy tắc mã chỉ số và interval nằm ở API Services, mục 6.7. Các kiểu này đến qua onData (riêng IndexSummaryMessage còn nhận được bằng onIndexSummary).

IndexTickMessage

Tick của chính chỉ số (không phải cổ phiếu thành phần), từ subscribeIndexTrade.

Ý nghĩa field chưa được xác nhận

Server chỉ gửi tên viết tắt. Tên field của SDK bám theo chữ viết tắt, nhưng ý nghĩa được suy ra từ chữ viết tắt, chưa xác nhận trên frame thật. Nếu cần chắc chắn, đối chiếu với raw (object data nguyên bản) trước khi dùng cho logic quan trọng.

FieldKiểuKey gốcMô tả (suy ra từ chữ viết tắt)
typeDataTypeLoại message ('trade')
symbolstringsMã chỉ số, ví dụ "VN30"
boardstringbSàn
statusstringssTrạng thái
tradingTimestringtThời gian giao dịch
valuenumber?vGiá trị chỉ số
changenumber?cThay đổi
changePercentnumber?crThay đổi (%)
advancesnumber?advSố mã tăng
declinesnumber?decSố mã giảm
noChangenumber?ncSố mã không đổi
ceilingsnumber?ceSố mã trần
floorsnumber?flSố mã sàn
totalMatchValuenumber?tmvTổng giá trị khớp
totalMatchQuantitynumber?tmqTổng khối lượng khớp
totalPutValuenumber?tvpTổng giá trị thoả thuận
totalPutQuantitynumber?tqpTổng khối lượng thoả thuận
totalQuantitynumber?tqTổng khối lượng
totalValuenumber?tvTổng giá trị
rawRecord<string, unknown>Object data của frame, giữ nguyên

Field số là undefined (không phải 0) khi server không gửi. Trong các kiểu DataMessage, chỉ IndexTickMessage có field raw, nên 'raw' in msg là cách nhận diện đơn giản (xem ví dụ ở mục 6.7).

IntervalMessage

Nến 1 phút / 5 phút, nhận khi subscribe có interval là 1m hoặc 5m.

FieldKiểuKey gốcMô tả
typeDataTypeLoại message ('trade')
intervalTimestringstThời điểm bắt đầu của nến
tradingTimestringtThời gian giao dịch
symbolstringsMã chứng khoán hoặc mã chỉ số
opennumberoGiá mở
highnumberhGiá cao
lownumberlGiá thấp
closenumbercGiá đóng
volumenumbervKhối lượng

IndexSummaryMessage

Bản tổng hợp của một chỉ số, từ indexsummary.<code>.

FieldKiểuMô tả
indexstringMã chỉ số lấy từ topic, viết hoa ("" nếu không rõ)
dataRecord<string, unknown>Payload server gửi, giữ nguyên

Tài liệu public của API không liệt kê field của payload này, nên SDK không đoán và không có field kiểu sẵn. Đọc giá trị bằng indexSummaryGet(message, keys, defaultValue?): hàm trả giá trị của key đầu tiên trong keys có mặt trong message.data, hoặc defaultValue nếu không có key nào.

import { indexSummaryGet } from '@ssi.developer/ssi-sdk';

s.onIndexSummary = (msg) => {
  // 'someField' là ví dụ: thay bằng key bạn thấy trong msg.data
  const value = indexSummaryGet<number>(msg, ['someField'], 0);
  console.log(`${msg.index}: ${value}`);
};

Trading WebSocket

Các kiểu dưới đây import từ package chính @ssi.developer/ssi-sdk. Cách dùng xem API Services, mục 7.

TradingWSResponse

Kết quả của mỗi lệnh gửi qua Trading WebSocket.

FieldKiểuMô tả
idstringId của request
methodstringTên command
statusnumberStatus của response (mặc định 200 nếu frame không có)
resultunknownNội dung kết quả, giữ nguyên như server gửi
rateLimitRecord<string, unknown>Thông tin rate limit server gửi kèm ({} nếu không có)
receivedTimenumber?Thời điểm server nhận, nếu frame có

Frame lỗi không trả TradingWSResponse mà ném TradingWSError (xem Xử lý lỗi).

FcoParamsKind, FcoListOptions, OrderBookQuery

Kiểu tham số của các command FCO và sổ lệnh trên Trading WebSocket.

KiểuMô tả
FcoParamsKindUnion có kind để chọn loại FCO: 'gtd', 'stop', 'trailingStop', 'oco', 'bullBear', kèm params tương ứng
FcoListOptionsBộ lọc danh sách FCO, field đều tùy chọn: fcoId, type, processStatus, symbol, side, fromDate, toDate, pageIndex, pageSize
OrderBookQueryBộ lọc sổ lệnh, field đều tùy chọn: fromDate, toDate, symbol, orderStatus, pageIndex, pageSize

Trên trang này