Tỷ giá ngân hàng (Retail)
Mục lục
Retail().exchange_rate() mở cho mọi cấp: Khách (không khoá), Cộng đồng và Tài trợ.
Retail() gom dữ liệu bạn gặp khi giao dịch tại quầy ngân hàng. Ở thế hệ 5 lớp này có một hàm
đang chạy: bảng tỷ giá ngoại tệ Vietcombank niêm yết trong một ngày. Muốn tỷ giá thị trường quốc tế
(ví dụ EURUSD, USDJPY) theo nến, xem Tiền mã hoá, ngoại hối, hàng hoá và chỉ số thế giới.
| Hàm | Làm gì | Cấp |
|---|---|---|
Retail().exchange_rate() | Bảng tỷ giá Vietcombank của một ngày | Mọi cấp |
Retail().gold() | Đã ngừng, xem mục 3 | — |
1. Khởi tạo
from vnstock import Retail
ret = Retail()Retail() không nhận tham số.
2. Tỷ giá ngoại tệ — exchange_rate()
exchange_rate(date="")| Tham số | Kiểu | Mặc định | Ý nghĩa |
|---|---|---|---|
date | str | "" | Ngày cần xem, dạng YYYY-MM-DD. Để trống là bảng hôm nay |
Cấp: mọi cấp. Nguồn: vcb (Vietcombank). Hàm không có tham số source.
from vnstock import Retail
today = Retail().exchange_rate()
oct9 = Retail().exchange_rate("2026-10-09")
usd = today.loc[today["currency_code"] == "USD", "sell"].iloc[0]Ngày sai dạng thì nhận InputError và thư viện không gửi truy vấn:
Retail().exchange_rate("10/10/2026")
# InputError: date phải có dạng YYYY-MM-DD, nhận được "10/10/2026"Cột trả về
Mỗi ngoại tệ một dòng; chạy ngày 10/10/2026 bảng có 20 dòng.
| Cột | Kiểu | Ý nghĩa |
|---|---|---|
currency_code | string | Mã tiền tệ, viết hoa: USD, EUR, JPY… |
currency_name | string | Tên tiền tệ theo Vietcombank, tiếng Anh viết hoa |
buy_cash | float64 | Giá mua tiền mặt, VND |
buy_transfer | float64 | Giá mua chuyển khoản, VND |
sell | float64 | Giá bán, VND |
date | datetime64[ns, Asia/Ho_Chi_Minh] | Ngày của bảng tỷ giá, 0 giờ giờ Việt Nam |
Ô nào ngân hàng không niêm yết thì hàm trả NaN, không trả 0 (bảng ngày 10/10/2026 không có ô trống).
Cột date mang múi giờ Việt Nam (+07:00). Cần ngày trơn thì lấy df["date"].dt.date.
df.attrs["source"] là "vcb", df.attrs["length"] là số dòng.
Dữ liệu mẫu
Retail().exchange_rate() chạy ngày 10/10/2026 (3 dòng đầu):
| currency_code | currency_name | buy_cash | buy_transfer | sell | date |
|---|---|---|---|---|---|
| USD | US DOLLAR | 25660.00 | 25690.00 | 26070.00 | 2026-10-10 00:00:00+07:00 |
| EUR | EURO | 28331.73 | 28617.90 | 29826.12 | 2026-10-10 00:00:00+07:00 |
| GBP | UK POUND STERLING | 33402.94 | 33740.34 | 34821.75 | 2026-10-10 00:00:00+07:00 |
Tên cũ
vnstock.explorer.misc.vcb_exchange_rate(date) của bản 4.x vẫn chạy: hàm cảnh báo
DeprecationWarning rồi gọi Retail().exchange_rate(date=date). Viết mới thì dùng Retail().
3. Đã ngừng
| Lời gọi | Tình trạng |
|---|---|
Retail().gold() | Ngừng từ 5.0.0a3. Không còn giá vàng SJC hay BTMC |
vnstock.explorer.misc.btmc_goldprice() | Ngừng từ 5.0.0a3 |
Hai hàm vẫn còn tên, để mã cũ không vỡ lúc nạp. Khi gọi, bạn nhận UnsupportedError mã
VNSTOCK_FEATURE_REMOVED:
UnsupportedError: `Retail().gold()` đã ngừng hỗ trợ từ vnstock 5.0.0a3 và không còn trả dữ liệu.Mã cũ có gọi gold() thì bắt lỗi để chương trình chạy tiếp:
from vnstock import Retail
from vnstock.core.exceptions import UnsupportedError
try:
gold = Retail().gold()
except UnsupportedError as e:
if e.code == "VNSTOCK_FEATURE_REMOVED":
gold = None
else:
raiseGiá vàng thế giới theo USD vẫn lấy được bằng Market().commodity("XAUUSD").ohlcv(), xem
Tiền mã hoá, ngoại hối, hàng hoá và chỉ số thế giới. Giá vàng
miếng trong nước không có hàm thay thế.
4. Khác bản 4.x
| Điểm | Bản 4.x | Thế hệ 5 |
|---|---|---|
| Cách gọi | Retail().exchange_rate(date="") | Giữ nguyên |
| Nguồn | Vietcombank | Vietcombank (vcb) |
| Cột | currency_code, currency_name, buy_cash, buy_transfer, sell, date | Giữ nguyên tên |
| Kiểu cột giá | Chuỗi chữ | Số float64; sắp xếp, so sánh, tính toán được ngay |
Cột date | Chuỗi YYYY-MM-DD | Mốc thời gian, múi giờ Việt Nam |
| Ngày sai dạng | In lỗi ra màn hình rồi vẫn gửi truy vấn | Ném InputError, không gửi truy vấn |
| Thư viện phụ cần cài | openpyxl (đọc tệp Excel) | Không cần |
| Cấp | Bản Cộng đồng | Mọi cấp, kể cả Khách không khoá |
Retail().gold() | Ngừng từ 4.1.1 | Vẫn ngừng; lỗi có kiểu UnsupportedError mã VNSTOCK_FEATURE_REMOVED |
Mã 4.x đã đổi cột giá sang số bằng astype(float) hay pd.to_numeric vẫn chạy, vì cột đã là số.
So cột date với một chuỗi, ví dụ df["date"] == "2026-10-10", vẫn cho kết quả đúng. Mã ghép
cột date như chuỗi (cộng chuỗi, cắt ký tự) thì đổi trước bằng df["date"].dt.strftime("%Y-%m-%d").
Chi tiết chuyển mã khác ở Chuyển đổi từ vnstock 4.x.