Tính đến 22/10/2026, bốn công ty chứng khoán (CTCK) công bố API cho nhà đầu tư cá nhân tự đặt lệnh bằng code: SSI (FastConnect), DNSE (LightSpeed API), TCBS (OpenAPI) và VPBankS (NEO API), cả bốn hỗ trợ cổ phiếu lẫn phái sinh. Yuanta có cổng đặt lệnh theo chuẩn FIX, xếp trong nhóm dịch vụ khách hàng tổ chức. Bài này so sánh cách đăng ký, xác thực, môi trường thử, phí, giới hạn tần suất, nguồn dữ liệu giá, và các chốt chặn rủi ro cần có trước khi cho bot chạy bằng tiền thật (nền tảng chung ở bài giao dịch thuật toán).
API chứng khoán là gì, khác gì app giao dịch?
API (giao diện lập trình ứng dụng) là cổng để chương trình của bạn gọi thẳng hệ thống của CTCK: lấy giá, xem tài khoản, đặt, sửa, hủy lệnh, thay cho thao tác bấm tay trên app. Lệnh đi qua API vẫn vào đúng tài khoản của bạn, chịu cùng biểu phí và cùng quy chế của Sở như lệnh đặt trên app. Khác biệt nằm ở tốc độ phản ứng, khả năng lặp lại quy tắc một cách kỷ luật, và việc mọi lỗi trong code là lỗi của bạn.
Một bộ API chứng khoán thường có hai phần:
- Trading API: xác thực, truy vấn số dư, sức mua, vị thế, đặt, sửa, hủy lệnh. Giao tiếp chủ yếu qua REST (mỗi yêu cầu một lần gọi HTTP).
- Market Data API: giá khớp, độ sâu thị trường, chỉ số, dữ liệu nến (OHLC). Dữ liệu thời gian thực đẩy qua WebSocket hoặc kênh streaming để không phải hỏi liên tục.
Người từng viết EA cho MT4, MT5 sẽ thấy quen: thay OrderSend bằng một lệnh gọi REST, thay OnTick bằng một callback nhận dữ liệu từ WebSocket. Nhưng EA không chạy trực tiếp được trên các API này; bài chứng khoán phái sinh và forex phân tích phần nào mang sang được.
Công ty chứng khoán nào cho cá nhân đặt lệnh qua API?
SSI, DNSE, TCBS và VPBankS. Cả bốn cho đặt, sửa, hủy lệnh cổ phiếu và phái sinh; TCBS và VPBankS ghi rõ miễn phí, DNSE là nơi duy nhất có sandbox công khai.
| Tiêu chí | SSI FastConnect | DNSE LightSpeed API | TCBS OpenAPI | VPBankS NEO API |
|---|---|---|---|---|
| Sản phẩm | Cổ phiếu, phái sinh, dữ liệu | Cổ phiếu, phái sinh, dữ liệu | Cổ phiếu, phái sinh, dữ liệu | Cổ phiếu, phái sinh, dữ liệu |
| Cách đăng ký | Tại quầy hoặc qua nhân viên môi giới, kích hoạt trên iBoard | Tự đăng ký trên trang giao dịch DNSE | Tự đăng ký trên TCInvest | Tự đăng ký trên NEO Invest Web |
| Khóa và chữ ký | ConsumerID, ConsumerSecret, PrivateKey ký RSA-SHA256 | API Key, API Secret ký HMAC-SHA256 | API Key | Đăng nhập lấy JWT |
| Xác thực lớp 2 | PIN, SMS OTP, Email OTP hoặc Smart OTP | Email OTP hoặc Smart OTP | Smart OTP (iOTP) trên TCInvest | Smart OTP, MFA |
| Thời hạn token | 8 giờ | Trading Token 8 giờ | Tối đa 8 giờ | Không nêu |
| IP cố định | Đăng ký trên iBoard | Không nêu | Không nêu | Bắt buộc, tối đa 5 IP |
| Môi trường thử | Không thấy công bố | Có sandbox | Không thấy công bố | Chưa có |
| Giới hạn tần suất | Theo tài khoản, tra bằng API rateLimit | Theo API Key và từng endpoint | Không nêu | 5 request/giây |
| Phí API | Chưa công bố | Chưa công bố | Miễn phí đăng ký | Miễn phí |
| Mã mẫu, SDK | Python, Node.js, Java, .NET trên GitHub | SDK của DNSE | File OpenAPI 3.0, Postman | Ví dụ cURL |
Cập nhật 22/10/2026 theo tài liệu chính thức của từng CTCK. “Không nêu”, “chưa công bố” nghĩa là tài liệu công khai không ghi, không có nghĩa là không có.
SSI FastConnect
FastConnect gồm FC Trading (tài khoản, đặt lệnh, trạng thái lệnh) và FC Data (giá thời gian thực). Cách đăng ký theo tài liệu của SSI:
- Có tài khoản giao dịch tại SSI, đăng ký dịch vụ tại quầy hoặc qua nhân viên môi giới (đăng ký từ xa qua bưu điện cũng được).
- Khi được duyệt, bấm đường link trong email để hoàn tất trên iBoard.
- Tạo bộ khóa tại trang Dịch vụ API của iBoard, gồm ConsumerID, ConsumerSecret và PrivateKey. Bộ khóa chỉ hiển thị một lần; đăng ký IP cố định ngay trên trang này.
Khi xin access token, ngoài ConsumerID và ConsumerSecret bạn phải gửi mã xác thực theo phương thức đã đăng ký: PIN, SMS OTP, Email OTP hoặc Smart OTP; SSI cho biết phương thức PIN sẽ sớm dừng hỗ trợ. Token có hiệu lực 8 giờ. Các lệnh làm thay đổi tiền, chứng khoán (đặt, sửa, hủy lệnh, chuyển tiền, nộp rút ký quỹ phái sinh) phải ký số bằng PrivateKey. Mỗi lệnh đặt còn yêu cầu deviceId (định danh thiết bị như địa chỉ MAC) và requestID gồm 8 chữ số.
Giới hạn tần suất tính theo tài khoản với FC Trading, theo bộ khóa với FC Data; API rateLimit trả về mức áp cho bạn (ví dụ trong tài liệu: 5 request mỗi giây và 30 request mỗi 5 giây). Dịch vụ có kỳ hạn 1 năm và phải gia hạn. Streaming dùng tham số notify_id để nối lại từ đúng thông điệp cuối cùng khi mất kết nối. Với phái sinh, FC Trading có lệnh điều kiện: dừng, trailing, OCO và chốt lời cắt lỗ hai đầu. FC Data có thêm dữ liệu lô lẻ từ 18/02/2025.
DNSE LightSpeed API
DNSE mở LightSpeed API cho mọi khách hàng có tài khoản đang hoạt động. Đăng ký trên trang giao dịch: vào Thông tin tài khoản, chọn LightSpeed API, chọn một phương thức xác thực lớp 2 (Smart OTP hoặc Email OTP, tối đa 2 địa chỉ email), xác nhận OTP. Hệ thống cấp API Key và API Secret; Secret chỉ hiển thị một lần.
Điểm kỹ thuật cần biết:
- Mọi request REST phải có header
X-Api-Key,X-SignaturevàDate. Chữ ký là HMAC-SHA256 trên chuỗi gồm method, path, Date và một nonce 32 ký tự sinh mới mỗi lần, mã hóa Base64. Giờ trong header Date không được lệch quá ±1 phút so với máy chủ DNSE, nên máy chạy bot cần đồng bộ giờ. - Trading Token có hiệu lực 8 giờ, lấy bằng OTP: Email OTP hiệu lực 2 phút, Smart OTP 30 giây. Tài liệu DNSE ghi Email OTP có thể tự động hóa (ứng dụng tự đọc mã qua IMAP), đổi lại phụ thuộc bên thứ ba và có thể trễ.
- Giới hạn tần suất theo API Key và từng endpoint: đặt, sửa, hủy lệnh mỗi loại 50.000 request/giờ và 100.000 request/ngày; gửi Email OTP 100 request/giờ. Vượt giới hạn trả mã 429, vượt quota ngày trả mã 403.
- WebSocket (wss://ws-openapi.dnse.com.vn): tối đa 10 kết nối mỗi người dùng, 200 luồng mỗi kết nối; mỗi kết nối sống tối đa 8 giờ; máy chủ gửi PING mỗi 3 phút và ngắt nếu không nhận PONG trong 1 phút.
- Sandbox (sb-openapi.dnse.com.vn) dùng khóa riêng, dữ liệu giả lập, lệnh tự chuyển trạng thái đến khớp; chỉ để kiểm thử tích hợp, không dùng để đo hiệu năng.
Bài giới thiệu ngày 08/06/2026 của DNSE không nêu phí sử dụng API. DNSE cũng cho kết nối tài khoản với TradingView để đặt lệnh từ biểu đồ.
TCBS OpenAPI
TCBS cho tự đăng ký iFlash Open API miễn phí trên TCInvest (Menu trái, Tiện ích, iFlash Open API). Bạn đổi API Key cùng mã Smart OTP (iOTP) trên app TCInvest để lấy JWT token, hiệu lực tối đa 8 giờ. API Key có thời hạn và gia hạn được bằng OTP; khóa đã hết hạn thì phải tạo khóa mới.
Tài liệu chia 7 nhóm: xác thực, tài khoản, tiền (chuyển tiền nội bộ, nộp rút ký quỹ), lệnh cổ phiếu, dữ liệu cổ phiếu, lệnh phái sinh (gồm lệnh điều kiện) và dữ liệu phái sinh, có các kênh WebSocket cho bảng giá và khớp lệnh. TCBS cung cấp file đặc tả OpenAPI 3.0, bộ Postman và bản PDF. Trang tài liệu không nêu giới hạn tần suất hay môi trường thử nghiệm.
VPBankS NEO API
VPBankS công bố NEO API ngày 12/10/2026, cho cả khách cá nhân và tổ chức, miễn phí. Điều kiện: tài khoản đang hoạt động, đã kích hoạt Smart OTP và có IP public cố định (đăng ký tối đa 5 IP; hệ thống chỉ nhận kết nối từ IP đã đăng ký). Đăng ký trên NEO Invest Web, chọn NEO API ở mục Cơ sở hoặc Phái sinh, khai IP, xác nhận bằng Smart OTP, chờ trạng thái “Đang hoạt động”.
Tài liệu NEO OpenAPI ghi giao thức REST và WebSocket, xác thực bằng JWT, 6 kênh streaming (chỉ số, cổ phiếu, phiên, lệnh) và giới hạn 5 request/giây. VPBankS nói rõ NEO API chưa có môi trường thử nghiệm riêng và lệnh đặt qua API là lệnh thật trên thị trường.
Yuanta và các CTCK khác
- Yuanta Fixed Gateway (trang ngày 10/07/2025) cho đặt lệnh theo chuẩn FIX, nằm trong menu khách hàng tổ chức. Quy trình: mở tài khoản, đăng ký kèm 1 địa chỉ IP tĩnh, thử nghiệm và xác nhận trên hệ thống UAT, rồi cấu hình môi trường thật.
- Finhay MCP (15/04/2026) cho trợ lý AI như Claude, ChatGPT đọc dữ liệu thị trường và danh mục; chức năng đặt lệnh ghi “sắp ra mắt”, đang miễn phí trong giai đoạn thử nghiệm.
- VNDirect: chỉ thấy Open API cho tổ chức và nhà đầu tư chuyên nghiệp (trang lưu năm 2022), chưa thấy API cho cá nhân.
- Với VPS, MBS, HSC, Vietcap, KIS, Mirae Asset, KBSV, Pinetree và các CTCK khác trong dữ liệu của chúng tôi, chưa tìm thấy API giao dịch công khai cho cá nhân (tra cứu 10/2026).
Lấy dữ liệu giá chứng khoán Việt Nam miễn phí ở đâu?
Nguồn miễn phí và chính thống nhất là API dữ liệu của CTCK nơi bạn có tài khoản; dữ liệu đó dùng cho chính bạn, không phải để bán lại.
| Nguồn | Dữ liệu | Chi phí | Điều kiện, lưu ý |
|---|---|---|---|
| SSI FC Data | Danh sách mã, OHLC ngày và trong phiên, chỉ số; streaming bid/ask, khớp lệnh, room nước ngoài, lô lẻ | Chưa công bố phí | Khách SSI đã đăng ký FastConnect |
| DNSE Market Data | OHLC lịch sử, khớp lệnh, bid/ask, chỉ số, dữ liệu khối ngoại, giá dự khớp; streaming | Chưa công bố phí | Khách DNSE đã đăng ký LightSpeed API |
| TCBS OpenAPI | Giá, lịch sử khớp, cung cầu, nến OHLCV; WebSocket bảng giá cơ sở và phái sinh | Miễn phí đăng ký | Khách TCBS |
| VPBankS NEO API | Chỉ số, danh sách và chi tiết giá cổ phiếu, phái sinh; streaming | Miễn phí | Khách VPBankS, IP cố định |
| Dịch vụ thông tin thị trường của HOSE | Data feed giao dịch, chỉ số, thống kê | Theo hợp đồng | Dành cho nhà cung cấp thông tin, tổ chức cần tốc độ cao, có quyền phân phối lại |
| Thư viện cộng đồng (ví dụ vnstock) | Lấy từ nguồn bên thứ ba | Bản cộng đồng miễn phí cho cá nhân, học tập, nghiên cứu | Giấy phép không cấp quyền dùng dữ liệu của nguồn bên thứ ba; bạn tự kiểm tra điều kiện từng nguồn |
Cập nhật 22/10/2026.
Vnstock là thư viện Python phổ biến, nhưng giấy phép bản license-2026.09 nói rõ hai điều: giấy phép chỉ áp cho phần mềm, không cấp quyền sử dụng dữ liệu của nguồn bên thứ ba; và việc phân phối lại hoặc vận hành sản phẩm mà giá trị chính là cấp dữ liệu thị trường cho người khác cần thỏa thuận riêng bằng văn bản. Đây cũng là nguyên tắc chung khi tự viết công cụ thu thập dữ liệu từ website: đọc điều khoản sử dụng trước, và đừng dựng sản phẩm thương mại trên một nguồn không cho phép.
Kết nối API thế nào?
Luồng chung gồm 4 bước: tạo khóa trên app hoặc web của CTCK, xác thực lớp 2 bằng OTP để nhận token khoảng 8 giờ, gọi REST để đặt lệnh, mở WebSocket để nhận giá và trạng thái lệnh. Khác nhau giữa các CTCK chủ yếu ở cách ký request (RSA với SSI, HMAC với DNSE) và cách lấy OTP.
Kiến trúc tối thiểu cho một bot
Một bot chạy được lâu không chỉ có chiến lược. Tối thiểu nên tách 6 phần:
- Market data: nhận WebSocket, ghi thời điểm nhận từng gói tin để phát hiện dữ liệu cũ.
- State: sổ lệnh, vị thế, tiền, đối chiếu định kỳ với dữ liệu của CTCK thay vì chỉ tin vào bộ nhớ của bot.
- Strategy: chỉ sinh tín hiệu, không gọi API đặt lệnh trực tiếp.
- Risk gate: kiểm tra mọi lệnh trước khi gửi.
- Order gateway: ký request, gửi lệnh, xử lý lỗi 429, làm mới token trước khi hết 8 giờ.
- Kill switch và log: một công tắc hủy hết lệnh chờ, dừng bot; log đủ để dựng lại mọi quyết định.
Mã giả dưới đây minh họa vòng lặp chính, không gắn với API của CTCK nào và không chứa khóa thật:
# Mã giả minh họa. Khóa API đọc từ biến môi trường, không ghi trong code, không đẩy lên git.
cfg = load_config_from_env()
broker = BrokerClient(cfg) # lớp bọc REST + WebSocket của CTCK
risk = RiskGate(max_qty=cfg.max_qty, max_orders_per_min=cfg.max_rate,
max_daily_loss=cfg.max_loss)
broker.ensure_token() # OTP -> token, tự làm mới trước khi hết hạn
for event in broker.stream(["quotes", "orders", "positions"]):
state.update(event)
if state.data_is_stale(seconds=5) or risk.is_killed(state):
broker.cancel_all_open_orders()
continue
signal = strategy.on_event(state)
if signal is None:
continue
order = build_order(signal, state) # giá trong trần/sàn, khối lượng đúng lô
ok, reason = risk.check(order, state)
if not ok:
log.warning("blocked: %s", reason)
continue
order.request_id = new_request_id() # chống gửi trùng khi thử lại
broker.place(order) # chỉ gửi lại khi chắc lệnh trước chưa vào sàn
risk.record(order)
Lỗi hay gặp nhất khi chuyển từ backtest sang chạy thật không nằm ở chiến lược mà ở trạng thái: mất kết nối giữa lúc lệnh đang chờ, gửi lại một lệnh đã khớp, token hết hạn giữa phiên. Hãy test riêng từng tình huống này trước khi test lợi nhuận.
Dùng API và bot đặt lệnh có hợp pháp không?
API là kênh giao dịch điện tử do chính CTCK cung cấp cho tài khoản đứng tên bạn. Tính đến 22/10/2026, chưa có luật, nghị định hay thông tư nào cấm hoặc cho phép riêng giao dịch thuật toán của nhà đầu tư cá nhân, nhưng năm 2023 UBCKNN coi việc dùng robot đặt lệnh tự động là “chưa được phép thực hiện” và đến nay chưa làm rõ lại. Những điểm cần biết:
- Khung giao dịch điện tử đang được thay. Bộ Tài chính đang soạn thông tư thay Thông tư 134/2017/TT-BTC và 73/2020/TT-BTC. Theo Thời báo Tài chính (08/07/2026), dự thảo lần đầu có mục riêng về Open API khi CTCK kết nối với bên thứ ba: công khai danh sách đối tác, kiểm soát phạm vi truy cập dữ liệu, giới hạn tần suất truy cập, lưu nhật ký và cho khách hàng quyền đồng ý hoặc rút lại việc chia sẻ dữ liệu. Bài ngày 15/08/2026 cho biết dự thảo tập trung vào định danh, xác thực khi đặt lệnh trực tuyến và khi rút, chuyển tiền. Văn bản vẫn là dự thảo.
- Tiền lệ năm 2023 với robot đặt lệnh tự động. Tháng 09/2023, UBCKNN cho rằng việc dùng robot để đặt lệnh “chưa được phép thực hiện”, yêu cầu các CTCK rà soát và dừng ngay hình thức đặt lệnh tự động, có biện pháp kỹ thuật để ngăn chặn, đồng thời yêu cầu nhà đầu tư chấm dứt hình thức này (VnEconomy, VOV 13/09/2023). Tính đến 22/10/2026, chúng tôi chưa thấy văn bản công khai nào thu hồi hay làm rõ yêu cầu này. UBCKNN không nêu ngưỡng tần suất nào được chấp nhận; việc giữ bot đặt lệnh thưa, dưới giới hạn CTCK công bố chỉ là cách giảm rủi ro theo cách hiểu của chúng tôi, không phải điều kiện để được phép. Phân tích pháp lý chi tiết nằm ở bài bot giao dịch phái sinh.
- Cấm thao túng. Điều 12 khoản 3 Luật Chứng khoán 2019 (sửa bởi Luật 56/2024/QH15, hiệu lực 01/01/2025) cấm thao túng thị trường, và khoản 49 Điều 4 (bổ sung bởi cùng luật) định nghĩa thao túng gồm cả việc dùng một hoặc nhiều tài khoản liên tục mua, bán để tạo cung cầu giả tạo. Logic đặt, hủy lệnh dày đặc của bot cần được rà theo quy định này.
- Không giao khóa cho người khác. SSI và DNSE đều yêu cầu không chia sẻ khóa kết nối. Người nhận “chạy bot hộ” trên tài khoản của bạn để thu phí hoặc chia lãi có thể đang kinh doanh, cung cấp dịch vụ chứng khoán khi chưa được UBCKNN cấp phép, hành vi bị cấm theo Điều 12 khoản 4 Luật Chứng khoán 2019.
- Lệnh qua API là lệnh thật. VPBankS ghi rõ điều này; mọi kết quả, kể cả do lỗi code, bạn tự chịu.
Checklist kiểm soát rủi ro trước khi cho bot chạy tiền thật
- Giới hạn khối lượng mỗi lệnh thấp hơn nhiều so với giới hạn của Sở (HOSE tối đa 500.000 cổ phiếu mỗi lệnh lô chẵn; HĐTL VN30 tối đa 500 hợp đồng mỗi lệnh).
- Giới hạn vị thế tối đa theo mã và tổng giá trị.
- Giới hạn lỗ trong ngày: chạm mức là hủy lệnh chờ, đóng hoặc giữ vị thế theo quy tắc định sẵn, rồi dừng bot.
- Bộ đếm tần suất đặt dưới giới hạn của CTCK, có chờ tăng dần khi nhận lỗi 429.
- Kiểm tra giá trước khi gửi: trong khoảng trần, sàn; đúng bước giá; khối lượng cổ phiếu là bội số 100 (lô lẻ 1–99 đặt riêng).
- Chống lệnh trùng: mỗi lệnh một mã yêu cầu duy nhất; khi timeout, tra sổ lệnh trước khi gửi lại.
- Phát hiện dữ liệu cũ: không nhận tick quá vài giây trong phiên thì ngừng ra quyết định.
- Nối lại kết nối đúng cách: SSI dùng
notify_id, DNSE yêu cầu trả PONG; sau khi nối lại, đối chiếu vị thế với CTCK. - Làm mới token trước mốc 8 giờ, tránh đứt giữa phiên.
- Tôn trọng phiên định kỳ: với cổ phiếu trên HOSE, trong phiên ATO (9h00–9h15) và ATC (14h30–14h45) không sửa, hủy được lệnh nào, kể cả lệnh LO đặt từ trước, và giờ nghỉ trưa 11h30–13h00 cũng không nhập lệnh sửa, hủy (Quy chế niêm yết và giao dịch chứng khoán niêm yết, Quyết định 22/QĐ-HĐTV ngày 16/03/2026); phái sinh có ngày đáo hạn thứ Năm thứ ba mỗi tháng.
- Quản lý khóa: lưu trong biến môi trường hoặc kho bí mật, không commit lên git, giới hạn IP nếu CTCK hỗ trợ, tạo lại khóa ngay khi nghi lộ.
- Thử trước, tăng sau: sandbox nếu có (DNSE), sau đó chạy khối lượng nhỏ nhất (100 cổ phiếu hoặc 1 hợp đồng) một thời gian.
- Kill switch thủ công: một lệnh hoặc một nút hủy mọi lệnh chờ và dừng bot, chạy được cả khi chiến lược đang lỗi.
Backtest phải trừ đủ phí, thuế. Với VN30F, mỗi lượt đã gồm phí CTCK, phí Sở, phí bù trừ và thuế; bài giao dịch phái sinh ở đâu so sánh phần phí giữa các CTCK.
Chọn API theo nhu cầu
Không có API tốt nhất cho mọi người; chọn theo sản phẩm bạn giao dịch, mức độ tự động hóa bạn cần và việc có cần thử nghiệm trước hay không.
| Nhu cầu | Điểm cần xem |
|---|---|
| Muốn thử code trước khi dùng tiền thật | DNSE là nơi duy nhất trong nhóm có sandbox công khai |
| Bot chạy không cần người cầm điện thoại | Cách lấy OTP: DNSE cho Email OTP tự động hóa được; TCBS cần iOTP trên app mỗi lần lấy token; SSI có SMS, Email OTP, Smart OTP |
| Máy chủ không có IP cố định | VPBankS bắt buộc IP cố định; SSI có đăng ký IP trên iBoard |
| Bot phái sinh VN30F | Cả 4 CTCK hỗ trợ; so phí mỗi hợp đồng và lệnh điều kiện qua API |
| Chỉ cần dữ liệu | API dữ liệu của CTCK bạn đang mở tài khoản |
| Muốn tích hợp chuẩn FIX | Yuanta Fixed Gateway, nhóm khách hàng tổ chức |
Review Chứng Khoán không khuyến nghị dùng bot hay chiến lược tự động cụ thể nào. API chỉ là công cụ đặt lệnh nhanh và đều tay hơn; nó không biến một chiến lược lỗ thành có lãi. Bot hay dịch vụ quảng cáo lợi nhuận cố định mỗi tháng là dấu hiệu nên tránh.



