Giá cổ phiếu
Truy xuất dữ liệu giá lịch sử¶
Lưu ý
Phiên bản API hiện tại cho phép truy cập giá lịch sử tối đa đến ngày 2012-03-20 đối với tất cả mã cổ phiếu. Nếu bạn có nhu cầu lấy lịch sử giá từ thời điểm thị trường chứng khoán bắt đầu hoạt động (REE là mã cổ phiếu có giao dịch sớm nhất thị trường vào 2000-07-31), hãy tham gia nhóm thành viên vnstock trên Facebook để được hỗ trợ. Xem thêm chi tiết tại FAQ.
vnstock cho phép người dùng tải xuống dữ liệu lịch sử giao dịch của mã cổ phiếu, chỉ số, hợp đồng phái sinh
.
-
Dữ liệu hỗ trợ 7 mức độ chi tiết theo khoảng thời gian bao gồm: 1 phút, 3 phút, 5 phút, 15 phút, 30 phút, 1 giờ, 1 ngày.
-
Trường dữ liệu
time
sẽ là giá trị ngày thángYYYY-mm-dd
nếuresolution
nhập vào là1D
, trong khiresolution
là cấp độ phút và giờ sẽ cho thêm thông tin thời gian giờ/phút. -
Đơn vị giá OHLC cho mã cổ phiếu được làm tròn theo mặc định, chỉ lấy phần nguyên. Đơn vị tính là VND. Bạn có thể tắt tính năng làm tròn bằng tham số
beautify=False
.
Trong ví dụ dưới đây, dữ liệu giá được truy xuất theo cấp độ ngày.
df = stock_historical_data(symbol='GMD',
start_date="2021-01-01",
end_date='2022-02-25', resolution='1D', type='stock', beautify=True, decor=False, source='DNSE')
print(df)
-
Lưu ý: Đối với khung thời gian (resolution) nhỏ hơn 1 ngày (1D), API này (do DNSE cung cấp) chỉ cho phép truy ngược lại trong khoảng thời gian 90 ngày. Bạn có thể gặp lỗi khi cố gắng lấy dữ liệu cũ hơn trong thời gian dài hơn.
-
Giá trị mà tham số
resolution
có thể nhận là1D
(mặc định, 1 ngày), '1' (1 phút), 3 (3 phút), 5 (5 phút), 15 (15 phút), 30 (30 phút), '1H' (hàng giờ). type = 'stock'
cho phép lấy dữ liệu giá của mã cổ cổ phiếu,type = 'index'
cho phép lấy dữ liệu giá của mã chỉ số, vàtype='derivative
cho phép lấy dữ liệu phái sinh. Các mã được hỗ trợ bao gồm (nhưng không giới hạn): VNINDEX, VN30, HNX, HNX30, UPCOM, VNXALLSHARE, VN30F1M, VN30F2M, VN30F1Q, VN30F2Qbeautify=True
cho phép làm tròn giá trị OHLC theo mặc định (nhân với 1000, ví dụ giá 32.05 thành 32500). Đặtbeautify=False
để tắt chế độ làm tròn cho cổ phiếu. Với mã chỉ số, giá trị trả về luôn là số thập phân nguyên bản.-
decor=True
: áp dụng thay tên các cột trong DataFrame trả về dưới dạng Title Case tứcOpen, High, Low, Close, Time, Ticker
thay vìopen, high, low, close, time, ticker
như hiện tại đồng thời đặt cột Time là index. Việc này giảm bớt cho người dùng phải viết thêm câu lệnh khi sử dụng dữ liệu vnstock kết hợp các thư viện phân tích kỹ thuật phổ biến vốn dùng thư viện Yahoo Finance làm nguồn cấp dữ liệu. Giá trị mặc định làFalse
. -
source='DNSE'
(không phân biệt chữ thường hay in hoa):- Nguồn dữ liệu DNSE (mặc định), cho phép lấy dữ liệu với nhiều khung thời gian khác nhau, giới hạn 90 ngày gần nhất đối với dữ liệu phút, 10 năm gần nhất đối với dữ liệu ngày.
- Nguồn dữ liệu
TCBS
cho lấy dữ liệu lịch sử theo ngày (resolution =1D
) trong thời gian dài, không hỗ trợ khung thời gian nhỏ hơn. - 🔐 Nguồn dữ liệu
VND
cho phép lấy dữ liệu trong vòng 10 năm gần nhất cho resolution =1D
. Tùy chọn này chỉ được áp dụng với người dùng Tài trợ dự án và sử dụng gói thư viện bổ sungvnstock-data-pro
. - 🔐 Nguồn dữ liệu
SSI
,HSC
cho phép lấy dữ liệu từ năm 2000 cho resolution =1D
với tốc độ truy cập nhanh chóng trong 1 truy vấn duy nhất. Tùy chọn này chỉ được áp dụng với người dùng Tài trợ dự án và sử dụng gói thư viện bổ sungvnstock-data-pro
.
Bạn cũng có thể viết hàm theo dạng rút gọn như dưới đây, điều này đúng với tất cả các hàm, miễn là thông số được nhập vào đúng thứ tự:
-
Lấy dữ liệu lịch sử cổ phiếu
Và đây là kết quả
-
Lấy dữ liệu lịch sử của mã chỉ số
-
Lấy dữ liệu lịch sử của hợp đồng phái sinh
Dữ liệu khớp lệnh trong ngày giao dịch¶
vnstock cho phép người dùng tải xuống dữ liệu khớp lệnh trong ngày giao dịch theo thời gian thực. Nếu mốc thời gian bạn truy cứu rơi vào Thứ Bảy, Chủ Nhật thì dữ liệu nhận được thể hiện cho ngày giao dịch của Thứ 6 của tuần đó.
Trong đó:
page_size
: nhận giá trị tùy ý nhỏ hơn 100 hoặc bội số của 100. Ví dụ chọn 1000 sẽ cho phép lấy hầu hết dữ liệu khớp lệnh trong ngày giao dịch với đa số mã cổ phiếu.investor_segment
: mặc định nhận giá trịTrue
, cho phép phân loại nhà đầu tư theo Cá Mập, Cừu Non hay Sói già. Đặt giá trịFalse
để bỏ qua bước phân loại này, hiển thị tất cả các lệnh khớp dưới dạng dữ liệu thô. Cập nhật này áp dụng từ phiên bản 0.2.8.4
Kết quả:
- Minh họa 1: Không phân loại nhà đầu tư
>>> stock_intraday_data (symbol='ACB', page_size=10, investor_segment=False)
ticker time orderType volume price prevPriceChange
0 ACB 14:45:00 211500 22550.0 -100.0
1 ACB 14:29:53 BU 1000 22650.0 0.0
2 ACB 14:29:38 BU 100 22650.0 0.0
3 ACB 14:28:34 BU 300 22650.0 50.0
4 ACB 14:28:15 SD 1200 22600.0 0.0
5 ACB 14:28:15 SD 300 22600.0 0.0
6 ACB 14:28:15 SD 400 22600.0 0.0
7 ACB 14:28:15 SD 300 22600.0 0.0
8 ACB 14:28:15 SD 100 22600.0 0.0
9 ACB 14:28:15 SD 200 22600.0 0.0
- Minh họa 2: Phân loại nhà đầu tư (kèm hình giao diện TCBS tương ứng)
>>> stock_intraday_data (symbol='ACB', page_size=10, investor_segment=True)
ticker time orderType investorType volume averagePrice orderCount prevPriceChange
0 ACB 14:29:54 Buy Up SHEEP 1000 22650.0 1 0.0
1 ACB 14:29:39 Buy Up SHEEP 100 22650.0 1 0.0
2 ACB 14:28:34 Buy Up SHEEP 300 22650.0 1 50.0
3 ACB 14:28:16 Sell Down SHEEP 7000 22600.0 29 -50.0
4 ACB 14:28:11 Buy Up SHEEP 200 22650.0 1 0.0
5 ACB 14:27:43 Buy Up SHEEP 1000 22650.0 1 50.0
6 ACB 14:27:28 Sell Down SHEEP 3200 22600.0 2 0.0
7 ACB 14:26:38 Sell Down SHEEP 300 22600.0 1 -50.0
8 ACB 14:26:36 Buy Up SHEEP 100 22650.0 1 0.0
9 ACB 14:26:21 Buy Up SHEEP 3000 22650.0 1 50.0
Giải thích ý nghĩa chỉ số
Khi 1 lệnh lớn (từ Cá mập, tay to, tổ chức....) mua chủ động (hoặc bán chủ động) được đưa vào Sàn, thường thì nó sẽ được khớp với nhiều lệnh nhỏ đang chờ bán (hoặc chờ mua). Nếu chỉ nhìn realtime theo từng lệnh khớp riêng lẻ, thì sẽ không thể phát hiện được các lệnh to (của Cá mập, tay to...) vừa được đẩy vào Sàn. Vì vậy, chúng tôi "cộng dồn" các lệnh khớp này lại (phát sinh bởi 1 lệnh lớn chủ động vào sàn trong 1 khoảng thời gian rất nhanh) để giúp NĐT phát hiện các lệnh lớn (của Cá mập, tay to....) chính xác hơn. Lệnh Cá mập sẽ được tô xanh (cho Mua chủ động) và đỏ (cho Bán chủ động).
• Cá mập: (CM - SHARK) nhà đầu tư tay to, tổ chức, đầu tư lớn, dẫn dắt thị trường. Giá trị 1 lệnh đặt > 1 tỷ đồng/lệnh đặt. Đồ thị 1N dùng số liệu 1 phút cho 60’ gần nhất; 1W là tổng mỗi 15’ cho 1 tuần; 1M là tổng hàng ngày cho 1 tháng
• Sói già: (SG - WOLF) nhà đầu tư kinh nghiệm, giá trị lệnh đặt cao. Giá trị 1 lệnh đặt từ 200 tr đến 1 tỷ đồng/lệnh đặt.
• Cừu non: (CN - SHEEP) nhà đầu tư nhỏ lẻ, giá trị giao dịch và mua bán chủ động thấp. Giá trị 1 lệnh đặt Mua hoặc Bán chủ động < 200 triệu đồng/lệnh đặt vào.
• Mua chủ động (hay Buy Up) là khi NĐT thực hiện chủ động mua lên qua việc đặt lệnh mua với giá bằng giá dư bán gần nhất để có thể khớp luôn. Như thế, giá khớp cho lệnh này thường sẽ đẩy giá khớp lên cao hơn thị giá trước đó.
• Bán chủ động (hay Sell Down) là khi NĐT thực hiện chủ động Bán dưới giá hiện tại (hay thị giá) của cổ phiếu bằng việc đặt lệnh bán với giá bán bằng giá dư mua gần nhất để khớp ngay. Và như thế, thị giá sẽ bị kéo xuống thấp hơn so với thị giá trước đó. Thống kê khối lượng giao dich theo Mua CĐ và Bán CĐ dùng để đánh giá tương quan giữa cung (Bán CĐ) và cầu (Mua CĐ) trên giao dịch khớp lệnh thực tế, nhằm nhận định tương đối về sự vận động của xu hướng dòng tiền. Khi tỷ lệ % Mua CĐ trên (Tổng Mua và Bán CĐ) lớn hơn 50%, đồng nghĩa với việc thị trường đang có xu hướng mua vào nhiều hơn bán ra và ngược lại, qua đó xác định được dòng tiền vào/ra với mỗi cổ phiếu. Khi tỷ lệ này cao đột biến (>70% hay <30%) so với điểm cân bằng (50%) , đó là tín hiệu của việc mua hoặc bán bất chấp của thị trường.