🔥 🎁 QUÀ TẶNG khi đăng ký: Phần mềm DNT Digital SaaS FindMe VPS Guardian 12 tháng (~240 USD) và 24 tháng (~480 USD)
Auto trading chứng khoán Việt Nam từ tín hiệu TradingView 2026
ĐTĐược viết bởi Đặng Trí Thanhvào ngày 06/10/2026 lúc 20:00|… lượt xem
TradingView06/10/2026 · 20 phút đọc

Auto trading chứng khoán Việt Nam từ tín hiệu TradingView

Chứng khoán Việt Nam là thị trường thú vị nhưng cũng là thị trường khó tự động hoá nhất trong ba nhóm bạn có thể giao dịch bằng bot: Forex có MT5 với API đầy đủ, crypto có REST API mở, còn chứng khoán Việt Nam có T+2,5, biên độ trần/sàn, bước giá, phiên ATO/ATC và không có lệnh stop tự động trên sàn.

Ba thứ đó làm thay đổi hoàn toàn cách thiết kế bot. Một bot copy nguyên logic từ crypto sang sẽ sai ngay từ lệnh đầu: đặt khối lượng 137 cổ phiếu, giá lẻ 50đ, bán ngay trong ngày khi cổ phiếu chưa về tài khoản.

Bài viết này hướng dẫn đúng những gì cần cho thị trường Việt Nam: quy tắc giá và khối lượng, cách nhận tín hiệu TradingView cho cổ phiếu Việt Nam, các API broker hiện có, code chuẩn hoá giá theo biên độ và bước giá, kiểm tra phiên trước khi gửi lệnh, quản lý "sức mua" theo T+2,5, và cách tự giả lập stop loss khi sàn không cung cấp.

Đọc trước: Bot Python nhận webhook TradingView.

Trả lời nhanh

Auto trading chứng khoán Việt Nam từ TradingView chạy theo ba bước: (1) tín hiệu phát từ chỉ báo trên chart, gửi qua webhook; (2) bot chuẩn hoá tín hiệu thành một lệnh hợp lệ với sàn Việt Nam — giá làm tròn theo bước giá, nằm trong biên độ trần/sàn, khối lượng là bội số của 100; (3) bot gửi lệnh LO (limit) qua API của công ty chứng khoán, và tự theo dõi giá để tự bán khi chạm ngưỡng cắt lỗ.

Ba điểm khác biệt lớn nhất so với Forex/crypto:

  • Không bán được trong ngày khi cổ phiếu chưa về tài khoản (T+2,5). Bot phải phân biệt "cổ phiếu có thể bán" và "cổ phiếu chờ về", nếu không sẽ bị sàn từ chối.
  • Không có lệnh stop loss tự động trên sàn. Stop của bạn phải do bot tự giám sát và gửi lệnh LO khi giá chạm ngưỡng — và chỉ trong phiên giao dịch.
  • Chỉ giao dịch được trong giờ. Tín hiệu phát lúc 22:00 phải được xếp hàng tới đầu phiên hôm sau, hoặc bỏ — tuỳ chiến lược.

Với ba điều trên, một bot chứng khoán Việt Nam trung bình cần khoảng 500–900 dòng Python, trong đó hơn nửa là phần kiểm tra hợp lệ (validate) trước khi gửi lệnh.


Vì sao chứng khoán Việt Nam khó tự động hoá hơn Forex và crypto?

Đặc điểmForex (MT5)Crypto (Binance/Bybit)Chứng khoán Việt Nam
Giao dịch 24/5–24/724/524/73,5 giờ/ngày, 5 ngày/tuần
Bán trong ngày khi vừa muaCó (hedging/netting tuỳ tài khoản)CóKhông (T+2,5)
Stop loss trên sànCóCóKhông
Biên độ giáKhôngKhông±7% HOSE, ±10% HNX, ±15% UPCoM
Bước giáTick sizeTick sizeBước giá theo khung giá
Loại lệnhMarket, limit, stopMarket, limit, stop, OCOLO, MP/ATO/ATC (tuỳ sàn), MTL/MOK/MAK (HNX)
API cho cá nhânĐầy đủĐầy đủCó nhưng giới hạn hơn
Chi phíSpread + commission + swapFee + fundingPhí + thuế bán 0,1% + phí lưu ký

Điều đáng chú ý: thị trường Việt Nam không có lệnh stop tự động, nên "cắt lỗ" là một khái niệm bạn phải tự cài đặt. Với bot, điều này nghĩa là bạn cần một vòng lặp giám sát giá trong phiên — và phải chấp nhận rằng khi mất kết nối hoặc hết phiên, stop của bạn không tồn tại.


Hiểu đúng T+2,5 và biên độ

T+2,5 nghĩa là gì với bot?

Khi bạn mua cổ phiếu, tiền bị trừ ngay nhưng cổ phiếu chỉ về tài khoản vào chiều ngày T+2 (quy ước phổ biến gọi là T+2,5 vì cổ phiếu về trong phiên chiều, cho phép bán từ phiên chiều T+2). Hệ quả với bot:

  • Không thể bán cùng ngày. Bot phải biết cổ phiếu nào "đã về" và cổ phiếu nào "chờ về".
  • Không thể mở–đóng liên tục như crypto. Chiến lược intraday theo kiểu vào–ra nhiều lần trong ngày không chạy được với cổ phiếu cơ sở.
  • Sức mua bị ảnh hưởng. Tuỳ công ty chứng khoán, cổ phiếu chờ về có thể được dùng làm tài sản bảo đảm cho sức mua mới. Hãy kiểm tra cách broker của bạn tính, vì điều này quyết định bot có được phép vào lệnh tiếp hay không.
Nguyên tắc an toàn: thiết kế bot theo T+2,5. Nếu broker của bạn có cơ chế bán chứng khoán chờ về, hãy coi đó là phần thưởng thêm, không phải giả định mặc định của hệ thống.

Công thức giá trần/sàn và bước giá

Giá trần/sàn tính từ giá tham chiếu nhân với biên độ của sàn, sau đó làm tròn về bước giá hợp lệ. Bot phải tự tính lại mỗi phiên vì giá tham chiếu thay đổi theo ngày, và thay đổi cả khi cổ phiếu bị điều chỉnh do chia cổ tức, chia thưởng hay giao dịch không hưởng quyền.

LIMITS = {  # biên độ theo sàn
    "HOSE": 0.07, "HNX": 0.10, "UPCOM": 0.15,
}

def tick_size(price: float, exchange: str) -> float:
    if exchange == "HOSE":
        if price < 10_000: return 10
        if price < 50_000: return 50
        return 100
    return 100

def price_band(ref: float, exchange: str) -> tuple[float, float]:
    tick = tick_size(ref, exchange)          # bước giá phải lấy theo sàn
    lim = LIMITS[exchange]
    raw_ceiling, raw_floor = ref * (1 + lim), ref * (1 - lim)
    ceil = round(raw_ceiling / tick) * tick   # chú ý: làm tròn theo quy định từng sàn
    floor = round(raw_floor / tick) * tick
    return floor, ceil

def clamp_to_band(price: float, ref: float, exchange: str) -> float:
    floor, ceil = price_band(ref, exchange)
    tick = tick_size(ref, exchange)
    p = min(max(price, floor), ceil)
    return round(p / tick) * tick

Ba lưu ý thực chiến:

  1. Bước giá của HOSE phụ thuộc khung giá (dưới 10.000đ bước 10đ, từ 10.000–49.950đ bước 50đ, từ 50.000đ bước 100đ). Đây là lỗi phổ biến khi bot gửi giá lẻ 10.005đ và bị từ chối.
  2. Giá trần/sàn có quy định làm tròn riêng ở từng sàn; hãy kiểm tra bằng cách so với bảng giá của broker bạn dùng, thay vì tin hoàn toàn vào công thức của bot.
  3. Nếu giá tín hiệu vượt trần/sàn, bot nên kẹp về biên và ghi log — hoặc bỏ tín hiệu. Với chiến lược breakout, kẹp về trần thường tốt hơn bỏ, vì cổ phiếu trần thường không khớp.

Khối lượng, lô chẵn và giá trị lệnh tối thiểu

Lô chẵn trên các sàn hiện nay thường là 100 cổ phiếu. Bot phải:

def round_lot(qty: float, lot: int = 100) -> int:
    return int(qty // lot) * lot

Nếu tính ra 137 cổ phiếu, lệnh hợp lệ là 100. Lệnh lô lẻ chỉ được khớp trong một số trường hợp đặc biệt (giao dịch thoả thuận, lô lẻ của HNX/UPCoM) và không phù hợp để bot dùng như lệnh thường.

Điều ít người để ý: làm tròn lô làm lệch cả position sizing. Nếu bạn muốn mỗi lệnh rủi ro 1% tài khoản và tính ra 83 cổ phiếu, con số thực thi được là 100 — tức rủi ro thật lớn hơn kế hoạch khoảng 20%. Vì vậy khâu tính khối lượng nên theo thứ tự:

  1. Tính số cổ phiếu theo rủi ro: qty = risk_amount / (entry - stop).
  2. Làm tròn xuống bội số 100.
  3. Kiểm tra lại rủi ro thật = qty * (entry - stop); nếu vượt quá 1,5 lần rủi ro cho phép thì bỏ tín hiệu, đừng cố vào bằng lô lẻ.
  4. Kiểm tra giá trị lệnh: với cổ phiếu giá 15.000đ, một lô là 1,5 triệu đồng — tài khoản nhỏ chỉ vào được rất ít mã, nên hãy giới hạn danh mục bot theo số mã thay vì dàn mỏng.

Nhận tín hiệu TradingView cho cổ phiếu Việt Nam

Về phía TradingView, việc thiết kế alert giống hệt bài 2, nhưng có ba điểm cần lưu ý riêng:

  1. Mã cổ phiếu phải đúng sàn. HOSE:SSI khác HNX:SSI về biên độ và thanh khoản. Payload nên chứa cả mã và sàn, ví dụ {"symbol":"SSI","exchange":"HOSE","action":"buy",...}.
  2. Dữ liệu có thể bị trễ tuỳ gói. Với thị trường Việt Nam, một số nguồn dữ liệu ở gói thấp bị trễ khoảng 15 phút. Hãy kiểm tra mức dữ liệu của gói bạn dùng trước khi xây chiến lược ngắn hạn.
  3. Khung thời gian nên dùng từ 15m trở lên. Với 3,5 giờ giao dịch/ngày, khung 1m–5m cho ra quá ít nến có ý nghĩa thống kê, và tín hiệu trong phiên dễ bị nhiễu bởi ATO/ATC.

Về nội dung alert, khuyến nghị payload tối giản:

{"symbol":"SSI","exchange":"HOSE","action":"buy","price":35600,"sl":33800,"strategy":"vn-trend-15m","ts":"{{timenow}}"}

Không nên đặt lệnh luôn theo giá tín hiệu. Với thanh khoản cổ phiếu Việt Nam, bot nên đặt giá mua cao hơn giá tham chiếu một bước giá để tăng xác suất khớp, hoặc chờ và đặt ở giá tốt hơn nếu chiến lược không gấp.


API broker Việt Nam: hiện có gì?

Đây là phần khác biệt lớn nhất so với crypto. Ở Việt Nam, API giao dịch cho khách hàng cá nhân không phổ biến như ở nước ngoài, và mỗi công ty chứng khoán một kiểu.

BrokerDạng APIGhi chú
SSIFastConnect (REST + WebSocket)Phổ biến nhất, có tài liệu, cần đăng ký và xác thực nhiều lớp; access token có thời hạn, cần refresh
DNSEOpen API (REST + WebSocket)Hỗ trợ giao dịch lập trình, có tài liệu công khai, cần đăng ký với broker
VPSAPI nội bộ / dành cho đối tácThường phải làm việc trực tiếp với broker
TCBS, VCBS, MBS…Tuỳ thời điểmMột số có API dành cho khách hàng lớn hoặc đối tác

Bốn điều bạn sẽ gặp khi làm việc với API broker Việt Nam:

  1. Xác thực nhiều lớp. Thường gồm consumer key/secret → OTP → access token. Access token có thời hạn ngắn (thường trong ngày) nên bot phải có cơ chế refresh và cảnh báo khi refresh thất bại.
  2. `sức mua` là khái niệm bắt buộc. Bạn phải truy vấn sức mua khả dụng trước khi đặt lệnh. Đặt lệnh vượt sức mua sẽ bị từ chối hoặc chờ xử lý.
  3. Trạng thái lệnh có nhiều bước (chờ gửi, đã gửi, khớp một phần, khớp toàn bộ, huỷ một phần). Bot phải xử lý đủ các trạng thái, không chỉ "khớp/không khớp".
  4. Giới hạn tần suất khá chặt. Không nên polling liên tục; hãy dùng WebSocket cho dữ liệu và tần suất lệnh hợp lý.

Nếu broker của bạn không cung cấp API, bạn còn hai lựa chọn: bán tự động (bot tạo tín hiệu và gửi thông báo, bạn bấm xác nhận) hoặc dùng tính năng lệnh điều kiện nếu broker có (thường giới hạn và không đủ linh hoạt cho chiến lược phức tạp).


Kiến trúc bot cho thị trường Việt Nam

Sáu khối, khác biệt rõ so với bot crypto:

1. Nhận tín hiệu (webhook). Giống bài trước: xác thực HMAC, chống trùng, đẩy vào hàng đợi.

2. Hàng đợi theo phiên. Tín hiệu phát ngoài giờ giao dịch không gửi lệnh ngay. Hai chính sách: bỏ (an toàn, đơn giản) hoặc treo tới đầu phiên sau (phù hợp chiến lược theo ngày). Nếu treo, phải kiểm tra lại giá so với giá mở cửa đầu phiên — tín hiệu hôm qua có thể đã hết hiệu lực.

3. Kiểm tra phiên. Chỉ cho gửi lệnh trong khung giờ hợp lệ của sàn.

4. Validate lệnh. Giá theo bước giá, kẹp trong biên độ, khối lượng bội số 100, không vượt sức mua, không vượt room (nếu là nhà đầu tư nước ngoài).

5. Đặt lệnh qua API broker. Chỉ dùng lệnh LO trong phiên liên tục; tránh ATO/ATC cho bot.

6. Cắt lỗ giả lập (stop-loss watcher). Vòng lặp trong phiên: nếu giá ≤ ngưỡng SL thì gửi lệnh bán LO.

from datetime import time as _t

SESSIONS = {  # giờ Việt Nam, theo sàn
    "HOSE": [(_t(9, 15), _t(11, 30)), (_t(13, 0), _t(14, 30))],
    "HNX":  [(_t(9, 0),  _t(11, 30)), (_t(13, 0), _t(14, 30))],
    "UPCOM":[(_t(9, 0),  _t(11, 30)), (_t(13, 0), _t(15, 0))],
}

def in_session(exchange: str, now) -> bool:
    if now.weekday() >= 5:          # thứ 7, chủ nhật
        return False
    return any(a <= now.time() <= b for a, b in SESSIONS[exchange])

Đừng bỏ qua bước 6 vì nghĩ rằng "mình sẽ tự theo dõi". Chính vì thị trường Việt Nam không có stop tự động trên sàn, nhiều nhà đầu tư dùng bot chỉ để thực hiện đúng kỷ luật cắt lỗ — đó là giá trị lớn nhất mà bot mang lại, trước cả việc vào lệnh.


Cắt lỗ giả lập: khối quan trọng nhất

Vì sàn không hỗ trợ stop order, bot phải làm điều đó. Đây là bản tối giản nhưng đầy đủ ý tưởng:

def stop_watcher(broker, positions, loop_seconds: int = 15):
    while True:
        now = datetime.now(tz=VN_TZ)
        for p in positions:                    # chỉ vị thế cổ phiếu ĐÃ VỀ (bán được)
            if not p.sellable:
                continue
            if not in_session(p.exchange, now):
                continue

            px = broker.last_price(p.symbol, p.exchange)
            if px is None:
                continue

            if px <= p.sl_price:
                sell_price = max(price_band(p.ref, p.exchange)[0],
                                 px - tick_size(px, p.exchange))
                res = broker.place_lo(p.symbol, "sell", sell_price, p.qty, p.exchange)
                log.warning("CẮT LỖ %s @ %s -> %s", p.symbol, sell_price, res.status)
                notify(f"🔴 Cắt lỗ {p.symbol} @ {sell_price:,.0f}")
                p.mark_closing()
        time.sleep(loop_seconds)

Bốn điểm cần chú ý để khối này thực sự hoạt động:

  1. Chỉ bán được cổ phiếu đã về tài khoản. Trường sellable đến từ truy vấn danh mục; nếu bạn bỏ qua, lệnh sẽ bị từ chối với lỗi kiểu "không đủ số lượng khả dụng".
  2. Giá bán phải hợp lệ: không thấp hơn giá sàn, và theo đúng bước giá.
  3. Trong phiên ATC, giá có thể khớp xa ngưỡng SL. Vì thế nhiều bot chọn ngừng nhận lệnh mới trong 5 phút cuối phiên và để vị thế qua đêm, thay vì đặt ATC và bị khớp ở giá xấu.
  4. Có khoảng trống (gap) qua đêm. Nếu cổ phiếu mở cửa giảm sâu dưới SL, giá khớp của bạn sẽ là giá sàn chứ không phải giá SL. Bot nên cảnh báo khi điều này xảy ra, để bạn biết rủi ro thực tế lớn hơn kế hoạch.

Một biến thể đáng dùng: trailing stop theo ATR. Thay vì SL cố định, bot nâng ngưỡng SL lên theo giá cao nhất từ khi vào lệnh − 2×ATR. Cách này giữ được lợi nhuận tốt hơn trong xu hướng mà không cần bạn can thiệp.


ATO, ATC và những khung giờ không nên cho bot giao dịch

KhungThời gian (HOSE)Có nên cho bot dùng?
ATO09:00–09:15Không — giá xác định bằng khớp lệnh tập trung, khó kiểm soát
Liên tục sáng09:15–11:30Có — khung chính cho bot
Nghỉ trưa11:30–13:00Không — sàn không nhận
Liên tục chiều13:00–14:30Có — khung chính thứ hai
ATC14:30–14:45Thường không — giá đóng cửa có thể lệch xa
Sau giờsau 14:45Không

Ba lý do nên tránh ATO/ATC cho bot:

  1. Giá khớp không kiểm soát được. Ở ATC, cả thị trường dồn lệnh; giá cuối cùng có thể lệch xa giá bạn dự tính. Với bot cắt lỗ, đây là rủi ro thật.
  2. Tín hiệu của bạn được tính trên nến, không trên phiên tập trung. ATO/ATC không phải môi trường khớp lệnh liên tục mà bạn mô phỏng trong backtest.
  3. Khó đối soát. Khi có sự cố, bạn mất khả năng tái hiện vì giá ATC phụ thuộc toàn bộ lệnh của thị trường trong 15 phút.

Thực tế phổ biến: bot ngừng gửi lệnh mới sau 14:20 và chỉ quản lý vị thế hiện có tới hết phiên. Đây là quy tắc đơn giản, dễ giải thích và giảm rủi ro.


Chi phí và thuế: con số bạn phải trừ khỏi lợi nhuận

KhoảnMức tham khảoGhi chú
Phí giao dịch~0,15% – 0,35%/lệnhTuỳ broker và kênh (online thấp hơn)
Thuế thu nhập cá nhân khi bán0,1% giá trị bánTrả khi bán, không tính lãi/lỗ
Phí lưu ký~0,27 đồng/cổ phiếu/thángTrừ định kỳ
Phí margin (nếu vay)~10% – 14%/nămChỉ khi dùng margin
Trượt giáTuỳ thanh khoảnCổ phiếu nhỏ có thể lệch 1–2%

Ví dụ tính nhanh: mua–bán 100 triệu đồng, phí 0,15% mỗi chiều = 300.000đ, thuế bán 0,1% = 100.000đ → tổng ~400.000đ = 0,4% giá trị vòng. Nghĩa là chiến lược của bạn phải kiếm trên 0,4% mỗi vòng mới có lãi ròng. Với chiến lược khung ngày, đây là con số rất đáng kể.

Hãy đưa ba con số này (phí, thuế bán, trượt giá) vào báo cáo hằng ngày của bot, giống như cách làm với crypto ở bài 4.


Rủi ro đặc thù thị trường Việt Nam

1. Giải chấp (margin call). Nếu dùng margin và giá giảm, công ty chứng khoán có thể bán giải chấp tài sản của bạn mà không hỏi bạn. Bot nhận sai nếu nó giả định mọi lệnh bán đều do mình gửi. Hãy thêm bước đối soát để phát hiện lệnh bán "lạ".

2. Thanh khoản theo phiên. Cổ phiếu vốn hoá nhỏ có thể không có thanh khoản ở giá bạn muốn. Lệnh LO đặt giá tốt có thể nằm im cả phiên. Bot nên có quy tắc: nếu lệnh chưa khớp sau N phút, huỷ và đặt lại giá sát thị trường hơn (hoặc bỏ).

3. Room ngoại. Nếu bạn là nhà đầu tư nước ngoài, một số mã hết room ngoại thì không mua được. Bot phải kiểm tra trước và log lý do từ chối.

4. Ngày giao dịch không hưởng quyền. Giá tham chiếu thay đổi đột ngột (chia cổ tức, thưởng, quyền mua). Bot giữ vị thế qua ngày này sẽ thấy lỗ "ảo" trên sổ, và nếu bạn có logic dừng lỗ theo % thì bot có thể bán đúng lúc không nên bán. Hãy đưa lịch sự kiện vào cấu hình.

5. Hạn chế giao dịch của sàn. Một số mã bị tạm ngừng giao dịch, cảnh báo, kiểm soát. Bot phải bắt lỗi và bỏ qua mã đó, không thử lại vô hạn.


Khi broker không cấp API: mô hình bán tự động

Nếu bạn chưa có API, đừng vội bỏ ý tưởng tự động hoá. Mô hình bán tự động vẫn mang lại 80% giá trị:

  1. Bot nhận tín hiệu, tính toán lệnh cụ thể: mã, khối lượng, giá, SL.
  2. Bot gửi thông báo Telegram/Zalo có định dạng rõ ràng, kèm nút "xác nhận" đơn giản.
  3. Bạn bấm lệnh trên app broker theo thông số đó (mất 15–30 giây).
  4. Bot tiếp tục giám sát giá và cảnh báo khi chạm ngưỡng SL — bạn bấm bán.

Lợi ích thật của mô hình này: nó loại bỏ quyết định khỏi tay bạn. Bạn không phải nghĩ "vào hay không vào", chỉ cần thực thi. Với những người mới, đây thường là bước chuyển biến lớn hơn cả việc có bot tự động hoàn toàn.


Checklist trước khi cho bot giao dịch tiền thật

  1. ✅ Giá luôn theo bước giá đúng khung giá của sàn.
  2. ✅ Giá luôn nằm trong biên độ trần/sàn; có cảnh báo khi kẹp về biên.
  3. ✅ Khối lượng là bội số của 100.
  4. ✅ Kiểm tra sức mua trước khi gửi lệnh.
  5. ✅ Phân biệt cổ phiếu bán được và chờ về (T+2,5).
  6. ✅ Chỉ gửi lệnh trong phiên; không dùng ATO/ATC.
  7. ✅ Có stop-loss watcher chạy trong phiên, và biết rủi ro gap qua đêm.
  8. ✅ Có quy tắc huỷ/đặt lại lệnh khi không khớp sau N phút.
  9. ✅ Log đủ: mã, sàn, giá đặt, giá khớp, khối lượng, phí, thuế, trạng thái lệnh.
  10. ✅ Đối soát danh mục mỗi phiên; phát hiện lệnh bán "lạ" (giải chấp, thao tác tay).

Nếu chỉ làm được ba điểm, chọn 1, 5 và 7 — đây là ba chỗ khiến bot chứng khoán Việt Nam thất bại phổ biến nhất.


Nhật ký, đối soát và báo cáo P&L theo phiên

Một bot chứng khoán Việt Nam không thể chỉ có lệnh. Vì mọi thứ chậm hơn crypto, sai sót không tự bộc lộ trong vài phút mà tích tụ qua nhiều phiên. Cách duy nhất để phát hiện sớm là đối soát tự động mỗi cuối phiên giữa ba nguồn: tín hiệu bot nhận, lệnh bot đã gửi, và trạng thái thật trên sổ của broker.

Khung dữ liệu tối thiểu nên log cho mỗi lệnh:

def log_fill(trace_id, symbol, exchange, side, qty, price, fee, tax, status):
    return {
        "trace_id": trace_id,        # noi tin hieu -> lenh -> khop
        "symbol": symbol, "exchange": exchange,
        "side": side, "qty": qty, "price": price,
        "fee": fee, "tax": tax if side == "sell" else 0,
        "status": status,            # sent | partial | filled | rejected | cancelled
        "session": "2026-10-06",
    }

Ba báo cáo nên bật ngay từ ngày đầu:

  • Lệch vị thế. So sánh danh mục bot cho là đang giữ với danh mục broker trả về. Nếu lệch, dừng bot và báo người. Nguyên nhân thường gặp: bot bán nhầm cổ phiếu vừa khớp nhưng chưa về, hoặc có người thao tác tay.
  • Lệnh treo. Mọi lệnh sent mà sau 3–5 phút vẫn không có partial/filled phải được bot tự chủ động xử lý (huỷ, dời giá, hoặc cảnh báo) chứ không để treo qua phiên.
  • P&L ròng đúng nghĩa. Con số đáng tin là lợi nhuận sau khi trừ phí mua, phí bán, thuế bán 0,1% và trừ cả tiền lãi vay margin nếu có. Nhiều bot báo lãi trên giấy, nhưng chỉ cần giao dịch 2–3 vòng mỗi tuần là phí đã ăn hết biên lợi nhuận của chiến lược tín hiệu ngắn.

Cuối cùng, đừng để bot tự "sửa sai" bằng cách giao dịch nhiều hơn. Giai đoạn đầu nên giới hạn cứng số lệnh mỗi ngày và giá trị mỗi lệnh, để khi logic có lỗi thì thiệt hại vẫn nằm trong mức bạn chấp nhận được.


Quy trình đưa bot từ demo lên tiền thật

Đường đi an toàn nhất gồm 5 bước, và bước nào cũng phải qua bằng số liệu chứ không bằng cảm giác:

  1. Chạy khô (paper). Bot nhận tín hiệu TradingView, tính đủ mã/khối lượng/giá/SL, ghi log nhưng không gửi lệnh. Mục tiêu là xem logic có sinh ra lệnh hợp lệ về bước giá, biên độ và sức mua hay không.
  2. Giao dịch giấy trong phiên thật. Cùng dữ liệu thật, cùng giờ thật, nhưng chỉ ghi nhận kết quả giả định. Đây là bước phát hiện những vấn đề thời gian mà backtest không bao giờ thấy: tín hiệu tới lúc 14:58, lệnh ATC, dữ liệu trễ.
  3. Vốn tối thiểu, một mã. Cho bot thật chạy với khối lượng nhỏ nhất có thể (một lô) trên một mã, theo dõi đối soát mỗi cuối phiên trong ít nhất 2 tuần. Bước này để xác nhận kết nối API, mã lỗi từ chối lệnh và luồng thông báo ổn định.
  4. Tăng dần số mã, giữ nguyên rủi ro mỗi lệnh. Mở rộng danh mục lên 3–5 mã nhưng tổng rủi ro mở cùng lúc không vượt quá ngưỡng bạn đặt ra (ví dụ 5–6% tài khoản). Nếu phải chọn giữa nhiều mã và rủi ro mỗi lệnh, ưu tiên rủi ro.
  5. Vận hành và bảo trì. Bật giám sát (bot còn sống, kết nối API còn tốt, tín hiệu còn về), đặt lịch rà soát log cuối tuần, và ghi lại mọi lần "bot làm sai" để sửa logic thay vì sửa bằng tay trên app.

Trong cả 5 bước, hãy giữ một nguyên tắc: mọi rủi ro ngoài thị trường phải do bot kiểm soát, không phải do bạn nhớ. Bạn có thể quên huỷ lệnh treo; bot thì không.


Tổng kết

Auto trading chứng khoán Việt Nam từ TradingView là bài toán thích nghi với luật chơi địa phương: T+2,5, biên độ trần/sàn, bước giá, lô 100, không có stop order, chỉ giao dịch trong phiên. Phần nhận tín hiệu giống hệt các thị trường khác — phần khó nằm ở việc biến tín hiệu thành một lệnh hợp lệ và tự quản lý rủi ro khi sàn không giúp bạn.

Bốn việc cần làm, theo thứ tự:

  1. Viết bộ validate: bước giá, biên độ, lô, sức mua.
  2. Phân biệt cổ phiếu bán được và chờ về.
  3. Cài stop-loss watcher trong phiên + quy tắc cuối phiên.
  4. Đối soát danh mục mỗi phiên và tính chi phí thật (phí + thuế 0,1% + lưu ký).

Muốn dựng bot giao dịch chứng khoán Việt Nam từ tín hiệu TradingView với người hướng dẫn từng buổi? Bootcamp TradingView Webhook Bot gồm 6 buổi online (20:00–22:00 Thứ 2, khai giảng 19/10/2026), học phí 990.000đ, tặng kèm 12 tháng FindMe VPS Guardian.

Đọc tiếp trong cụm bài:

  • TradingView Webhook là gì? Hướng dẫn A–Z
  • Bot Python nhận webhook TradingView
  • Gửi lệnh từ TradingView lên Binance/Bybit
  • Nối TradingView với MT5 để auto trade Forex

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

Chứng khoán Việt Nam có bán được trong ngày (T+0) không?

Theo chu kỳ thanh toán phổ biến hiện nay, cổ phiếu về tài khoản vào chiều ngày T+2 (thường gọi là T+2,5), nên bạn không thể bán cổ phiếu vừa mua trong cùng ngày. Một số công ty chứng khoán có dịch vụ cho bán chứng khoán chờ về, nhưng điều kiện và phí khác nhau — hãy thiết kế bot theo T+2,5 và coi dịch vụ đó là phần thưởng thêm.

Sàn có hỗ trợ lệnh stop loss tự động không?

Không. Các sàn Việt Nam hiện không cung cấp lệnh stop tự động như MT5 hay crypto. Vì thế bot phải tự theo dõi giá trong phiên và gửi lệnh LO khi giá chạm ngưỡng cắt lỗ. Đây cũng là rủi ro lớn nhất nếu bot hoặc kết nối của bạn gặp sự cố.

Tôi có thể dùng API để giao dịch chứng khoán Việt Nam không?

Có, nhưng hạn chế hơn crypto. Một số công ty chứng khoán cung cấp API cho khách hàng cá nhân (ví dụ SSI FastConnect, DNSE Open API), thường yêu cầu đăng ký, xác thực nhiều lớp và access token có thời hạn ngắn cần refresh. Nếu broker của bạn không có API, hãy dùng mô hình bán tự động: bot tính lệnh và cảnh báo, bạn bấm xác nhận.

Biên độ giá và giá trần/sàn ảnh hưởng gì đến bot?

Tín hiệu của bạn có thể nằm ngoài biên độ cho phép của phiên (HOSE ±7%, HNX ±10%, UPCoM ±15%). Bot phải kẹp giá về trong biên và làm tròn theo bước giá, nếu không lệnh sẽ bị từ chối. Với chiến lược breakout, việc kẹp về giá trần thường hợp lý vì cổ phiếu trần thường không khớp.

Bot có nên đặt lệnh ATO hoặc ATC không?

Thường không. Ở ATO và ATC, giá khớp được xác định bằng khớp lệnh tập trung nên khó kiểm soát và khó tái hiện khi bạn muốn kiểm tra sự cố. Phổ biến là cho bot chỉ giao dịch trong phiên khớp lệnh liên tục và ngừng nhận lệnh mới trước khi vào ATC khoảng 5–10 phút.

Chi phí giao dịch chứng khoán Việt Nam gồm những gì?

Phí giao dịch khoảng 0,15%–0,35% mỗi lệnh tuỳ broker, thuế thu nhập cá nhân 0,1% trên giá trị bán, phí lưu ký khoảng 0,27 đồng/cổ phiếu mỗi tháng, và phí margin nếu bạn vay. Cộng phí hai chiều và thuế, một vòng mua–bán tốn khoảng 0,4% giá trị — chiến lược phải vượt được con số này mới có lãi ròng.

Khối lượng đặt lệnh có phải là bội số của 100 không?

Có, lô chẵn phổ biến là 100 cổ phiếu. Bot phải làm tròn xuống theo lô, nếu không lệnh có thể bị từ chối hoặc chỉ khớp trong các trường hợp đặc biệt. Nếu tính ra 137 cổ phiếu thì lệnh hợp lệ là 100.

Làm sao tránh bot bán nhầm cổ phiếu đang chờ về?

Bạn phải truy vấn danh mục từ broker và phân biệt số lượng có thể bán với số lượng đang chờ về. Chỉ đặt lệnh bán với khối lượng khả dụng. Đồng thời thêm bước đối soát mỗi phiên để phát hiện những lệnh bán không do bot gửi (ví dụ bán giải chấp hoặc bạn thao tác tay).

Đọc xong rồi? Hãy thử ngay — miễn phí 7 ngày.
📬

Weekly Digest — Nhận Bản Tin Hàng Tuần

Nhận các bài viết phân tích kỹ thuật chuyên sâu, thuật toán giao dịch tự động (Trading Bot) và các giải pháp công nghệ mới nhất từ Hướng Nghiệp Dữ Liệu.