Bảng giá giao dịch
Cập nhật lần cuối:
Thảo luậnMục lục
Gợi ý
Các hàm tra cứu thông tin trong mục này cho phép bạn truy xuất dữ liệu bảng giá chứng khoán theo thời gian thực. Hỗ trợ cả hai nguồn dữ liệu KBS và VCI với cấu trúc và độ chi tiết khác nhau.
Hướng dẫn sử dụng
Notebook minh hoạ: Dành cho người học data, muốn thực hành trực tiếp với các ví dụ mẫu.
Agent Guide: Dành cho người theo trường phái Vibe Coding, muốn viết chương trình hiệu quả với AI.
So sánh nguồn dữ liệu
| Phương thức | KBS | VCI | Ghi chú |
|---|---|---|---|
| price_board() | ✅ | ✅ | KBS: 29 cột, VCI: 77 cột |
Khuyến nghị:
- KBS: Dữ liệu gọn gàng, ổn định, 29 cột, phù hợp sử dụng thường xuyên
- VCI: Dữ liệu cực kỳ chi tiết, 77 cột với MultiIndex, phù hợp phân tích chuyên sâu
Khởi tạo Trading
KBS Trading (Khuyến nghị)
Python
from vnstock import Trading
# Khởi tạo với KBS
trading_kbs = Trading(source="KBS", symbol="VCI")VCI Trading
Python
# Khởi tạo với VCI
trading_vci = Trading(source="VCI", symbol="VCI")Các tham số chung:
source(str): Nguồn dữ liệu - 'KBS' hoặc 'VCI'symbol(str): Mã chứng khoán mặc định
Bảng giá thị trường
KBS Source
Gọi hàm
Python
from vnstock import Trading
trading = Trading(source="KBS", symbol="VCI")
board = trading.price_board(symbols_list=['VCI', 'VCB', 'ACB'])
print(f"Shape: {board.shape}") # (3, 29)Dữ liệu mẫu KBS:
Shell
>>> trading.price_board(symbols_list=['VCI', 'VCB'])
symbol exchange reference_price price_change percent_change ... ask_price_3 ask_vol_3 foreign_buy_volume foreign_sell_volume
0 VCI HOSE 36150 500 1.383126 ... 36200 100 12345 67890
1 VCB HOSE 69800 700 1.002865 ... 69900 200 23456 34567
[2 rows x 29 columns]Các cột chính KBS:
symbol,exchange: Mã CK và sànreference_price: Giá tham chiếuprice_change,percent_change: Thay đổi giá và %open_price,high_price,low_price,close_price: OHLCtotal_trades,total_value: Tổng số giao dịch và giá trịbid_price_1/2/3,bid_vol_1/2/3: 3 mức giá muaask_price_1/2/3,ask_vol_1/2/3: 3 mức giá bánforeign_buy_volume,foreign_sell_volume: Khối lượng NĐT
VCI Source
Gọi hàm
Python
from vnstock import Trading
trading = Trading(source="VCI", symbol="VCI")
board = trading.price_board(symbols_list=['VCI', 'VCB'])
print(f"Shape: {board.shape}") # (2, 77)Dữ liệu mẫu VCI:
Shell
>>> trading.price_board(symbols_list=['VCI'])
listing symbol listing ref_price match match_price match match_vol ... bid_ask ask_3_price bid_ask ask_3_volume
0 VCI 36150 36200 123456 ... 36300 1000
1 VCB 69800 69900 234567 ... 70000 2000
[2 rows x 77 columns]Cấu trúc MultiIndex VCI (77 columns):
LISTING (24 cột):
symbol: Mã chứng khoánceiling,floor: Giá trần, giá sànref_price: Giá tham chiếustock_type: Loại cổ phiếuexchange: Sàn giao dịchtrading_status,trading_status_code,trading_status_group: Trạng thái giao dịchsecurity_status: Trạng thái chứng khoánlast_trading_date: Ngày giao dịch cuốiissue_date: Ngày phát hànhlisted_share: Số lượng niêm yếtcoupon_rate,yield: Lãi suất coupon, lợi suấtorgan_name: Tên tổ chức phát hànhmapping_symbol: Mã mappingproduct_grp_id,partition: ID sản phẩm, phân loạiindex_type: Loại chỉ số
MATCH (38 cột):
match_price,match_vol: Giá và khối lượng khớp lệnhaccumulated_value,accumulated_volume: Giá trị và khối lượng tích lũyaccumulated_value_g1,accumulated_volume_g1: Tích lũy phiên G1open_price,highest,lowest: Giá mở cửa, cao nhất, thấp nhấtavg_match_price: Giá khớp lệnh trung bìnhforeign_buy_volume,foreign_sell_volume: Khối lượng NĐT mua/bánforeign_buy_value,foreign_sell_value: Giá trị NĐT mua/bántotal_room: Dư roomcurrent_room: Room hiện tạitotal_buy_orders,total_sell_orders: Tổng lệnh mua/bánmatch_price_ato,match_volume_ato: Giá/khối lượng ATOmatch_price_atc,match_volume_atc: Giá/khối lượng ATCtrading_session_id: ID phiên giao dịchfirst_time_match_price: Giá khớp lần đầumatch_type: Loại khớp lệnhunderlying,open_interest: Cơ sở, vị thế mở
BID_ASK (15 cột):
transaction_time: Thời gian giao dịchbid_count,ask_count: Số lệnh mua/bánbid_1_price,bid_1_volume: Mức 1 - Giá/khối lượng muabid_2_price,bid_2_volume: Mức 2 - Giá/khối lượng muabid_3_price,bid_3_volume: Mức 3 - Giá/khối lượng muaask_1_price,ask_1_volume: Mức 1 - Giá/khối lượng bánask_2_price,ask_2_volume: Mức 2 - Giá/khối lượng bánask_3_price,ask_3_volume: Mức 3 - Giá/khối lượng bán
Truy cập MultiIndex VCI:
Python
import pandas as pd
from vnstock import Trading
# Lấy dữ liệu VCI (vẫn có MultiIndex)
trading = Trading(source="VCI", symbol="VCI")
board = trading.price_board(symbols_list=['VCI', 'VCB'])
# Option 1: Truy cập trực tiếp MultiIndex
listing_info = board[[('listing', 'symbol'), ('listing', 'ref_price'), ('listing', 'exchange')]]
trading_info = board[[('match', 'match_price'), ('match', 'match_vol'), ('match', 'accumulated_value')]]
# Option 2: Flatten columns để dễ sử dụng hơn
board_flat = board.copy()
board_flat.columns = ['_'.join(col).strip() for col in board.columns.values]
# Bây giờ có thể truy cập như bình thường
print(board_flat[['listing_symbol', 'listing_ref_price', 'match_match_price']].head())Khi nào dùng nguồn nào?
Dùng KBS khi:
- Cần dữ liệu nhanh và ổn định
- Chỉ cần thông tin cơ bản (giá, KL, thay đổi)
- Xử lý data đơn giản với flat columns
- Muốn data gọn gàng, dễ sử dụng
Dùng VCI khi:
- Cần phân tích sâu thị trường
- Cần market detail đầy đủ (77 columns)
- Cần thông tin chi tiết về niêm yết và giao dịch
- Muốn data chi tiết với MultiIndex structure
Thảo luận