vnstock là gói thư viện Python cho phép tải dữ liệu chứng khoán với cú pháp đơn giản sử dụng dữ liệu đáng tin cậy được cung cấp bởi public api từ Techcombank Security (TCBS) và SSI.
Thư viện này được tôi tạo ra lấy cảm hứng từ investingpy (sử dụng nguồn cấp dữ liệu từ investing.com). Phiên bản đầu tiên của vnstock lần đầu tiên được phát hành ngày 27/2/2022.
Nội dung chính
Giới thiệu chung
Lý do ra đời của dự án này cũng thật đặc biệt, tôi rất thích phân tích dữ liệu với Python và thử áp dụng vào việc phân tích đầu tư thực tế để nâng cao kỹ năng kỹ thuật và rèn luyện tư duy. Cho đến hiện tại, khi tìm kiếm trên internet về “api dữ liệu chứng khoán”, “nguồn cấp dữ liệu chứng khoán” hay “tải dữ liệu chứng khoán” thì đa phần những cái tên hiện ra đều khá truyền thống như cophieu68, vietstock, cafef mà đặc thù là bạn có thể xem trên web hoặc tải file excel hoặc csv dùng cho phần mềm Amibroker. Một số dịch vụ khác cung cấp api dữ liệu nhưng cần trả phí hoặc thủ tục đăng ký rắc rối trong khi tôi muốn sử dụng cho mục đích nghiên cứu và tiết kiệm chi phí nhất có thể (không cần trả phí càng tốt). Thêm nữa, để giảm thiểu các thao tác truy xuất dữ liệu và đưa vào model tính toán thông thường với Excel mất thời gian, tôi thích sử dụng Google Sheets kết hợp với Python để tự động hoá các khâu phân tích cơ bản. Tất nhiên với một số phân tích và nhóm dữ liệu nhất định, bạn có thể gọi API để kéo data trực tiếp vào Google Colab đơn giản nhưng khi sử dụng ở nhiều môi trường máy tính khác nhau (desktop lẫn server), hay thay đổi giữa các tài khoản Google khác nhau thì việc tạo ra 1 thư viện giúp đơn giản hoá việc tận dụng lại những đoạn code viết sẵn, workbook trở nên thanh thoát và dễ làm việc hơn nhiều.
Tư tưởng dẫn dắt cho việc xây dựng thư viện tải dữ liệu chứng khoán này là “Đơn giản, dùng tốt và có tính lâu dài”. Bạn có thể tìm thấy mã nguồn mở của thư viện trên Github tại vnstock. Nếu cần bạn có thể đóng góp công sức vào cải tiến thư viện này để có thể sử dụng thuận tiện hơn. Bản thân tôi rất yêu thích và ấn tượng với ý nghĩa của những dự án mã nguồn mở đối với cộng đồng nhất là sự ra đời của Linux. Lần đầu tiên tôi học cách xây dựng 1 thư viện Python qua dự án này và cũng với mong muốn đóng góp một phần nhỏ nhoi vào cộng đồng mã nguồn mở để cổ vũ cho ý tưởng PAY IT FORWARD tôi cho rằng rất có ý nghĩa.
Đôi điều về nguồn tải dữ liệu chứng khoán từ TCBS và SSI
Qua quá trình sử dụng, tôi phải nói rằng TCBS là 1 trong số hiếm các công ty chứng khoán cung cấp dữ liệu phân tích rất đầy đủ, trực quan, thuận tiện cho việc sử dụng nhất là đối với các nhà đầu tư F0. Ngoài ra TCBS cũng sử dụng hình thức cung cấp dữ liệu lên web thông qua public api, do đó việc tận dụng các api này cho việc lấy dữ liệu trở nên đơn giản hơn rất nhiều so với cách truyền thống là scrape html table hay selenium để tải file. Trong khi đó dữ liệu được truyền qua api và được đọc bằng pandas rất nhanh chóng, hầu hết các trường hợp bạn chỉ cần đâu đó 1-2 giây để có được toàn bộ lịch sử giá của 1 cổ phiếu bất kỳ trong vòng 1 năm.
Với SSI, có khá nhiều dữ liệu phân tích sử dụng nguồn cấp từ Fiin Trade tôi cho rằng rất có giá trị và sử dụng thuận tiện, đôi khi đặc biệt và hữu ích hơn những thông tin do TCBS cung cấp. Dữ liệu từ SSI cung cấp qua thư viện vnstock cũng đến từ public api (tương tự bạn truy cập website thông qua trình duyệt). Nếu tò mò, bạn có thể xem xét thêm cả VNDirect, đây cũng là một website sử dụng hình thức render thông tin dựa vào api dữ liệu cung cấp. Bạn có thể dễ dàng truy cứu các public api này thông qua công cụ của Chrome: Inspect >> Network >> Fetch/XHR
.
Sử dụng thư viện python vnstock tải dữ liệu chứng khoán
Trong phạm vi bài viết này, tôi cung cấp demo và cách tải dữ liệu chứng khoán và lưu file vào Google Drive dưới hình thức đơn giản nhất để các bạn hình dung cách thức hoạt động của thư viện vnstock. Bạn có thể xem hướng dẫn sử dụng các hàm có sẵn trong thư viện tại file README trên github repo chính thức tại đây.
Đối với một số thuật ngữ, code name của dữ liệu lấy trực tiếp từ API tôi chưa có thời gian đổi lại tên cho dễ hiểu, các bạn có thể tìm lại trong danh sách thuật ngữ tại đây.
Bạn có thể sử dụng Google Colab là môi trường chạy Python để thử nghiệm thư viện vnstock và tải dữ liệu chứng khoán mà không cần thông qua các bước cài đặt phức tạp bằng đoạn code mẫu dưới đây. Các bạn có thể click vào nút “Open in Colab” trong phần Github gist preview để mở file với Google Colab. Bạn hãy tạo bản copy của file notebook này và thử nghiệm thêm những hàm thú vị khác nhé.
Tham gia cộng đồng vnstock
Bạn có thể đọc thêm chi tiết về cộng đồng vnstock và góp sức phát triển cộng đồng tại đây.
Báo lỗi & phản hồi
Trong quá trình sử dụng vnstock, nếu gặp lỗi, các bạn có thể gửi phản hồi trong phần bình luận của bài viết này hoặc tạo New issue trực tiếp trên Github. Để tôi có thể dễ dàng sửa lỗi và hỗ trợ các bạn, vui lòng gửi kèm ảnh chụp màn hình thể hiện câu lệnh bạn thực hiện và lỗi xuất hiện. Chúng ta đều có công việc của mình và đều khá bận rộn, tôi cũng không thu phí phần mềm để hỗ trợ dịch vụ, do đó tôi mong rằng mỗi người hãy nghĩ cho nhau một chút và chúng ta giúp đỡ nhau trong vui vẻ bằng tinh thần tự nguyện. Chúc các bạn sử dụng vnstock thuận tiện và hiệu quả!
Lời kết
Nếu thấy vnstock hữu ích, bạn có thể donate để tôi tiếp tục phát triển thêm và đồng thời chia sẻ nhiều dự án open-source khác tới cộng đồng. Dưới đây là mã QR Momo nhận đóng góp hoặc đơn giản là bạn gửi tặng tôi 1 ly cafe. Cám ơn bạn đã ghé thăm.

Dear anh Thịnh,
Xin tự giới thiệu với anh, em là Duy, hiện đang học Master về Fintech. Em đang tìm kiếm cách import giá cổ phiếu vn vào python để phân tích và thấy vnstock rất hữu ích. Tuy nhiên khi em thử trên máy em thì nhận được error như sau:
– No module named ‘openpyxl’
vnstock em đọc thấy rất đầy đủ dữ liệu để làm phân tích. Mong anh sớm fix lỗi.
Em xin cảm ơn anh Thịnh
Hi Duy,
Trong lúc chờ update cho package này, em có thể khắc phục báo lỗi trên bằng cách install package openpyxl với pip trong terminal với câu lệnh “pip install openpyxl” nhé.
Thân,
Hi anh, mình có cách nào lấy hết dữ liệu các mã trong 1 năm k ạ? em cho vào vòng for mà nó chạy lâu quá
Không có cách nào khác em nhé. Mình nên chia việc lấy dữ liệu thành các job nhỏ cho từng nhóm mã CP thay vì chạy vòng lặp liên tục cho gần 2k mã CP và truy vấn dữ liệu trong 1 năm dễ dẫn đến việc bị chặn truy cập bất thường làm ảnh hưởng performance của API.
Hi anh, em muốn thống kê thông tin khối lượng giao dịch của nhà đầu tư nước ngoài, khối tự doanh của từng cổ phiếu thì dùng câu lệnh ntn ạ?
Cám ơn Harry đã quan tâm đến vnstock. Dữ liệu giao dịch tự doanh có sẵn trên SSI iboard nhưng hiện tại anh chưa cung cấp trong vnstock. Tính năng này anh sẽ cân nhắc bổ sung thêm khi có thời gian nhé.
Cảm ơn Admin, t đã học phân tích dữ liệu được nhiều từ thư viện này. Có một chút chưa rõ, mong Admin giúp đỡ: 1. Có thể lấy được chỉ số VN index được không, ví dụ df=stock_historical_data(‘VNINDEX’,”2021-01-01″,’2022-02-25′). 2. Có thể lấy lịch sử giá theo chu kỳ mỗi tuần được không?
Cám ơn bạn đã quan tâm, mình trả lời 2 câu hỏi trên như sau:
1. Mình có thể lấy được chỉ số VNIndex nhưng chưa hỗ trợ trong thư viện này. Item này mình có thể bố sung trong thời gian tới
2. Bạn cần copy hàm stock_historical_data từ source code ra và tùy chỉnh lại link request nếu muốn đổi resolution để xuất data từ day sang week, month, vv. Mình có thể cập nhật hàm này trong phiên bản tiếp theo, cho phép thay đổi resolution dễ hơn. Đoạn code mình nhắc đến như này data = requests.get(‘https://apipubaws.tcbs.com.vn/stock-insight/v1/stock/bars-long-term?ticker={}&type=stock&resolution=D&from={}&to={}’.format(symbol, fd, td)).json()
Bạn thấy đổi resolution=day sang week nhé.
Chúc bạn thành công.
cảm ơn Admin rất nhiều, tớ đã lấy được thông tin theo tuần rồi, lấy được thông tin theo 4 giờ (4H) mà thử lấy theo 30 phút (30m) hay 1 giờ (1h) không được, có lẽ giới hạn chỉ đến mức 4h nhỉ.
Cảm ơn Admin rất nhiều, Chúc Admin luôn khỏe mạnh!
Hi anh, hiện tại em thử import package và chạy listing_companies() thì báo lỗi như sau:
AttributeError: partially initialized module ‘vnstock’ has no attribute ‘listing_companies’ (most likely due to a circular import)
mong anh chỉ giáo ạ
Hi Hoàng, anh không rõ em chạy lệnh ở môi trường Google Colab hay local và em dùng những câu lệnh nào thì gặp lỗi trên. Anh có thử lại demo notebook trên Colab được đính kèm bài viết thì không gặp lỗi. Để review lỗi kỹ hơn em giúp anh share notebook của mình tới email support@thinhvu.com nhé.
df = stock_historical_data(symbol=’xxx’, start_date=”2021-01-01″, end_date=’2022-09-22′)
anh cho hỏi muốn xem dữ liệu vnindex chung thì ‘xxx’ gõ ký tự gì
cám ơn
Chào Phong,
Hàm stock_historical_data chỉ cho phép lấy dữ liệu lịch sử của một mã chứng khoán bất kỳ. Hiện tại mình chưa hỗ trợ lấy dữ liệu index với vnstock.
Cám ơn bạn.
Chào Phong, hiện tại vnstock đã hỗ trợ lấy dữ liệu các chỉ số hiện có trên thị trường (VNINDEX, VN30, vv). Em có thể tìm đọc readme trên Github tại mục 2.15.4 nhé. Lưu ý: Để sử dụng cách cài đặt package từ github source để có thể sử dụng các tính năng mới nhất của thư viện. Thân!
Hi anh, anh cho em hỏi 1 chút về listing_companies() vì giờ em xem liệt kê doanh nghiệp giờ có 3229 bản ghi mà mình mới có 1630 thì cập nhật sao ạ? Em cảm ơn
Hi Hoàn, nếu được em gửi giúp anh hình chụp toàn màn hình để tiện kiểm tra nhé. Thân!
Hi bạn, dường như ở bảng giá, dữ liệu Khối lượng giao dịch không có được cập nhật nữa
Hi Đạt, bạn gửi giúp mình ảnh chụp màn hình để dễ kiểm tra nhé. Thân!
KLGD ròng(CM) %KLGD ròng (CM) = 0
Cám ơn Đạt đã phản hồi. Xin lỗi bạn vì tôi không có đủ thông tin để hỗ trợ và tôi không thường xuyên làm việc với vnstock nên rất mất thời gian để đoán bạn đang đề cập đến vấn đề gì. Bạn vui lòng gửi lại ảnh chụp màn hình trong đó thể hiện câu lệnh và báo lỗi để tôi có thể kiểm tra nhé. Thân!
Anh Thịnh cho em hỏi mình xem giá trực tiếp (realtime) bằng vnstock được không ạ? Em cảm ơn anh!
Hi Luân, để xem giá trực tiếp, em tìm mục Intraday Trading Data trong file Readme của Github repo nhé. Dữ liệu này được lấy từ nguồn TCBS hiển thị cho người dùng và thể hiện giá gần nhất realtime.
Chào Bạn, cho t hỏi có thể lấy lịch sử giá theo khung thời gian h1 bằng lệnh historical_data_stock(symbol,start_date,end_date,interval=’1h’) được không? cảm ơn rất nhiều
Hi James, mình có phản hồi như sau:
1. Mình đoán là bạn đang nói tới hàm stock_historical_data bởi mình không viết bất kỳ hàm nào có tên như bạn mô tả với vnstock
2. Bạn không thể tự ý chèn parameter interval được vì hàm này không được định nghĩa sẽ dùng tham số này làm gì. Bạn có thể fork repo hoặc copy source code cho mình hàm này để sửa lại link đang dùng để request data. Hiện tại resolution mặc định là D (ngày) nên nếu muốn có dữ liệu hàng giờ bạn có thể đổi thành H (giờ).
Tham chiếu dòng 71: https://github.com/thinh-vu/vnstock/blob/main/vnstock/stock.py#L53-L71
Chào bạn, t làm theo đổi resolution ở request D thành H để lấy dữ liệu theo giờ mà không được, có lẽ khung thời gian bị giới hạn từ D trở lên. Nếu có cách khác để lấy theo giờ mong bạn giúp đỡ. Cảm ơn bạn rất nhiều, thư viện này rất hữu ích.
Hi James, lâu mình không xem nên nhầm chút, bạn đổi resolution=60 cho giờ nhé. Nếu muốn lấy theo 1 phút, 5 phút, 15 phút thì thay thế D thành lần lượt 1, 5 và 15. Với dữ liệu là ngày, tuần, tháng thì dùng D, W, M. Như vậy các giá trị có thể sử dụng cho resolution ở đây bao gồm: 1, 5, 15, 60, D, W, M.
chào Bạn, t đổi D thành 60 và vẫn có lỗi {‘status’: 400, ‘code’: ‘889004’, ‘message’: “Invalid ‘resolution’ param”, ‘traceId’: ‘4810fa93a7c40746′}. Bạn có thể xem giúp t đoạn code này được không? from datetime import datetime, timedelta
import time
import requests
symbol=’HPG’
fd = int(time.mktime(time.strptime(‘2023-03-25’, ‘%Y-%m-%d’)))
td = int(time.mktime(time.strptime(‘2023-03-29’, ‘%Y-%m-%d’)))
data = requests.get(‘https://apipubaws.tcbs.com.vn/stock-insight/v1/stock/bars-long-term?ticker={}&type=stock&resolution=60&from={}&to={}’.format(symbol, fd, td)).json()
print (data)
Hi Thinh Vu, T đã thử đổi D thành 60 mà không được bạn có thể kiểm tra lại được không? cảm ơn Bạn
https://apipubaws.tcbs.com.vn/stock-insight/v1/stock/bars-long-term?ticker=HPG&type=stock&resolution=60&from=1679677200&to=1680022800
Chào James,
URL đúng trong trường hợp này sẽ có dạng: https://apipubaws.tcbs.com.vn/stock-insight/v2/stock/bars?ticker=TCB&type=stock&resolution=60&to=1675144800&countBack=54
Bạn có thể thử paste vào chrome sẽ đọc được dữ liệu. Mình sẽ cập nhật function trong version tiếp theo. Lưu ý, dấu thời gian trả về là giờ UTC, muốn có giờ chính xác phải cộng thêm 7 tiếng.
Chào Bạn! T thay D bằng 60 mà vẫn bị lỗi, Bạn có thể kiểm tra giúp t đc không? https://apipubaws.tcbs.com.vn/stock-insight/v1/stock/bars-long-term?ticker=HPG&type=stock&resolution=60&from=1679677200&to=1680022800
Mình xem lại thì có vẻ như sẽ cần tuỳ chỉnh lại về function và lệnh bên dưới. Việc này cần thêm thời gian nên mình có thể sẽ cập nhật trong bản tiếp theo. Cám ơn bạn đã kiên nhẫn theo dõi!
Cảm ơn Bạn rất nhiều, T đã làm theo hướng dẫn của Bạn và có kết quả rồi!
Mình đang chạy thử python 3.11 trên windows, mình đã install vnstock rồi. Tới lúc import module theo hướng dẫn [from vnstock import *] thì mình gặp phải lỗi như sau, như lỗi này là sao vậy ạ? Xin cảm ơn.
Traceback (most recent call last):
File “”, line 1, in
from vnstock import *
File “C:\Users\namhp\AppData\Local\Programs\Python\Python311\Lib\site-packages\vnstock\__init__.py”, line 7, in
from .stock import *
File “C:\Users\namhp\AppData\Local\Programs\Python\Python311\Lib\site-packages\vnstock\stock.py”, line 4, in
import pandas as pd
ModuleNotFoundError: No module named ‘pandas’
Bạn chưa cài đặt pandas cho bản python của mình nên import không thành công vì vnstock sử dụng pandas. Bạn có thể cài đặt Anaconda để có đầy đủ các thư viện cần thiết thay vì dùng pip cài đặt từng thư viện khi mới chỉ có mình python thuần.
À ra vậy. Cám ơn bạn rất nhiều!
HI anh Thịnh, anh có thể cho xem xin document về api https://apipubaws.tcbs.com.vn/ được không ạ? Cảm ơn anh rất nhiều.
Chào Thông,
Anh không có API document của TCBS vì đây là API riêng của công ty họ, API này dùng cho mục đích cung cấp dữ liệu chứng khoán nhưng không dành cho người dùng với mục đích crawl dữ liệu. Thường khi các công ty phát hiện API bị lạm dụng, có thể họ sẽ nâng cấp bảo mật và dùng các biện pháp chặn bot traffic (đơn giản nhất có lẽ là Capcha với Cloudflare).
Thân
Thanks a nhé.
Bác cho em hỏi là em có đọc thấy hướng dẫn lấy giá của 1 mã CK như sau:
df = stock_historical_data(“GMD”, “2021-01-01”, “2022-02-25”)
print(df.head()).
Nhưng khi in ra thì chỉ được 5 ngày sau ngày bắt đầu. Vậy là có vấn đề gì ạ.
Chào Việt,
`.head()` function của Pandas DataFrame cho phép hiển thị n dòng đầu tiên của DataFrame, mặc định là 5 dòng. Khi bạn print(df.head()) là bạn đang xem trước dữ liệu với 5 dòng đầu tiên, thực tế dữ liệu của df DataFrame vẫn đầy đủ. Kể cả khi bạn print(df) thì terminal cũng sẽ không hiển thị hết dữ liệu nhưng đối tượng df vẫn sẵn sàng để bạn thao tác với các phép tính. Bạn có thể tìm hiểu thêm về pandas để nắm rõ cách tương tác với các dữ liệu nhận được. Tham khảo thêm tại đây: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.head.html
Em chào anh ạ, em chạy câu lệnh listing_companies() thì gặp lỗi như bên dưới. Em phải làm thế nào ạ? Em cảm ơn anh ạ.
Traceback (most recent call last):
File “/Users/phongnguyen/opt/anaconda3/lib/python3.9/site-packages/requests/models.py”, line 971, in json
return complexjson.loads(self.text, **kwargs)
File “/Users/phongnguyen/opt/anaconda3/lib/python3.9/json/__init__.py”, line 346, in loads
return _default_decoder.decode(s)
File “/Users/phongnguyen/opt/anaconda3/lib/python3.9/json/decoder.py”, line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File “/Users/phongnguyen/opt/anaconda3/lib/python3.9/json/decoder.py”, line 355, in raw_decode
raise JSONDecodeError(“Expecting value”, s, err.value) from None
JSONDecodeError: Expecting value
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/Users/phongnguyen/opt/anaconda3/lib/python3.9/site-packages/spyder_kernels/py3compat.py”, line 356, in compat_exec
exec(code, globals, locals)
File “/Users/phongnguyen/Library/CloudStorage/OneDrive-NEOMABusinessSchool/Dissertation/untitled2.py”, line 13, in
listing_companies()
File “/Users/phongnguyen/opt/anaconda3/lib/python3.9/site-packages/vnstock/stock.py”, line 19, in listing_companies
r = api_request(url)
File “/Users/phongnguyen/opt/anaconda3/lib/python3.9/site-packages/vnstock/stock.py”, line 387, in api_request
r = requests.get(url, headers=headers).json()
File “/Users/phongnguyen/opt/anaconda3/lib/python3.9/site-packages/requests/models.py”, line 975, in json
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
JSONDecodeError: Expecting value
Hi em, đây là lỗi đã được report, tạm thời em có thể tải file csv đính kèm trong repo để sử dụng trong khi chờ fix lỗi nhé. Thân
Hay quá, tình cờ tìm thấy cái liab này. Rất hay và load data rất nhanh. mặc dù còn nhiều function và module bị lỗi nên không get data được. Nhưng mà chắc chắn những gì Thịnh làm rất là hữu ích.
Cám ơn anh Huy đã chia sẻ những feedback rất hay từ góc độ một người làm về tài chính và thị trường chứng khoán trong buổi gặp trực tiếp. Hy vọng anh sẽ luôn ủng hộ và đồng hành cùng vnstock cũng như chia sẻ những ý kiến giá trị để phát triển vnstock hơn nữa cho cộng đồng nghiên cứu và đầu tư.
Xin chào anh Thịnh,
1. hiện tại API listing_companies() đang gặp lỗi khi fetch https://fiin-core.ssi.com.vn/Master/GetListOrganization?language=vi, khả năng thì nó bị chặn ko crawl đc từ API này rồi anh.
2. API stock_intraday_data(symbol, page_num, page_size), trong mô tả không giới hạn page_size, nhưng nếu để giá trị 5000 như gợi ý sẽ gặp lỗi. Kiểm tra từ nguồn ‘https://apipubaws.tcbs.com.vn/stock-insight/v1/intraday/{}/his/paging?page={}&size={}’ thì thấy giới hạn chỉ có 100 items cho api này
Hi Linh, cám ơn em đã chia sẻ thông tin. Anh đã test toàn bộ các hàm và ghi nhận các lỗi trên xảy ra (trên môi trường colab) và sẽ tiến hành nghiên cứu, sửa lỗi trong khoảng 1-2 tuần tới. Cám ơn em đã kiên nhẫn. Với các báo lỗi chi tiết, em có thể báo cáo thông qua Github để tiện các bạn khác được biết và anh đưa vào lộ trình sửa lỗi cho tiện ha. Gửi em link discussion thread: https://github.com/thinh-vu/vnstock/discussions/16 và mục issue https://github.com/thinh-vu/vnstock/issues
listing_companies() NameError: name ‘listing_companies’ is not defined why?
Hi 蘇先生,
An issue has arisen with the function listing_companies() that is known (broken for Google Colab but work well on local machine such as Windows and macOS computers). Please follow up with the issue reported on Github. I will work on a hotfix and have it completed within the next 1 to 2 weeks from now.
Em chào anh ạ, em gặp lỗi khi chạy câu lệnh stock_intraday_data và . Anh có thể hướng dẫn em khắc phục được không ạ? Em cảm ơn ạ.
—————————————————————————
KeyError Traceback (most recent call last)
/var/folders/nv/lrclcff51yv4w8s61j0908x00000gn/T/ipykernel_6194/1239023116.py in
—-> 1 stock_intraday_data(symbol=’SLS’,
2 page_num=0,
3 page_size=5000)
~/opt/anaconda3/lib/python3.9/site-packages/vnstock/stock.py in stock_intraday_data(symbol, page_num, page_size)
144 else: #today is weekday
145 data = requests.get(‘https://apipubaws.tcbs.com.vn/stock-insight/v1/intraday/{}/his/paging?page={}&size={}’.format(symbol, page_num, page_size)).json()
–> 146 df = json_normalize(data[‘data’]).rename(columns={‘p’:’price’, ‘v’:’volume’, ‘t’: ‘time’})
147 return df
148
KeyError: ‘data’
Chào Linh, lỗi của hàm stock_intraday_data() anh đã ghi nhận sau khi test ngày 12/5/2023 vừa rồi. Anh sẽ xem xét kỹ hơn để sửa lỗi trong khoảng 1-2 tuần tới nhé. Em có thể theo dõi phần discussion trên Github theo link sau: https://github.com/thinh-vu/vnstock/discussions/16
Chào Linh, hiện tại anh đã cập nhật bản sửa lỗi ở test branch cho hàm stock_intraday_data. Em có thể xem file Readme tại đây https://github.com/thinh-vu/vnstock/tree/beta và chi tiết trong link discussion anh gửi ở trên ha.
em muốn lấy all hết mã cổ phiếu thì sao ạ
Chào Emma, em có thể đọc kỹ document trên Github để tìm hàm mình cần nhé. Để được trợ giúp em vui lòng chia sẻ thêm thông tin mình cần gì vì anh cũng không rõ em muốn lấy hết đánh sách mã hay giá cả nên ko thể trả lời.
Thân
df = stock_historical_data(symbol=’ACB’, start_date=”2023-05-01″, end_date=’2023-05-31′) dạ chỗ này ạ a , a muốn lấy hết list mã cổ phiếu ạ