vnstock-js

vnstock-js

Tài LiệuDùng Với AIVí DụBài ViếtDemo
k

© Copyright 2026

Giới Thiệu
Cài Đặt
Hướng Dẫn Sử Dụng Nhanh
Quy Ước & Đơn Vịv2.0
Dùng Với AIv2.0
Kiến Trúc
Danh Sách Hàm
Nâng Cấp Từ v1v2.0
CLI
Lịch Sử Phiên Bản
Câu Hỏi Thường Gặp
Cơ Bản
Bảng Giá - Prices
Lịch Sử Giá - History
Danh Mục Mã - Symbols
Tìm Kiếm - Search
Tài Chính - Financials
Thị Trường - Marketv1.5
Sàng Lọc - Screening
Chỉ Báo & Pattern
AI Contextv1.4
Danh Mục Đầu Tưv2.0
Theo Dõi & Cảnh Báov2.0
Backtest & Phiên Tương Tựv2.0
Trình Duyệt & Proxyv2.0
Lịch Giao Dịch - Calendar
Vàng, Tỷ Giá, Tin Tức
MCP Serverv1.4
Watchlistv1.4
Bar
Quote
Tick
TopMover
CompanyProfile
ScreenRow
GoldQuote & FxRate
  1. Tài Liệu
  2. Key Features
  3. Advanced
  4. Market

Thị Trường - Market

Tổng quan thị trường, độ rộng, thanh khoản, khối ngoại và lịch sử khối ngoại, thanh khoản trong phiên.

Xem .md

Mọi số tiền tính bằng đồng, chỉ số tính bằng điểm. Sàn: HOSE (mặc định), HNX, UPCOM, ALL.

Tổng quan

import { vn } from "vnstock-js";

const m = await vn.market({ exchange: "HOSE" });
{
  "date": "2026-10-20",
  "index": { "symbol": "VNINDEX", "close": 1689.12, "change": -0.72, "changePercent": -0.043, "volume": 514718024 },
  "liquidity": { "index": "VNINDEX", "value": 11650231190150, "valuePrevious": 13354737798630, "changePercent": -12.763, "unit": "VND" },
  "breadth": { "exchange": "HOSE", "advancing": 184, "declining": 144, "unchanged": 55, "ceiling": 10, "floor": 5, "total": 383 },
  "foreign": { "exchange": "HOSE", "buyValue": 1682715999463, "sellValue": 1857911081930, "netValue": -175195082467, "topNetBuy": [], "topNetSell": [], "unit": "VND" }
}

Truyền asOf để lấy bối cảnh của một phiên đã qua (xu hướng, thanh khoản so với trung bình 20 phiên); độ rộng và khối ngoại khi đó là null vì nguồn chỉ có cho phiên hiện tại.

const past = await vn.market({ asOf: "2026-10-10" });
console.log(past.regime, past.notes);

Từng phần

const breadth = await vn.market.breadth({ exchange: "HNX" });
const liquidity = await vn.market.liquidity({ index: "VN30" });
const foreign = await vn.market.foreign({ exchange: "HOSE", top: 5 }); // phiên hiện tại, kèm top mua bán ròng
const context = await vn.market.context({ index: "VNINDEX" });         // cho LLM

Lịch sử khối ngoại

VCI chỉ cho xem khối ngoại của phiên hiện tại. Repo vnstock-js tự ghi mỗi ngày sau 15:30 vào data/foreign và gộp theo tháng; truyền range để đọc lại:

const fpt = await vn.stock("FPT").foreign("3mo");                 // mỗi phiên một dòng
const hose = await vn.market.foreign({ range: "1mo" });
const all = await vn.market.foreign({ range: { from: "2026-10-01" }, exchange: "ALL" });

const net = fpt.reduce((sum, d) => sum + d.netValue, 0);         // ròng cộng dồn, đồng

Note:

Dữ liệu chỉ có từ ngày bắt đầu ghi (năm 2026). Phiên trước đó không có trong kết quả, không phải số 0. Phiên đã ghi mà mã không có giao dịch khối ngoại thì trả số 0.

Thanh khoản trong phiên

const d = await vn.market.intraday({ exchange: "HOSE" });
console.log(d.liquidity.value, d.liquidity.changePercent, d.breadth.advancing, d.points.length);

points là thanh khoản luỹ kế theo từng phút của phiên hiện tại (phiên gần nhất khi đã đóng cửa), mỗi điểm kèm valuePrevious là luỹ kế của phiên trước tại cùng giờ. Giờ nghỉ trưa không có điểm nào; phiên ATC là một điểm lúc 14:45. Độ rộng là của bảng giá lúc gọi, không theo thời gian.

Sức khoẻ thị trường

const health = await vn.index("VNINDEX").health();
console.log(health.status, health.distributionCount);

Chấm sức khoẻ thị trường theo phương pháp của William O'Neil: đếm ngày phân phối trong 25 phiên và tìm ngày bùng nổ xác nhận sau một đáy.

PreviousTài Chính - Financials
NextSàng Lọc - Screening

Nội Dung

Tổng quanTừng phầnLịch sử khối ngoạiThanh khoản trong phiênSức khoẻ thị trường