Skip to main content
Tài liệu này hướng dẫn cách thiết lập kết nối đến DNSE WebSocket để nhận dữ liệu thị trường theo thời gian thực.

Thông tin kết nối chung

  • Base URL: wss://ws-openapi.dnse.com.vn
  • DNSE cung cấp sẵn bộ SDK đã phân tách theo từng loại dữ liệu để khách hàng có thể sẵn sử dụng. Chi tiết xem sample SDKs tại đây.
  • Định dạng dữ liệu trong SDKs:
    • msgpack: Tốc độ xử lý nhanh, tiết kiệm băng thông
    • json: Phổ biến và dễ đọc trong quá trình phát triển
  • Cơ chế kết nối:
    • Tất cả mã chứng khoán phải ở định dạng chữ in hoa. VD: ACB, HPG, 41I1G2000.
    • Một kết nối WebSocket có hiệu lực tối đa 8 giờ, WebSocket Server sẽ chủ động ngắt kết nối sau thời gian này.
    • Cơ chế để các clients duy trì kết nối ổn định tới WebSocket server DNSE:
      • WebSocket Server sẽ định kỳ gửi 1 PING message sau mỗi 3 phút.
      • Mỗi PING message được gửi từ WebSocket đều yêu cầu nhận PONG message phản hồi từ các client trong thời gian tối đa là 1 phút kể từ lúc Server gửi PING. Nếu quá thời hạn 1 phút này, Server sẽ chủ động ngắt kết nối với Client không đáp ứng.
      • Client được phép gửi PONG message ngay cả khi không nhận được PING từ Server, để chủ động duy trì kết nối. Cách này giúp client giữ kết nối trong các trường hợp PING message bị miss do network issue hoặc các gián đoạn tạm thời khác.

Tổng quan các kênh dữ liệu


Phân loại dữ liệu (Data Classification)

Để tối ưu hóa việc phát triển ứng dụng, khách hàng cần nắm rõ đặc tính và cơ chế truyền tải của từng kênh dữ liệu:
  • Real-time (Dữ liệu thời gian thực): Dữ liệu được hệ thống chủ động đẩy xuống (Push) ngay khi có sự kiện phát sinh. Cơ chế này đảm bảo độ trễ thấp nhất cho phía Client.
  • Periodic (Dữ liệu định kỳ): Dữ liệu chỉ xuất hiện hoặc được cập nhật vào các khoảng thời gian cố định hoặc theo từng giai đoạn (Phase) của phiên giao dịch.
  • Batch Data (Dữ liệu lô): Dữ liệu Snapshot được xử lý theo đợt lớn.
    • BOD (Beginning of Day): Dữ liệu khởi tạo trước giờ giao dịch (VD: Danh mục mã, Giá trần/sàn).
    • EOD (End of Day): Dữ liệu tổng hợp sau khi kết thúc ngày giao dịch (VD: Giá đóng cửa chính thức).

Các loại dữ liệu thị trường

Một số input dùng chung cho các channel:
  • board_id: Mã bảng giao dịch (VD: G1 – lô chẵn)
  • market_index: Tên chỉ số thị trường
  • tsc_prod_grp_id: Nhóm sản phẩm theo thị trường

Thông tin giao dịch chứng khoán (Security Definition)

Cung cấp thông tin về giá trần sàn tham chiếu và trạng thái của mã chứng khoán trong ngày giao dịch. Dữ liệu được hệ thống gửi hai lần vào lúc hệ thống kết thúc chạy dữ liệu cuối ngày (khoảng 8 giờ tối) và vào đầu ngày giao dịch hôm sau (khoảng 8 giờ sáng).

Channel

security_definition.{board_id}.{encoding}

Input

  • symbols: Mã hoặc danh sách mã chứng khoán.
  • board_id: Mã bảng giao dịch

Payload

Dữ liệu khớp lệnh (Trade & Trade Extra)

DNSE cung cấp dữ liệu khớp lệnh của một mã chứng khoán qua 2 Function khác nhau: Trade và Trade Extra. Trade Extra có thêm một số thông tin mà DNSE tự tổng hợp thêm (mua bán chủ động, giá khớp trung bình), nếu người dùng không có nhu cầu lấy các thông tin này thì có thể dùng function Trade đơn thuần để tối ưu hơn về tốc độ nhận dữ liệu.

Định dạng Channel

tick.{board_id}.{encoding}
tick_extra.{board_id}.{encoding}

Input

  • symbols: Mã hoặc danh sách mã chứng khoán.
  • board_id: Mã bảng giao dịch

Payload

VD Payload nhận được Function Trade Extra

Độ sâu thị trường (Quotes)

Cung cấp thông tin giá chào mua và chào bán tốt nhất của mã chứng khoán tại bảng giao dịch cụ thể, cập nhật theo thời gian thực trong phiên giao dịch.
  • Sàn HOSE hỗ trợ 3 mức giá.
  • Sàn HNX, UPCOM hỗ trợ 10 mức giá.

Channel

top_price.{board_id}.{encoding}

Input

  • symbols: Mã hoặc danh sách mã chứng khoán.
  • board_id: Mã bảng giao dịch

Payload

OHLC

OHLC cung cấp thông tin nến (open, high, low, close, volume) theo khung thời gian thực dưới dạng dữ liệu nến đang hình thành và được cập nhật liên tục theo các giao dịch phát sinh. Áp dụng cho Cổ phiếu (stock), Phái sinh (derivative) và Chỉ số thị trường (index) với nhiều khung thời gian (resolution).

Channel

ohlc.{resolution}.{encoding}

Input

  • symbols: Mã hoặc danh sách mã chứng khoán hay chỉ số thị trường
    • Lưu ý: Đối với phái sinh, truyền lên symbolType (VD: VN30F1M) thay vì symbol (VD: 41I1G4000).
  • resolution: Khung thời gian của nến (VD: 1, 3, 5, 15, 30, 1H, 1D, 1W)

Payload

Cổ phiếu
Phái sinh
Chỉ số index

OHLC đóng nến (OHLC Closed)

Cung cấp dữ liệu nến đã đóng theo từng khung thời gian (resolution). Dữ liệu chỉ gửi khi kết thúc mỗi khung thời gian và không thay đổi sau đó.

Channel

ohlc_closed.{resolution}.{encoding}

Input

  • symbols: Mã hoặc danh sách mã chứng khoán hay chỉ số thị trường
    • Lưu ý: Đối với phái sinh, truyền lên symbolType (VD: VN30F1M) thay vì symbol (VD: 41I1G4000).
  • resolution: Khung thời gian của nến (VD: 1, 3, 5, 15, 30, 1H, 1D, 1W)

Payload

Giá khớp dự kiến (Expected Price)

Cung cấp thông tin giá đóng cửa, giá khớp dự kiến và khối lượng khớp dự kiến của mã chứng khoán trong các phiên giao dịch khớp lệnh định kỳ ATO và ATC.

Channel

expected_price.{board_id}.{encoding}

Input

  • symbols: Mã hoặc danh sách mã chứng khoán.
  • board_id: Mã bảng giao dịch

Payload

Chỉ số thị trường (Market Index)

Cung cấp thông tin chỉ số thị trường bao gồm giá trị chỉ số, mức thay đổi, độ rộng thị trường (số mã tăng/giảm/đi ngang) và thanh khoản. Dữ liệu được cập nhật liên tục trong phiên giao dịch.

Channel

market_index.{market_index}.{encoding}

Input

  • market_index: Tên chỉ số thị trường

Payload

Giao dịch nhà đầu tư nước ngoài (Foreign Investor)

Cung cấp dữ liệu giao dịch của nhà đầu tư nước ngoài theo từng mã chứng khoán, bao gồm khối lượng và giá trị mua/bán, tổng lũy kế trong ngày và room còn lại. Dữ liệu được cập nhật trong phiên giao dịch khi có thay đổi.

Channel

foreign.{board_id}.{encoding}

Input

  • symbol: Mã hoặc danh sách mã chứng khoán.
  • board_id: Mã bảng giao dịch (VD: G1 – lô chẵn).

Payload

VN30 dự tính (Estimated VN30)

Cung cấp thông tin chỉ số VN30 dự tính trong phiên giao dịch, bao gồm giá trị chỉ số dự tính, mức tăng/giảm so với giá tham chiếu và số lượng mã tăng, giảm, đứng giá. Dữ liệu được cập nhật theo thời gian thực khi có thay đổi.

Channel

estimated_market_index.{market_index}.{encoding}

Input

  • market_index: Tên chỉ số thị trường. Hiện tại chỉ hỗ trợ VN30.

Payload

Thông tin phiên (Session)

Cung cấp thông tin phiên giao dịch của các sàn theo bảng giao dịch và nhóm sản phẩm thị trường.

Channel

session.{product_group_id}.{board_id}.{encoding}

Input

  • tsc_prod_grp_id: Mã nhóm sản phẩm thị trường.
  • board_id: Mã bảng giao dịch (VD: G1 – lô chẵn).

Payload

Top cổ phiếu ảnh hưởng chỉ số (Market Index Influence)

Cung cấp dữ liệu thống kê top các cổ phiếu có mức độ ảnh hưởng (đóng góp tăng hoặc giảm điểm số) tới các chỉ số thị trường chính (VNINDEX, VN30, VN100, HNX, HNX30) theo từng khung thời gian xác định (1 ngày, 7 ngày, 14 ngày, 30 ngày).

Channel

market_index_influence.{market_index}.{resolution}.{encoding}

Input

  • market_index: Tên chỉ số thị trường, hỗ trợ: VNINDEX, VN30, VN100, HNX, HNX30
  • resolution: Khung thời gian thống kê tính theo số ngày
    • 1: Thống kê trong ngày giao dịch hiện tại (1 ngày)
    • 7: Thống kê xu hướng tích lũy trong 7 ngày
    • 14: Thống kê xu hướng tích lũy trong 14 ngày
    • 30: Thống kê xu hướng tích lũy trong 30 ngày
    Lưu ý: VNINDEX & HNX chỉ hỗ trợ resolution = 1

Payload