Bot trading là gì và cách xây con bot đầu tiên

Phái sinh VN30F1MCập nhật 13/09/2026

Bot đọc dữ liệu, so với quy tắc, rồi gửi lệnh. Nghe đơn giản, nhưng khoảng cách từ một đoạn script chạy được tới một hệ thống dám giao tiền thật nằm ở những khối mà người mới thường bỏ qua.

Bot trading là chương trình tự đọc dữ liệu thị trường, so với bộ quy tắc đã lập trình sẵn, rồi tự gửi lệnh mua bán mà không cần người ngồi canh bảng. Định nghĩa thì gọn như vậy, nhưng khoảng cách giữa một đoạn script chạy được trên máy tính cá nhân và một hệ thống dám giao tiền thật thì rất xa — và phần lớn khoảng cách đó nằm ở những khối mà người mới không nghĩ tới.

Bài này đi qua toàn bộ chặng đường đó: bot gồm những gì, chạy trên thị trường Việt Nam ra sao, và những chỗ hỏng mà ai làm bot cũng gặp.

Bot trading là gì

Điểm khác biệt cốt lõi giữa bot và giao dịch tay không nằm ở tốc độ. Nó nằm ở chỗ quy tắc phải viết ra được bằng số.

Khi bạn giao dịch tay, bạn có thể nói "vào lệnh khi thị trường có vẻ mạnh". Bot không hiểu "có vẻ mạnh". Bạn buộc phải dịch câu đó thành một điều kiện cụ thể: giá đóng cửa vượt trung bình 20 phiên, khối lượng phiên hiện tại lớn hơn 1,5 lần khối lượng trung bình 20 phiên, và biên độ dao động trong ngày chưa vượt 2 lần ATR.

Quá trình dịch đó chính là giá trị lớn nhất của việc làm bot, kể cả khi bạn không bao giờ cho nó chạy tiền thật. Nó buộc bạn phát hiện ra rằng rất nhiều "quy tắc" bạn tưởng mình đang theo thực chất không tồn tại.

Năm khối của một con bot

Một con bot chạy được, không phải script một lần, luôn tách thành năm khối riêng. Nhìn thì thừa thãi lúc mới viết, nhưng khi có sự cố lúc 13h45 thì đó là thứ cứu bạn.

Dữ liệutick, nến, sổ lệnhTín hiệuquy tắc vào raRủi rokhối lượng, giới hạnQuản lý lệnhtrạng thái vị thếSànAPI công ty CKnhật ký khớp lệnh quay lại hiệu chỉnh tín hiệu
Tầng rủi ro nằm giữa tín hiệu và lệnh, không phải nằm bên trong tín hiệu. Đây là chỗ người mới hay gộp lại, và là lý do nhiều bot cháy tài khoản dù tín hiệu vẫn đúng.

Khối dữ liệu lấy giá từ nguồn và chuẩn hoá. Nghe đơn giản nhất nhưng là nơi phát sinh nhiều lỗi âm thầm nhất: dữ liệu thiếu một phiên, thời gian lệch múi giờ, giá chưa điều chỉnh cổ tức. Một bot backtest đẹp trên dữ liệu bẩn là bot sẽ thua trên tiền thật.

Khối tín hiệu nhận dữ liệu đã sạch và trả lời đúng một câu: lúc này nên ở trạng thái nào — mua, bán, hay đứng ngoài. Nó không quyết định mua bao nhiêu. Tách bạch điều này ra là bước trưởng thành đầu tiên của người làm bot.

Khối rủi ro nhận tín hiệu rồi mới quyết định khối lượng, và có quyền phủ quyết. Nếu tài khoản đã lỗ quá ngưỡng ngày, nếu số vị thế đang mở vượt giới hạn, nếu biến động thị trường vượt mức cho phép — khối này chặn lệnh lại bất kể tín hiệu nói gì. Xem thêm quản trị vốn và giới hạn thua lỗ để biết đặt các ngưỡng này thế nào.

Khối quản lý lệnh theo dõi vòng đời từng lệnh: đã gửi, đã khớp một phần, đã khớp hết, bị huỷ, bị từ chối. Đây là khối mà người mới hay bỏ hẳn, và cũng là khối gây thiệt hại nặng nhất khi thiếu. Một lệnh gửi đi nhưng mất phản hồi mà bot không biết sẽ dẫn tới lệnh thứ hai, rồi vị thế gấp đôi dự tính.

Khối kết nối sàn gói riêng phần gọi API. Tách ra để đổi công ty chứng khoán mà không phải viết lại toàn bộ logic, và để chạy chế độ mô phỏng bằng cách thay đúng một khối.

Chạy trên thị trường Việt Nam

Bot chạy ở đâu thì phải hiểu luật chơi ở đó. Với phái sinh VN30F1M, có bốn mốc thời gian mà bot buộc phải biết, vì hành vi giá ở mỗi khoảng khác nhau hoàn toàn.

ATOKhớp lệnh liên tụcNghỉ trưaKhớp lệnh liên tụcATC09:0010:0011:0012:0013:0014:0015:00
Lệnh đặt trong phiên ATO và ATC khớp theo cơ chế định kỳ, không phải khớp ngay như phiên liên tục. Bot không phân biệt hai cơ chế này sẽ đặt lệnh sai loại ở đúng lúc quan trọng nhất.

Ngoài giờ phiên, bot giao dịch phái sinh còn phải xử lý ba thứ đặc thù. Thứ nhất là ngày đáo hạn: hợp đồng VN30F1M đáo hạn vào thứ Năm thứ ba hằng tháng, và hành vi giá quanh phiên đó khác hẳn ngày thường. Thứ hai là ký quỹ: vị thế mở đòi hỏi ký quỹ theo tỷ lệ do Tổng công ty Lưu ký và Bù trừ quy định, tỷ lệ này thay đổi theo thời kỳ nên bot phải đọc từ tài khoản chứ đừng ghi cứng trong mã. Thứ ba là hệ số nhân hợp đồng 100.000 đồng cho mỗi điểm chỉ số — một điểm trượt giá không phải con số nhỏ.

Chi tiết từng phần nằm ở cụm phái sinh VN30F1M.

Đường từ ý tưởng tới tiền thật

Đây là chặng mà nhiều người đi tắt, và gần như luôn phải trả học phí.

Bước một là backtest. Chạy quy tắc trên dữ liệu quá khứ để xem nó có từng hoạt động không. Cạm bẫy ở bước này nhiều tới mức cần một bài riêng — nhìn trước tương lai, thiên lệch sống sót, tối ưu tham số tới mức thuộc lòng dữ liệu cũ. Xem backtest thế nào cho đúng trước khi tin vào bất kỳ con số nào bạn tự chạy ra.

Bước hai là chạy song song. Bot nhận dữ liệu thật, tính toán thật, ghi lại lệnh lẽ ra đã đặt, nhưng không gửi gì ra thị trường. Giai đoạn này trả lời câu hỏi mà backtest không trả lời được: hệ thống có chịu nổi dữ liệu thật không, có mất kết nối không, độ trễ bao nhiêu, lệnh lẽ ra khớp ở giá nào.

Bước ba là tiền nhỏ. Không phải tiền thật ngay ở quy mô dự tính, mà ở khối lượng nhỏ nhất có thể. Mục tiêu không phải kiếm lời mà là đo khoảng cách giữa giá bot nghĩ nó khớp và giá thật sự khớp. Khoảng cách đó — trượt giá — là thứ giết nhiều chiến lược đẹp trên giấy hơn bất kỳ yếu tố nào khác.

Bước bốn mới là tăng vốn, và chỉ khi ba bước trên đã cho số liệu ổn định qua nhiều tháng.

Những chỗ hỏng ai cũng gặp

Danh sách dưới đây không phải lý thuyết. Đây là những thứ sẽ xảy ra, câu hỏi chỉ là khi nào.

Mất kết nối giữa phiên. Mạng rớt, API công ty chứng khoán bảo trì, máy chủ khởi động lại. Câu hỏi quan trọng không phải làm sao để không mất kết nối, mà là khi kết nối trở lại thì bot làm gì. Nó có biết mình đang có vị thế không? Nó có đặt lại lệnh đã đặt rồi không?

Lệnh khớp một phần. Bot đặt mua 5 hợp đồng, khớp 2. Nếu mã chỉ xử lý hai trạng thái "chưa khớp" và "đã khớp", nó sẽ hiểu sai vị thế hiện có và tính sai mọi thứ phía sau.

Lệnh bị từ chối. Không đủ ký quỹ, vượt giới hạn vị thế, sai bước giá. Bot phải đọc được lý do từ chối và phản ứng khác nhau với từng loại, chứ không thử lại vô hạn.

Ngắt khẩn cấp. Phải có một cách để dừng mọi thứ ngay lập tức, đóng hết vị thế, và cách đó phải hoạt động kể cả khi bot đã treo. Thường là một tệp cờ trên đĩa mà vòng lặp chính kiểm tra mỗi chu kỳ, cộng với khả năng đóng vị thế bằng tay qua ứng dụng của công ty chứng khoán.

Bắt đầu từ đâu

Nếu bạn đang ở vạch xuất phát, thứ tự hợp lý là: hiểu thị trường mình định giao dịch trước, viết quy tắc ra giấy trước khi viết mã, backtest với thái độ hoài nghi, rồi mới tới chuyện lập trình.

Cụm bài này đi sâu vào từng khối — kiến trúc hệ thống, kết nối API của các công ty chứng khoán Việt Nam, vận hành máy chủ, và xử lý từng loại sự cố. Còn nếu bạn muốn bắt đầu từ nền tảng thống kê phía sau các quy tắc, cụm quant trading là chỗ nên đọc trước.

Câu hỏi thường gặp

Bot trading có hợp pháp ở Việt Nam không?
Giao dịch qua API do chính công ty chứng khoán cung cấp là hợp pháp. Điều cần tuân thủ là quy định riêng của từng công ty về tần suất đặt lệnh và giới hạn số lệnh mỗi giây; vượt ngưỡng có thể bị khoá quyền truy cập API.
Cần biết lập trình tới mức nào mới viết được bot?
Đủ Python cơ bản để đọc dữ liệu, viết điều kiện if và gọi một API REST là bắt đầu được. Phần khó không nằm ở cú pháp mà ở tầng rủi ro và xử lý sự cố — những thứ chỉ học được khi bot đã chạy.
Nên chạy thử bao lâu trước khi dùng tiền thật?
Tối thiểu vài tháng chạy song song không đặt lệnh thật, đủ để gặp ít nhất một giai đoạn thị trường xấu và một lần mất kết nối. Rút ngắn giai đoạn này là cách nhanh nhất để trả học phí bằng tiền.
Bot có cần chạy 24/7 không?
Với phái sinh và cổ phiếu Việt Nam thì không, vì thị trường chỉ mở từ 9h tới 14h45. Với crypto thì có, và đó là lý do bot crypto cần thêm cơ chế tự khởi động lại và giám sát liên tục.

Đọc tiếp