vnstock-js

vnstock-js

Tài LiệuVí DụBài ViếtTài Chính
k

© Copyright 2026

Giới Thiệu
Danh Sách Hàm
Cài Đặt
Kiến Trúc
Hướng Dẫn Sử Dụng Nhanh
CLI
Lịch Sử Phiên Bản
Câu Hỏi Thường Gặp
Cơ Bản
Giao Dịch - Trading
Báo Giá - Quote
Niêm Yết - Listing
Tài Chính - Financials
Chỉ Báo - Indicators
AI Contextv1.4Mới
MCP Serverv1.4Mới
Watchlistv1.4Mới
Sàng Lọc - Screening
Tìm Kiếm - Search
Lịch Giao Dịch - Calendar
Realtime - Thời Gian Thực
QuoteHistory
PriceBoardItem
TopStock
CompanyProfile
ScreenResult
RealtimeQuote
ExchangeRate
  1. Tài Liệu
  2. Key Features
  3. Advanced
  4. Watchlist

Watchlist - Danh Sách Mã Yêu Thích

Quản lý nhiều watchlist, persist ~/.vnstock-js/watchlist.json, fetch quotes batch

Từ v1.4, vnstock-js có module watchlist đơn giản để track nhiều danh sách mã (banks, tech, watchlist riêng...) — persist local trên Node, browser opt-in adapter.

import { watchlist } from 'vnstock-js';

CRUD cơ bản

// Tạo watchlist
await watchlist.create('banks');

// Thêm 1 mã hoặc nhiều mã
await watchlist.add('banks', 'VCB');
await watchlist.add('banks', ['TCB', 'MBB', 'ACB']);

// Liệt kê
const symbols = await watchlist.list('banks');
// → ['VCB', 'TCB', 'MBB', 'ACB']

const allNames = await watchlist.listAll();
// → ['banks', 'tech', ...]

// Xoá mã
await watchlist.remove('banks', 'ACB');

// Xoá watchlist
await watchlist.delete('banks');

// Check tồn tại
const exists = await watchlist.has('banks');

Auto-uppercase + dedup

await watchlist.add('mixed', ['vcb', 'TCB', 'vcb', 'tcb']);
await watchlist.list('mixed');
// → ['VCB', 'TCB']  (dedup, uppercase)

Persist

Node: ~/.vnstock-js/watchlist.json, atomic rename khi write.

{
  "banks": { "symbols": ["VCB","TCB","MBB"], "createdAt": "2026-05-14" },
  "tech":  { "symbols": ["FPT","CMG"],       "createdAt": "2026-05-14" }
}

Browser: default no-op + warn console. Inject custom adapter để dùng localStorage / IndexedDB:

import { Watchlist, WatchlistStorage } from 'vnstock-js';

const localStorageAdapter: WatchlistStorage = {
  async read() {
    return localStorage.getItem('vnstock_watchlist');
  },
  async write(json) {
    localStorage.setItem('vnstock_watchlist', json);
  },
};

const wl = new Watchlist(localStorageAdapter);
await wl.add('myList', 'VCB');

Fetch quotes batch

Combine với easy-mode compareSymbols để fetch giá toàn watchlist:

import { watchlist, compareSymbols } from 'vnstock-js';

const symbols = await watchlist.list('banks');
const quotes = await compareSymbols(symbols);
// → [{ symbol: 'VCB', price: 59.3, change: 0.17, ... }, ...]

Note:

Watchlist là local-only — không sync cloud. Nếu cần multi-device, build adapter trên cloud DB của bạn.

Note:

2 process cùng ghi watchlist file có thể race (last-wins). Nếu chạy nhiều agent song song, tự lock hoặc dùng 1 writer duy nhất.

PreviousMCP Server
NextSàng Lọc - Screening

Nội Dung

CRUD cơ bảnAuto-uppercase + dedupPersistFetch quotes batch