Vnstock Logo

Thống kê giá lịch sử

Cập nhật lần cuối:

Thảo luận

Chứng khoán Việt Nam

Gợi ý

Các hàm tra cứu thông tin giá lịch sử tại Vnstock sử dụng dữ liệu trực tiếp từ dữ liệu công khai của công ty chứng khoán cho thị trường Việt Nam. Dữ liệu trả về là dữ liệu thời gian thực trong giờ giao dịch. Dữ liệu trả về dữ liệu của ngày giao dịch gần nhất (thứ 6 nếu không rơi vào ngày lễ) nếu truy xuất dữ liệu vào cuối tuần hoặc đầu giờ ngày thứ 2. Mô tả dữ liệu trả về dưới đây phản ánh dữ liệu trả về từ nguồn dữ liệu mặc định `VCI`.

Hiện tại bạn có thể lựa chọn nguồn dữ liệu VCI hoặc TCBS để truy xuất thông tin giá lịch sử và dữ liệu khớp lệnh mã chứng khoán (cổ phiếu, hợp đồng tương lai, chứng quyền, trái phiếu) bất kỳ. Ưu tiên sử dụng nguồn VCI để đảm bảo độ phủ dữ liệu các lớp tài sản chứng khoán nhiều nhất. Thông tin nguồn dữ liệu được cài đặt khi khởi tạo đối tượng python trước khi gọi các hàm lấy thông tin từng loại báo cáo cụ thể hoặc chỉ số tài chính.

from vnstock import Vnstock
stock = Vnstock().stock(symbol='VCI', source='VCI')

Danh sách các loại chứng khoán được hỗ trợ:

  • Cổ phiếu: xem tại mục Liệt kê tất cả mã cổ phiếu
  • Chỉ số: VNINDEX, HNXINDEX, UPCOMINDEX, VN30, HNX30
  • Hợp đồng tương lai: Chấp nhận cả hai kiểu nhập tên làVN30F1MVN30F2411
  • Chứng quyền: CFPT2314
  • Trái phiếu niêm yết: CII424002 (hiện tại chỉ nguồn VCI hỗ trợ)
  • Chứng chỉ quỹ - ETF: Tra cứu như với mã cổ phiếu, ví dụ E1VFVN30

Chi tiết các mã chứng khoán thuộc từng loại kể trên có thể được tra cứu tại mục Danh sách niêm yết - Liệt kê CP theo phân nhóm

Giá lịch sử

Gợi ý

Dữ liệu giá lịch sử thể hiện lịch sử giá giao dịch (đã điều chỉnh) của mã chứng khoán bất kỳ. Đây là dữ liệu được sử dụng để biểu diễn đồ thị kỹ thuật với định dạng tiêu chuẩn OHLCVT (Open, High, Low, Close, Volume, Time). Tại Việt Nam, dữ liệu này được biểu diễn thông qua thư viện đồ thị TradingView Advanced Chart (hoặc Trading Platform với một số ít đơn vị sử dụng) và hiển thị trên website giao dịch của công ty chứng khoán.

Gọi hàm

stock.quote.history(start='2020-01-01', end='2024-05-25')

Tham số

  • symbol (không bắt buộc): nhập mã chứng khoán cần tra cứu, chấp nhận mã cổ phiếu, hợp đồng tương lai, chứng quyền, chỉ số, trái phiếu. Nếu không sử dụng tham số này thì thông tin mã chứng khoán được kế thừa từ câu lệnh khởi tạo class, ví dụ stock = Vnstock().stock(symbol='VCI', source='VCI'). Nếu khai báo mã chứng khoán mới thì thuộc tính symbol của đối tượng vnstock sẽ được cập nhật theo mã này. Không khuyến khích sử dụng tham số này vì dữ liệu trả vì đôi khi bạn không phân biệt được đang lấy dữ liệu từ mã nào, cần phải kiểm tra lại thuộc tính name như dưới đây để xác nhận.
  • start: Ngày kết thúc của truy vấn dữ liệu lịch sử. Định dạng YYYY-mm-dd
  • end: Ngày kết thúc của truy vấn dữ liệu lịch sử. Định dạng YYYY-mm-dd
  • interval: Khung thời gian lấy mẫu dữ liệu. Mặc định là 1D cho phép trả về dữ liệu lịch sử theo ngày. Các giá trị khác bao gồm:
    • 1m: 1 phút
    • 5m: 5 phút
    • 15m: 15 phút
    • 30m: 30 phút
    • 1H: 1 giờ
    • 1W: 1 tuần
    • 1M: 1 tháng
  • to_df: Cho phép kết quả truy vấn trả về là pandas DataFrame hay JSON. Mặc định là True trả về DataFrame, đặt là False nếu muốn nhận kết quả dưới dạng JSON.

Dữ liệu mẫu:

>>> stock.quote.history(start='2020-01-01', end='2024-05-25')

           time   open   high    low  close   volume
0    2020-01-02   9.35   9.35   9.22   9.35    18320
1    2020-01-03   9.35   9.35   9.19   9.35     2450
2    2020-01-06   9.03   9.45   9.03   9.22    22760
3    2020-01-07   9.48   9.48   9.22   9.22    18320
4    2020-01-08   9.03   9.22   9.03   9.22     2640
...         ...    ...    ...    ...    ...      ...
1090 2024-05-20  49.60  50.80  49.35  50.20  9166100
1091 2024-05-21  50.20  50.80  49.60  50.80  5080200
1092 2024-05-22  51.00  51.80  49.90  50.00  8228600
1093 2024-05-23  49.80  50.10  48.10  50.00  6339300
1094 2024-05-24  49.50  50.00  47.00  47.95  9856900

[1095 rows x 6 columns]

Thuộc tính dữ liệu Bạn có thể truy xuất thông tin thuộc tính của dữ liệu trả về với 2 thông tin sau:

  • name: Tên mã chứng khoán
  • category: Tên loại tài sản mã chứng khoán đó thuộc về.
>>> df.name
'VCI'
>>> df.category
'stock'
Kiểu dữ liệu
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1095 entries, 0 to 1094
Data columns (total 6 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   time    1095 non-null   datetime64[ns]
 1   open    1095 non-null   float64       
 2   high    1095 non-null   float64       
 3   low     1095 non-null   float64       
 4   close   1095 non-null   float64       
 5   volume  1095 non-null   int64         
dtypes: datetime64[ns](1), float64(4), int64(1)
memory usage: 51.5 KB

Có thể bạn chưa biết

Dữ liệu giá lịch sử cho đồ thị nến (ohlcv) là dữ liệu sinh ra từ phép lấy mẫu theo tần suất thời gian được chỉ định (ví dụ 1 phút hay 1 ngày) trên cơ sở dữ liệu khớp lệnh (intraday). Phép tổng hợp được sử dụng như sau: - `open`: mốc thời gian quan sát sớm nhất. Sử dụng phép tổng hợp `first()`. - `close`: mốc thời gian quan sát sau cùng. Sử dụng phép tổng hợp `last()`. - `high`: giá cao nhất. Sử dụng phép tổng hợp `max()` - `low`: giá thấp nhất. Sử dụng phép tổng hợp `min()`

Dữ liệu được trả về từ hàm history() là dữ liệu đã tổng hợp sẵn, có điều chỉnh khi có sự kiện quyền (chia tách, trả cổ tức cổ phiếu), được cung cấp bởi công ty chứng khoán/dịch vụ cung cấp dữ liệu.

Hiểu bản chất của dữ liệu, giúp bạn tuỳ biến và phân tích một cách linh hoạt. Nếu những nội dung này mới lạ với bạn, khoá học mà dự án Vnstock x LEarn Anything cung cấp sẽ hữu ích để bạn hiểu hơn về dữ liệu trên thị trường chứng khoán và cách sử dụng chúng hiệu quả.

Dữ liệu khớp lệnh

Gợi ý

Dữ liệu intraday thể hiện giao dịch khớp lệnh trong phiên có độ chính xác đến hàng giây theo thời gian thực khi truy cứu trong khung giờ giao dịch 9:00 - 15:00 hàng ngày. Dữ liệu này hay được gọi với tên gọi `intraday`. Độ lớn của số điểm dữ liệu giao dịch mỗi ngày cho các mã chứng khoán lớn có thể lên đến ~15,000 dòng cho 1 ngày, thông thường dữ liệu này chỉ được cung cấp trong từng ngày, nếu bạn có nhu cầu sử dụng lâu dài sẽ cần lưu trữ lại để phân tích.

Gọi hàm

stock.quote.intraday()

Tham số

  • symbol (tuỳ chọn): Mặc định hàm này không cần tham số, thông tin mã chứng khoán được lấy từ thông tin symbol bạn đã chỉ định khi khởi tạo đối tượng stock ở trên. Nhập giá trị khác giá trị symbol đã có để chuyển đổi nhanh sang truy xuất dữ liệu mã chứng khoán bất kỳ mà không cần khởi tạo lại đối tượng.
  • page_size (tùy chọn): Số lượng dữ liệu trả về trong một lần request. Mặc định là 100. Không giới hạn số lượng tối đa. Tăng số này lên để lấy toàn bộ dữ liêu, ví dụ 10_000.
  • last_time (tùy chọn): Thời gian cắt dữ liệu, dùng để lấy dữ liệu sau thời gian cắt. Mặc định là None.

Dữ liệu mẫu:

>>> stock.quote.intraday(symbol='VCI')

                  time    price  volume match_type         id
99 2024-05-24 14:29:02  48000.0   40000        Buy  206446786
98 2024-05-24 14:29:04  48000.0    2000        Buy  206447031
96 2024-05-24 14:29:05  48000.0    3000        Buy  206447056
97 2024-05-24 14:29:05  48000.0     400        Buy  206447055
95 2024-05-24 14:29:06  48000.0   10000        Buy  206447096
..                 ...      ...     ...        ...        ...
4  2024-05-24 14:29:54  48150.0     500        Buy  206451651
3  2024-05-24 14:29:54  48200.0     300        Buy  206451652
2  2024-05-24 14:29:55  48000.0     100       Sell  206451802
1  2024-05-24 14:29:59  48200.0     100        Buy  206452236
0  2024-05-24 14:45:06  47950.0  639200    ATO/ATC  206453858

[100 rows x 5 columns]

Giải thích thuật ngữ

  • time: thời gian khớp lệnh. Bắt đầu từ 9:15 đến 14:45 trong ngày giao dịch.
  • price: Mức giá của giao dịch mua/bán được khớp lệnh.
  • volume: Khối lượng giao dịch của lệnh mua/bán được khớp.
  • match_type: Loại giao dịch được mua/bán.
  • id: mã giao dịch. Thông tin này sử dụng làm mốc để ghép nối dữ liệu nếu thực hiện truy xuất dữ liệu từng phần.

Có thể bạn chưa biết

Từ giá trị giao dịch được tính toán thông qua giá và khối lượng giao dịch, có thể ước lượng và phân loại nhà đầu tư. Đây cũng là cách một số website chứng khoán sử dụng để phân cấp `Cá mập`, `Sói già`, `Cừu non`.
Kiểu dữ liệu
<class 'pandas.core.frame.DataFrame'>
Index: 100 entries, 99 to 0
Data columns (total 5 columns):
 #   Column      Non-Null Count  Dtype         
---  ------      --------------  -----         
 0   time        100 non-null    datetime64[ns]
 1   price       100 non-null    float64       
 2   volume      100 non-null    int64         
 3   match_type  100 non-null    object        
 4   id          100 non-null    object        
dtypes: datetime64[ns](1), float64(1), int64(1), object(2)
memory usage: 4.7+ KB

Chứng khoán quốc tế

Trước khi gọi hàm và truy xuất dữ liệu theo các cú pháp thuộc từng mục bên dưới, bạn chắc chắn rằng đã gọi Vnstock class từ thư viện vnstock. Dữ liệu chỉ có khung thời gian cuối ngày, tức mặc định là interval='1D'.

from vnstock import Vnstock

Có 2 hình thức truy xuất dữ liệu từ hàm của Vnstock3 cho nhóm dữ liệu này:

  1. Gọi theo các hàm từ Vnstock class như dưới đây tại các mục Forex, Crypto, Chỉ số quốc tế. Cách này hạn chế số mã có thể được tra cứu vì danh sách phân loại sẵn để chuyển đổi giữa tên symbol và mã tra cứu từ nguồn dữ liệu không đầy đủ. Tuy nhiên đây là cách dùng tiện lợi và tự nhiên nhất bạn nên dùng. Đối với các mã chứng khoán bạn cần tìm không được hỗ trợ sẵn, hãy làm theo cách thứ 2.
  2. Gọi theo hàm quote từ lõi phần mềm, sử dụng nguồn msn.
from vnstock.explorer.msn.quote import *
quote = Quote(symbol_id='avyufr')
quote.history(start='2020-01-01', end='2024-12-31')

Trong đó, symbol_id là mã định danh tương ứng từng symbol được chỉ định bởi MSN, bạn có thể tra cứu mã này với cú pháp:

from vnstock.explorer.msn.listing import Listing
Listing().search_symbol_id('USD')

Forex (FX)

Gọi hàm

fx = Vnstock().fx(symbol='JPYVND', source='MSN')
fx.quote.history(start='2024-02-28', end='2024-05-25')

Tham số

  • symbol: Mã cặp tiền tệ cần tra cứu. Hiện tại hàm hỗ trợ truy xuất dữ liệu trực tiếp cho các cặp tiền tệ sau:USDVND, JPYVND, AUDVND, CNYVND, KRWVND, USDJPY, USDEUR, USDCAD, USDCHF, USDCNY, USDKRW, USDSGD, USDHKD, USDTRY, USDINR, USDDKK, USDSEK, USDILS, USDRUB, USDMXN, USDZAR, EURUSD, EURVND, EURJPY, EURGBP, EURCHF, EURCAD, EURAUD, EURNZD, GBPJPY, GBPVND, GBPUSD, GBPAUD, GBPCHF, GBPNZD, GBPCAD, AUDUSD, NZDUSD.
  • start: Ngày kết thúc của truy vấn dữ liệu lịch sử. Định dạng YYYY-mm-dd
  • end: Ngày kết thúc của truy vấn dữ liệu lịch sử. Định dạng YYYY-mm-dd
  • interval (tuỳ chọn): Khung thời gian lấy mẫu dữ liệu. Chỉ hỗ trợ giá trị "1D" để lấy dữ liệu cuối ngày.

Dữ liệu mẫu:

>>> fx.quote.history(start='2024-02-28', end='2024-05-25')

         time    open    high     low   close
0  2024-02-28  163.60  163.88  163.20  163.37
1  2024-02-29  163.37  165.13  163.36  164.28
2  2024-03-01  164.28  164.30  163.45  164.12
3  2024-03-04  164.15  164.43  163.76  163.92
4  2024-03-05  163.92  164.92  163.76  164.55
..        ...     ...     ...     ...     ...
58 2024-05-20  163.54  163.68  162.80  162.87
59 2024-05-21  162.87  163.37  162.47  163.02
60 2024-05-22  163.00  163.09  162.34  162.40
61 2024-05-23  162.40  162.70  162.01  162.28
62 2024-05-24  162.27  162.37  162.03  162.18

[63 rows x 5 columns]
Kiểu dữ liệu
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 63 entries, 0 to 62
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   time    63 non-null     datetime64[ns]
 1   open    63 non-null     float64       
 2   high    63 non-null     float64       
 3   low     63 non-null     float64       
 4   close   63 non-null     float64       
dtypes: datetime64[ns](1), float64(4)
memory usage: 2.6 KB

Crypto

Gọi hàm

crypto = Vnstock().crypto(symbol='BTC', source='MSN')
crypto.quote.history(start='2023-01-01', end='2024-12-31')

Tham số

  • symbol: Mã crypto bạn cần tra cứu. Hiện tại hỗ trợ các mã sau: BTC, ETH, USDT, USDC, BNB, BUSD, XRP, ADA, SOL, DOGE
  • start: Ngày kết thúc của truy vấn dữ liệu lịch sử. Định dạng YYYY-mm-dd
  • end: Ngày kết thúc của truy vấn dữ liệu lịch sử. Định dạng YYYY-mm-dd
  • interval (tuỳ chọn): Khung thời gian lấy mẫu dữ liệu. Chỉ hỗ trợ giá trị "1D" để lấy dữ liệu cuối ngày.

Dữ liệu mẫu:

>>> crypto.quote.history(start='2023-01-01', end='2024-12-31')

          time          open          high           low         close            volume
151 2023-01-07  4.284546e+08  4.324123e+08  4.253995e+08  4.313937e+08   366798893802898
152 2023-02-06  5.937590e+08  5.960796e+08  5.812771e+08  5.841758e+08   497871354777384
153 2023-03-08  5.707559e+08  5.732777e+08  5.601426e+08  5.654487e+08   579335227686628
154 2023-04-07  7.170032e+08  7.170835e+08  7.058959e+08  7.136673e+08   352144573109365
Kiểu dữ liệu
<class 'pandas.core.frame.DataFrame'>
Index: 17 entries, 151 to 167
Data columns (total 6 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   time    17 non-null     datetime64[ns]
 1   open    17 non-null     float64       
 2   high    17 non-null     float64       
 3   low     17 non-null     float64       
 4   close   17 non-null     float64       
 5   volume  17 non-null     int64         
dtypes: datetime64[ns](1), float64(4), int64(1)
memory usage: 952.0 bytes

Chỉ số quốc tế

Gọi hàm

index = Vnstock().world_index(symbol='DJI', source='MSN')
index.quote.history(start='2023-01-01', end='2024-12-31')
  • symbol: mã chỉ số bạn cần tra cứu. Sử dụng một trong các mã sau:

    • INX: S&P 500 Index
    • DJI: Dow Jones Industrial Average
    • COMP: Nasdaq Composite Index
    • RUT: Russell 2000 Index
    • NYA: NYSE Composite Index
    • RUI: Russell 1000 Index
    • RUA: Russell 3000 Index
    • UKX: FTSE 100 Index
    • DAX: DAX Index
    • PX1: CAC 40 Index
    • N225: Nikkei 225 Index
    • 000001: Shanghai SE Composite Index
    • HSI: Hang Seng Index
    • SENSEX: S&P BSE Sensex Index
    • ME00000000: S&P/BMV IPC
  • start: Ngày kết thúc của truy vấn dữ liệu lịch sử. Định dạng YYYY-mm-dd

  • end: Ngày kết thúc của truy vấn dữ liệu lịch sử. Định dạng YYYY-mm-dd

  • interval (tuỳ chọn): Khung thời gian lấy mẫu dữ liệu. Chỉ hỗ trợ giá trị "1D" để lấy dữ liệu cuối ngày.

Dữ liệu mẫu:

>>> index.quote.history(start='2023-01-01', end='2024-12-31')

          time      open      high       low     close     volume
0   2023-01-03  33148.90  33387.52  32850.57  33136.37  358608345
1   2023-01-04  33165.14  33409.10  33033.48  33269.77  383346276
2   2023-01-05  33191.72  33191.72  32812.33  32930.08  342665273
3   2023-01-06  33055.30  33710.66  32997.39  33630.61  365497603
4   2023-01-09  33664.39  33935.11  33487.66  33517.65  327846929
..         ...       ...       ...       ...       ...        ...
346 2024-05-20  39989.76  40077.40  39787.09  39806.77  275306588
347 2024-05-21  39804.40  39905.80  39778.73  39872.99  318222838
348 2024-05-22  39863.33  39890.91  39559.09  39671.04  260936322
349 2024-05-23  39694.95  39694.95  39025.51  39065.26  338754861
350 2024-05-24  39089.23  39220.31  39020.29  39069.59  254833323

[351 rows x 6 columns]
Kiểu dữ liệu
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 351 entries, 0 to 350
Data columns (total 6 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   time    351 non-null    datetime64[ns]
 1   open    351 non-null    float64       
 2   high    351 non-null    float64       
 3   low     351 non-null    float64       
 4   close   351 non-null    float64       
 5   volume  351 non-null    int64         
dtypes: datetime64[ns](1), float64(4), int64(1)
memory usage: 16.6 KB

Thảo luận

Đang tải bình luận...