WebSocket

Sub/Unsub Market Data

Theo dõi và hủy theo dõi dữ liệu thị trường qua WebSocket FastConnect.

Tổng quan

Kênh DATA trả về 6 nhóm thông tin thị trường:

TopicMô tả
tradeThông tin khớp lệnh
quoteThông tin bid/ask
roomThông tin room ngoại
putKhớp lệnh thỏa thuận
oddlotGiao dịch lô lẻ
marketThông tin đầu ngày và cờ phiên

Topic pattern

trade.[index/exchange/symbol-symbol/*]@[tick/1m/5m]
quote.[index/exchange/symbol-symbol/*]@[tick/1m/5m]
room.[index/exchange/symbol-symbol/*]@[tick/1m/5m]
put.[index/exchange/symbol-symbol/*]@[tick/1m/5m]
oddlot.[index/exchange/symbol-symbol/*]@[tick/1m/5m]
market.[index/exchange/symbol-symbol/*]
  • Nhiều mã nối bằng dấu - (ví dụ ACB-SSI-GVR-KDH); * cho toàn bộ mã trong phạm vi quyền.
  • Không truyền @interval thì mặc định là tick. Riêng topic market không có interval.

Lưu ý: interval hợp lệ hiện tại là tick, 1m, 5m (không có 3m).

Subscribe market data

{
  "method": "SUBSCRIBE",
  "channel": "DATA",
  "topics": [
    "trade.SSI",
    "trade.ACB-SSI-GVR-KDH",
    "trade.vn30",
    "trade.hose"
  ]
}
  • trade.SSI — đăng ký nhận message khớp của một mã SSI
  • trade.ACB-SSI-GVR-KDH — đăng ký nhận message khớp của nhiều mã ACB, SSI, GVR, KDH
  • trade.vn30 — đăng ký nhận message khớp của toàn bộ các mã thuộc rổ VN30
  • trade.hose — đăng ký nhận message khớp của toàn bộ các mã thuộc sàn HOSE

Cú pháp tương tự áp dụng cho quote, room, put, oddlot, market — chỉ thay tiền tố topic (ví dụ quote.SSI, room.vn30, market.hose).

Unsubscribe market data

{
  "method": "UNSUBSCRIBE",
  "channel": "DATA",
  "topics": ["trade.SSI", "quote.SSI"]
}

I. Trade — thông tin khớp lệnh

FieldNameTypeDescription
ssymbolStringMã chứng khoán
ttradingTimeStringYYYY/MM/DD HH:mi:ss
ppriceStringGiá khớp
qquantityStringKhối lượng khớp
aavgPriceStringGiá khớp trung bình
sisideStringB: Buy Up (mua chủ động) / S: Sell Down (bán chủ động)
oopenPriceStringGiá mở cửa
hhighPriceStringGiá cao nhất
llowPriceStringGiá thấp nhất
vtotalVolStringTổng khối lượng khớp trong ngày

Sample output:

{
  "s": "SSI",
  "t": "2026/07/29 09:15:32",
  "p": "45.50",
  "q": "1000",
  "a": "45.35",
  "si": "B",
  "o": "45.00",
  "h": "45.80",
  "l": "44.90",
  "v": "1250000"
}

II. Room — thông tin room ngoại

FieldNameTypeDescription
ssymbolStringMã chứng khoán
ttradingtimeStringYYYY/MM/DD HH:mi:ss
trtotalRoomStringTổng room ngoại
crcurrentRoomStringRoom ngoại còn lại
bqbuyQuantityStringKhối lượng mua của khối ngoại
bvbuyValueStringGiá trị mua của khối ngoại
sqsellQuantityStringKhối lượng bán của khối ngoại
svsellValueStringGiá trị bán của khối ngoại

Sample output:

{
  "s": "SSI",
  "t": "2026/07/29 09:15:32",
  "tr": "1500000",
  "cr": "980000",
  "bq": "5000",
  "bv": "227500000",
  "sq": "3000",
  "sv": "136500000"
}

III. Quote — thông tin bid/ask

FieldTypeDescription
sStringMã chứng khoán
tStringtradingtime, YYYY/MM/DD HH:mi:ss
bidsList<String[2]>Danh sách mức giá mua [price, quantity]. Bản nâng cấp sau sẽ chỉ trả ra các giá trị thay đổi.
asksList<String[2]>Danh sách mức giá bán [price, quantity]. Bản nâng cấp sau sẽ chỉ trả ra các giá trị thay đổi.

Sample output:

{
  "s": "SSI",
  "t": "2026/07/29 09:15:32",
  "bids": [
    ["45.45", "3200"],
    ["45.40", "1500"],
    ["45.35", "4200"],
    ["45.30", "2100"],
    ["45.25", "3300"]
  ],
  "asks": [
    ["45.50", "2800"],
    ["45.55", "1900"],
    ["45.60", "3600"],
    ["45.65", "2200"],
    ["45.70", "4100"]
  ]
}

IV. Put — khớp lệnh thỏa thuận

FieldNameTypeDescription
ssymbolStringMã chứng khoán
ttradingtimeStringYYYY/MM/DD HH:mi:ss
ppriceStringGiá khớp thỏa thuận
qquantityStringKhối lượng khớp thỏa thuận
tqTotalQuantityStringTổng khối lượng thỏa thuận trong ngày
tvTotalValueStringTổng giá trị thỏa thuận trong ngày

Sample output:

{
  "s": "SSI",
  "t": "2026/07/29 10:05:12",
  "p": "45.00",
  "q": "50000",
  "tq": "350000",
  "tv": "15750000000"
}

V. Oddlot — giao dịch lô lẻ

FieldNameTypeDescription
ssymbolStringMã chứng khoán
ttradingtimeStringYYYY/MM/DD HH:mi:ss
ppriceStringGiá khớp lô lẻ
qquantityStringKhối lượng khớp lô lẻ
bidsList<String[2]>Danh sách mức giá mua lô lẻ [price, quantity]
asksList<String[2]>Danh sách mức giá bán lô lẻ [price, quantity]

Sample output:

{
  "s": "SSI",
  "t": "2026/07/29 09:16:05",
  "p": "45.50",
  "q": "80",
  "bids": [
    ["45.45", "50"],
    ["45.40", "30"]
  ],
  "asks": [
    ["45.55", "40"],
    ["45.60", "20"]
  ]
}

VI. Market — thông tin đầu ngày và phiên

Cú pháp subscribe không có interval: market.[index/exchange/symbol-symbol/*].

Market streaming data:

FieldNameTypeDescription
ssymbolStringMã chứng khoán
bboardStringHOSE, HNX, UPCOM
ttradingDateStringYYYY/MM/DD
ceceilingPriceStringGiá trần
flfloorPriceStringGiá sàn
refrefPriceStringGiá tham chiếu

Sample output:

{
  "s": "SSI",
  "b": "HOSE",
  "t": "2026/07/29",
  "ce": "48.50",
  "fl": "42.10",
  "ref": "45.30"
}

Market flag (message cờ phiên):

FieldNameTypeDescription
bboardStringHOSE, HNX, UPCOM, DERIVATIVES
ttradingTimeStringYYYY/MM/DD HH:mm:ss
fflagStringCờ phiên: ATO, LO, ATC, v.v.

Sample output:

{
  "b": "HOSE",
  "t": "2026/07/29 09:00:00",
  "f": "ATO"
}

Tham khảo thêm

Trên trang này