Vnstock Logo

Tỷ giá ngân hàng (Retail)

Mở rộng

Mục lục

Ai dùng đượ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àmLàm gìCấp
Retail().exchange_rate()Bảng tỷ giá Vietcombank của một ngàyMọi cấp
Retail().gold()Đã ngừng, xem mục 3—

1. Khởi tạo

Python
from vnstock import Retail

ret = Retail()

Retail() không nhận tham số.


2. Tỷ giá ngoại tệ — exchange_rate()

Python
exchange_rate(date="")
Tham sốKiểuMặc địnhÝ nghĩa
datestr""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.

Python
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:

Python
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ộtKiểuÝ nghĩa
currency_codestringMã tiền tệ, viết hoa: USD, EUR, JPY…
currency_namestringTên tiền tệ theo Vietcombank, tiếng Anh viết hoa
buy_cashfloat64Giá mua tiền mặt, VND
buy_transferfloat64Giá mua chuyển khoản, VND
sellfloat64Giá bán, VND
datedatetime64[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_codecurrency_namebuy_cashbuy_transferselldate
USDUS DOLLAR25660.0025690.0026070.002026-10-10 00:00:00+07:00
EUREURO28331.7328617.9029826.122026-10-10 00:00:00+07:00
GBPUK POUND STERLING33402.9433740.3434821.752026-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ọiTì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:

Text
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:

Python
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:
        raise

Giá 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ểmBản 4.xThế hệ 5
Cách gọiRetail().exchange_rate(date="")Giữ nguyên
NguồnVietcombankVietcombank (vcb)
Cộtcurrency_code, currency_name, buy_cash, buy_transfer, sell, dateGiữ 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 dateChuỗi YYYY-MM-DDMốc thời gian, múi giờ Việt Nam
Ngày sai dạngIn lỗi ra màn hình rồi vẫn gửi truy vấnNém InputError, không gửi truy vấn
Thư viện phụ cần càiopenpyxl (đọc tệp Excel)Không cần
CấpBản Cộng đồngMọi cấp, kể cả Khách không khoá
Retail().gold()Ngừng từ 4.1.1Vẫ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.