Bot Auto TradingMetaTrader 5MT5WebhookTradingView Webhook Bot
Được viết bởiĐặng Trí Thanhvào ngày 01/10/2026

Webhook TradingView sang MT5: nối vào EA

Nối webhook TradingView sang MetaTrader 5: hai kiến trúc phổ biến, cách tính lot, đặt SL/TP đúng chuẩn broker, xử lý hậu tố tên cặp và code mẫu Python lẫn MQL5.

Webhook TradingView sang MT5: nối vào EA

MetaTrader 5 là nơi khó nối webhook nhất trong ba nhóm thị trường phổ biến, vì nó không được thiết kế cho mô hình nhận tín hiệu từ bên ngoài. Nhưng khó không có nghĩa là không làm được, và một khi đã nối đúng, đây là môi trường rất ổn định để chạy bot forex, vàng và chỉ số.

Vì sao MT5 khó nối hơn crypto

Khi bạn nối bot với một sàn crypto, mọi thứ đều nằm trên internet: API qua HTTPS, khớp lệnh tức thì, khối lượng là số thập phân, và bạn không phụ thuộc vào phần mềm cài trên máy.

MT5 thì khác ở ba điểm. Thứ nhất, giao dịch đi qua terminal cài trên máy, không phải qua một API công khai, nên server của bạn phải tiếp xúc được với terminal đó. Thứ hai, khối lượng giao dịch tính theo lot với ba ràng buộc khác nhau cho từng cặp. Thứ ba, tên cặp có thể có hậu tố riêng cho từng broker, và giờ hệ thống cũng theo giờ broker.

Ba điểm này giải thích vì sao người mới thường nối thành công phần webhook nhưng thất bại ở phần đặt lệnh: tín hiệu tới đúng, nhưng lệnh bị broker từ chối vì sai khối lượng, sai tên cặp, hoặc sai định dạng mức dừng lỗ.

Hai kiến trúc phổ biến và khi nào dùng cái nào

Có hai cách nối được dùng rộng rãi.

Kiến trúc thứ nhất là server Python chạy cùng máy với terminal MT5, gọi trực tiếp thư viện chính thức để đọc dữ liệu và đặt lệnh. Cách này gọn, ít thành phần, độ trễ thấp, và dễ gỡ lỗi vì mọi thứ nằm trong một tiến trình. Nhược điểm là bạn cần một máy Windows chạy liên tục, và nếu terminal gặp sự cố thì cả hệ thống dừng.

Kiến trúc thứ hai là server tín hiệu chạy độc lập, ghi tín hiệu ra file hoặc gửi sang một điểm trung gian, còn một Expert Advisor trên MT5 đọc và đặt lệnh. Cách này cho phép server chạy trên Linux ở nơi rẻ hơn, và tách biệt rủi ro: nếu phần tín hiệu gặp sự cố, phần thực thi vẫn sống và ngược lại. Nhược điểm là có thêm một lớp bạn phải viết, và độ trễ cao hơn một chút.

Bảng so sánh:

Tiêu chíDùng thư viện PythonDùng EA đọc file
Hệ điều hành serverWindowsWindows hoặc Linux
Thành phần phải viết12
Độ trễthấptrung bình
Khó gỡ lỗidễ hơnkhó hơn
Tách biệt rủi rokémtốt
Phù hợp nhấtbot cá nhân, một tài khoảnnhiều tài khoản, nhiều VPS

Kiến trúc A: Python gọi trực tiếp thư viện MT5

Đây là cách bắt đầu nên chọn, vì bạn thấy được toàn bộ luồng trong một tiến trình.

Máy cần có terminal MT5 đã đăng nhập tài khoản, và terminal phải cho phép giao dịch thuật toán. Thư viện Python chính thức sẽ kết nối tới terminal đang chạy, nên nếu terminal chưa mở hoặc chưa đăng nhập, mọi lời gọi sẽ thất bại.

Quy trình xử lý một tín hiệu gồm sáu bước. Một, kiểm tra tên cặp tồn tại. Hai, đọc thông số khối lượng của cặp. Ba, tính khối lượng từ rủi ro mong muốn. Bốn, quy đổi mức dừng lỗ và chốt lời ra giá. Năm, gửi lệnh. Sáu, ghi log kết quả kèm mã lệnh.

Một điểm dễ bỏ sót là thư viện này rất nhạy với việc khởi tạo lại. Nếu bạn gọi khởi tạo ở mọi request, kết nối có thể bị chập chờn. Hãy khởi tạo một lần khi chương trình bắt đầu, và kiểm tra kết nối trước mỗi lần gửi lệnh.

Kiến trúc B: EA đọc file tín hiệu

Kiến trúc này phù hợp khi bạn muốn server chạy ở nơi khác, hoặc muốn tách phần ra quyết định khỏi phần truy cập tài khoản.

Cách làm gồm ba phần. Thứ nhất, server nhận webhook, xử lý và ghi ra một tệp tín hiệu với định dạng cố định. Thứ hai, EA trên MT5 định kỳ đọc tệp đó, tách nội dung và đặt lệnh nếu còn hiệu lực. Thứ ba, EA ghi lại kết quả ra một tệp kết quả để server đọc và đối chiếu.

Có ba quy tắc cần tuân thủ để cách này chạy ổn định. Một là mỗi dòng trong tệp chỉ chứa một tín hiệu, và các trường cách nhau bằng một ký tự phân tách cố định. Hai là tín hiệu phải có mốc thời gian và thời hạn hiệu lực, để nếu server ghi tín hiệu mà EA bị dừng lâu, EA sẽ bỏ qua tín hiệu cũ thay vì đặt lệnh trễ. Ba là sau khi đọc, EA phải đánh dấu đã xử lý, thường bằng cách di chuyển dòng sang một tệp đã xử lý, để không đặt lệnh hai lần.

Nhược điểm thực tế của kiến trúc này là độ trễ bằng chu kỳ đọc của EA. Nếu EA đọc mỗi năm giây, độ trễ thêm tối đa năm giây. Với chiến lược khung giờ, điều này không đáng kể. Với chiến lược khung phút, hãy giảm chu kỳ hoặc chuyển sang kiến trúc A.

Quy đổi sang lot cho đúng

Đây là phần gây lỗi nhiều nhất khi nối bot với MT5.

Mỗi cặp có ba thông số: khối lượng nhỏ nhất, bước khối lượng và khối lượng lớn nhất. Bot phải đọc ba thông số này từ terminal cho từng cặp, rồi làm tròn khối lượng tính được xuống theo bước.

Cách tính khối lượng an toàn nhất với người mới là tính theo rủi ro cố định trên mỗi lệnh. Bạn cần bốn thông tin: số dư tài khoản, phần trăm rủi ro, khoảng cách từ giá vào lệnh tới giá dừng lỗ, và giá trị của một đơn vị biến động với khối lượng một lot.

Công thức khái quát là lấy số tiền rủi ro chia cho số tiền mất khi giá đi hết khoảng cách dừng lỗ với một lot. Kết quả là khối lượng lý thuyết, rồi bạn làm tròn xuống theo bước khối lượng. Nếu kết quả sau khi làm tròn bằng không, hãy bỏ qua lệnh và ghi log, thay vì nâng lên mức tối thiểu vì làm vậy sẽ tăng rủi ro ngoài kế hoạch.

Một chi tiết thực tế là con số giá trị biến động trên mỗi lot rất khác nhau giữa các cặp và giữa các broker. Cách chắc chắn nhất là để terminal tính giúp, bằng cách gọi hàm tính lợi nhuận dự kiến từ terminal với khối lượng tạm thời.

Đặt SL và TP đúng chuẩn broker

Hai quy tắc bắt buộc khi đặt dừng lỗ và chốt lời trên MT5.

Thứ nhất, khoảng cách phải lớn hơn mức tối thiểu mà broker yêu cầu. Mỗi cặp có mức tối thiểu riêng, gọi là mức dừng tối thiểu. Nếu bạn đặt gần hơn mức đó, lệnh sẽ bị từ chối. Bot nên đọc mức này từ terminal thay vì đoán.

Thứ hai, giá phải được làm tròn theo số chữ số thập phân của cặp. Cặp tiền tệ thường hai tới năm chữ số, vàng có thể hai chữ số, chỉ số có thể một chữ số. Làm tròn sai khiến giá trở thành giá không hợp lệ và lệnh bị từ chối.

Về cách truyền dữ liệu, nên truyền khoảng cách theo số điểm giá thay vì truyền giá tuyệt đối. Lý do là giá tuyệt đối thay đổi liên tục, trong khi khoảng cách dừng lỗ theo điểm là đặc tính của chiến lược. Cách này cũng giúp bạn đổi cặp giao dịch mà không phải chỉnh lại payload.

Nếu chiến lược dùng dừng lỗ theo biến động, ví dụ theo chỉ báo biên độ trung bình, Pine Script có thể tính và truyền con số đó trong payload. Nhờ vậy bot không phải cài lại chỉ báo ở phía server và tránh sai lệch giữa hai bên.

Xử lý hậu tố tên cặp và giờ broker

Hai vấn đề này nhỏ nhưng chắc chắn gây lỗi nếu bỏ qua.

Về hậu tố, hãy để cấu hình chứ không để trong payload. Cụ thể, payload gửi tên cặp chuẩn, và server có một bảng ánh xạ từ tên chuẩn sang tên có hậu tố mà broker dùng. Khi mở tài khoản ở broker khác, bạn chỉ sửa bảng này.

Một cách kiểm tra nhanh là đọc toàn bộ danh sách ký hiệu từ terminal một lần, in ra những tên chứa phần gốc của cặp bạn quan tâm. Nhờ đó bạn biết chính xác broker đang gọi cặp đó là gì, thay vì đoán.

Về giờ, hãy ghi nhận rằng giờ trong log của bạn, giờ của máy chủ, giờ của broker MT5 và giờ trên nến TradingView có thể khác nhau. Cách xử lý là quy đổi mọi thứ về một múi giờ tham chiếu trong log, và ghi kèm múi giờ gốc nếu cần. Khi có sự cố, bạn sẽ cần đối chiếu chính xác tín hiệu nào ứng với nến nào.

Quản lý vị thế: netting và hedging

MT5 có hai chế độ tài khoản, và bot phải xử lý khác nhau.

Ở chế độ netting, mỗi cặp chỉ có một vị thế duy nhất. Nếu bot mở thêm lệnh cùng hướng, khối lượng sẽ được cộng dồn; nếu mở ngược hướng, khối lượng sẽ giảm đi. Ở chế độ này, logic đóng lệnh của bot phải là đóng theo khối lượng hiện có, không phải đóng theo mã lệnh cụ thể.

Ở chế độ hedging, mỗi lệnh là một vị thế riêng biệt, và có thể tồn tại cả lệnh mua và lệnh bán cùng lúc trên một cặp. Ở chế độ này, bot phải ghi lại mã lệnh khi mở, để sau đó đóng đúng lệnh khi có tín hiệu.

Trước khi viết logic, hãy xác định tài khoản của bạn đang ở chế độ nào, vì nếu viết theo chế độ hedging mà tài khoản netting, bot sẽ cố đóng những lệnh không tồn tại. Ngoài ra, cả hai chế độ đều cần bot kiểm tra số lệnh đang mở so với giới hạn bạn đặt, để tránh trường hợp tín hiệu bắn liên tục tạo ra hàng chục vị thế.

Ví dụ code Python đặt lệnh MT5

Đoạn dưới đây minh hoạ cách tiếp cận trong kiến trúc A. Code thật cần thêm phần đọc cấu hình, ghi log và xử lý lỗi.

import MetaTrader5 as mt5


def lot_from_risk(symbol: str, risk_pct: float, sl_points: int) -> float:
    info = mt5.symbol_info(symbol)
    if info is None:
        raise ValueError(f"khong tim thay cap {symbol}")

    balance = mt5.account_info().balance
    risk_money = balance * risk_pct / 100

    point = info.point
    value_per_point = mt5.order_calc_profit(
        mt5.ORDER_TYPE_BUY, symbol, 1.0, info.ask, info.ask + sl_points * point
    )
    if not value_per_point or value_per_point >= 0:
        raise ValueError("khong tinh duoc gia tri diem")

    lots = risk_money / abs(value_per_point)
    step = info.volume_step
    lots = (int(lots / step)) * step
    if lots < info.volume_min:
        return 0.0
    return round(lots, 2)


def send_market_order(symbol: str, action: str, lots: float, sl_points: int, tp_points: int):
    info = mt5.symbol_info(symbol)
    if not info.visible and not mt5.symbol_select(symbol, True):
        raise RuntimeError("khong bat duoc cap giao dich")

    is_buy = action.lower() == "buy"
    price = info.ask if is_buy else info.bid
    digits = info.digits
    point = info.point

    request = {
        "action": mt5.TRADE_ACTION_DEAL,
        "symbol": symbol,
        "volume": lots,
        "type": mt5.ORDER_TYPE_BUY if is_buy else mt5.ORDER_TYPE_SELL,
        "price": price,
        "sl": round(price - sl_points * point, digits) if is_buy else round(price + sl_points * point, digits),
        "tp": round(price + tp_points * point, digits) if is_buy else round(price - tp_points * point, digits),
        "deviation": 20,
        "magic": 20261001,
        "comment": "tv-webhook",
        "type_time": mt5.ORDER_TIME_GTC,
        "type_filling": mt5.ORDER_FILLING_IOC,
    }
    return mt5.order_send(request)

Bốn điểm cần chú ý trong đoạn code này. Một là khối lượng luôn được làm tròn xuống theo bước, và trả về không nếu nhỏ hơn mức tối thiểu, để bot chủ động bỏ qua. Hai là dừng lỗ và chốt lời tính theo điểm giá rồi làm tròn theo số chữ số của cặp. Ba là trường phân loại lệnh có thể khác nhau tuỳ broker, nên cần kiểm thử. Bốn là mã định danh riêng giúp bạn lọc ra các lệnh do bot đặt khi cần đối chiếu hoặc đóng hàng loạt.

Kiểm thử trước khi chạy tiền thật

Ba lớp kiểm thử nên làm theo thứ tự.

Lớp một, kiểm tra kết nối và đọc dữ liệu. Chương trình phải đọc được số dư, đọc được thông số của cặp, và in ra đúng những gì bạn mong đợi. Nếu lớp này chưa xong, chưa nên nghĩ tới đặt lệnh.

Lớp hai, kiểm tra tính khối lượng. Cho chương trình tính khối lượng với nhiều mức rủi ro và nhiều cặp khác nhau, in ra kết quả, và tự kiểm tra bằng tay vài trường hợp. Đây là lớp phát hiện được nhiều lỗi nguy hiểm nhất.

Lớp thứ ba, kiểm tra đặt lệnh trên tài khoản demo. Đặt lệnh với khối lượng nhỏ nhất, kiểm tra lệnh xuất hiện đúng, dừng lỗ và chốt lời đúng vị trí, mã lệnh được ghi lại. Sau đó kiểm tra tình huống gửi hai tín hiệu giống nhau liên tiếp để xác nhận cơ chế chống trùng hoạt động.

Những lỗi hay gặp khi nối webhook vào MT5

Lỗi thứ nhất là terminal chưa đăng nhập hoặc chưa bật giao dịch thuật toán. Dấu hiệu là mọi lời gọi đều trả về lỗi, kể cả đọc số dư.

Lỗi thứ hai là sai khối lượng. Dấu hiệu là broker trả về lỗi khối lượng không hợp lệ, hoặc lệnh khớp với khối lượng lớn hơn dự kiến nhiều lần.

Lỗi thứ ba là tên cặp thiếu hậu tố. Dấu hiệu là không tìm thấy cặp, dù trên chart bạn thấy bình thường.

Lỗi thứ tư là mức dừng lỗ quá gần. Dấu hiệu là lệnh bị từ chối với lý do mức dừng không hợp lệ.

Lỗi thứ năm là điền sai kiểu khớp lệnh. Dấu hiệu là lỗi kiểu khớp không được hỗ trợ, tuỳ broker và tuỳ loại lệnh.

Lỗi thứ sáu là bỏ qua chế độ tài khoản netting hay hedging. Dấu hiệu là bot cố đóng những lệnh không tồn tại, hoặc cộng dồn khối lượng ngoài ý muốn.

Lỗi thứ bảy là không kiểm tra giới hạn số lệnh mở. Dấu hiệu là tài khoản có hàng chục vị thế nhỏ sau vài giờ chạy trong thị trường đi ngang.

Checklist trước khi cho bot MT5 chạy tiền thật

  • Terminal MT5 đã đăng nhập và bật giao dịch thuật toán.
  • Tài khoản đã xác định rõ chế độ netting hay hedging.
  • Bảng ánh xạ tên cặp đã đúng với broker, đã kiểm tra bằng danh sách ký hiệu thật.
  • Khối lượng luôn được làm tròn xuống theo bước, và bằng không thì bỏ qua lệnh.
  • SL và TP tính theo điểm giá, đã kiểm tra mức dừng tối thiểu của broker.
  • Giới hạn số lệnh mở tối đa và giới hạn khối lượng tối đa đã được cấu hình.
  • Có cơ chế chống trùng theo mã tín hiệu.
  • Log ghi đủ thời điểm nhận, quyết định, khối lượng, giá, mã lệnh và phản hồi broker.
  • Đã chạy demo liên tục ít nhất vài tuần với khối lượng nhỏ nhất.
  • Có cách đóng toàn bộ vị thế bằng một lệnh khi cần xử lý sự cố.

Webhook Bot so với Expert Advisor thuần

Một câu hỏi hợp lý là nếu bạn đã phải viết EA cho phần thực thi, tại sao không viết toàn bộ logic trong EA và bỏ webhook đi.

Câu trả lời nằm ở phần ra quyết định. Nếu viết toàn bộ trong EA, bạn phải dịch mọi chỉ báo sang MQL5, phải tự quản lý backtest trong MT5 và không tận dụng được hệ sinh thái chỉ báo của TradingView. Với người đã quen phân tích trên chart TradingView, việc dịch lại là công việc lặp lại và dễ sai lệch.

Ngược lại, giữ webhook lại có ba lợi ích rõ ràng. Một là bạn thay đổi chiến lược trên TradingView mà không cần đụng tới MT5, nên tốc độ thử nghiệm nhanh hơn nhiều. Hai là có thể dùng cùng một tín hiệu cho nhiều tài khoản, nhiều broker khác nhau. Ba là phần giao dịch được tách khỏi phần quyết định, nên khi có lỗi bạn biết ngay lỗi thuộc bên nào.

Đánh đổi của webhook là phụ thuộc vào hai hệ thống và vào đường truyền giữa chúng. Nếu TradingView gặp sự cố hoặc gói hết hạn, bot không nhận được tín hiệu. Vì vậy nếu chiến lược của bạn rất nhạy với thời điểm, hãy cân nhắc việc vừa chạy webhook vừa có một EA dự phòng cho trường hợp khẩn cấp, ví dụ EA chốt vị thế theo giờ hoặc theo mức lỗ tối đa.

Bảng so sánh nhanh giữa hai cách:

Tiêu chíWebhook BotEA thuần
Tốc độ thử chiến lược mớiNhanhChậm hơn
Phụ thuộc dịch vụ ngoàiCóKhông
Dùng chung cho nhiều brokerDễPhải cấu hình lại
Công sức viết chỉ báoKhông cầnPhải viết lại
Kiểm soát thời điểm vào lệnhPhụ thuộc độ trễSát nến hơn

Mở rộng sang nhiều tài khoản

Khi bot đã ổn định trên một tài khoản, nhu cầu tiếp theo thường là chạy cùng chiến lược trên nhiều tài khoản, ví dụ một tài khoản cá nhân và một tài khoản quản lý cho khách.

Cách làm đúng là tách phần tín hiệu khỏi phần tài khoản. Cụ thể, hệ thống có một điểm nhận webhook duy nhất, xác thực một lần, xác định tín hiệu hợp lệ, rồi phân phối cùng tín hiệu đó cho nhiều bộ thực thi, mỗi bộ ứng với một tài khoản. Nhờ cấu trúc này, việc thêm một tài khoản mới chỉ là thêm một mục trong cấu hình.

Ba vấn đề nảy sinh khi chạy nhiều tài khoản trên cùng một tín hiệu. Thứ nhất là khối lượng phải được tính riêng theo số dư của từng tài khoản, không dùng chung một con số. Thứ hai là mỗi tài khoản có thể có symbol khác nhau nếu dùng broker khác nhau, nên bảng ánh xạ tên cặp cũng phải tách riêng. Thứ ba là log phải ghi rõ tài khoản nào xử lý tín hiệu nào, nếu không bạn sẽ không thể đối chiếu khi có sự cố.

Một chi tiết vận hành nên chuẩn bị trước là cách xử lý khi một tài khoản lỗi nhưng các tài khoản khác vẫn ổn. Nguyên tắc hợp lý là cô lập lỗi: tài khoản gặp sự cố bị tạm dừng, các tài khoản còn lại vẫn nhận tín hiệu. Nếu để một lỗi kéo sập cả hệ thống, bạn sẽ mất cơ hội ở những tài khoản vốn đang chạy tốt.

Bảo trì, giám sát và xử lý sự cố

Một bot MT5 chạy tốt trong nhiều tháng cần được bảo trì, không chỉ được viết ra.

Bốn việc bảo trì nên làm định kỳ. Một là kiểm tra danh sách alert trên TradingView xem có cái nào sắp hết hạn hoặc đã bị tắt. Hai là kiểm tra terminal MT5 vẫn đăng nhập, vẫn bật giao dịch thuật toán, và dung lượng log không quá lớn. Ba là kiểm tra thông số của các cặp giao dịch, vì broker có thể thay đổi bước khối lượng hoặc mức dừng tối thiểu. Bốn là đối chiếu số lệnh bot đã đặt với log, để phát hiện hiện tượng tín hiệu tới nhưng không có lệnh nào.

Về giám sát, ba dấu hiệu cần theo dõi liên tục. Thứ nhất, thời gian từ lúc nhận tín hiệu tới lúc nhận phản hồi từ broker: nếu con số này tăng dần, có vấn đề về mạng hoặc terminal. Thứ hai, tỉ lệ lệnh bị từ chối trên tổng số lệnh: nếu tăng, hãy kiểm tra lại thông số cặp. Thứ ba, số vị thế đang mở so với giới hạn bạn đặt: nếu chạm giới hạn thường xuyên, chiến lược của bạn đang tạo quá nhiều tín hiệu cho mức vốn hiện có.

Khi có sự cố, thứ tự xử lý nên cố định để bạn không bỏ sót bước. Đầu tiên đóng hoặc bảo vệ các vị thế đang mở, vì rủi ro tài chính luôn ưu tiên hơn việc tìm nguyên nhân. Tiếp theo lưu lại log của cả hai phía để không bị ghi đè. Sau đó mới kiểm tra từng mắt của chuỗi: TradingView có gửi không, server có nhận không, server có gọi được broker không, broker có khớp không. Cuối cùng, sửa nguyên nhân, chạy lại demo, rồi mới bật lại tiền thật.

Điều cuối cùng cần chuẩn bị là một quy trình tắt khẩn cấp đã được kiểm thử. Quy trình này gồm hai phần: một lệnh đóng toàn bộ vị thế, và một cách chặn server nhận tín hiệu mới. Cả hai phải được thử trước khi cần dùng thật, vì trong tình huống khẩn cấp bạn không có thời gian để viết code mới.

Kết luận

Nối webhook TradingView sang MT5 khó hơn crypto vì ba thứ: khối lượng tính theo lot có ràng buộc, mức dừng lỗ có giới hạn tối thiểu, và tên cặp phụ thuộc broker. Cả ba đều giải quyết được bằng cách đọc thông số từ terminal thay vì viết cứng trong code.

Kiến trúc nên chọn là dùng thư viện Python chạy cùng máy khi bạn mới bắt đầu, và chuyển sang EA đọc file khi bạn cần chạy nhiều tài khoản hoặc tách biệt phần tín hiệu khỏi phần thực thi.

Nếu bạn muốn nối trực tiếp webhook TradingView vào MT5 trong một lộ trình có hướng dẫn từng bước, có bản ghi và có buổi 1-1 để rà lại bot, hãy xem Bootcamp TradingView Webhook Bot của Hướng Nghiệp AI.

Đọc tiếp trong chuỗi: TradingView Webhook Bot là gì, nhận webhook TradingView bằng Python, webhook TradingView sang Binance và webhook TradingView cho chứng khoán Việt Nam.

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

Có bắt buộc phải viết Expert Advisor MQL5 không?

Không. Nếu server của bạn chạy trên Windows cùng máy với terminal MT5, bạn dùng được thư viện Python chính thức để đặt lệnh trực tiếp, không cần viết EA. Chỉ khi server chạy trên Linux hoặc bạn muốn tách biệt hoàn toàn phần thực thi thì mới cần EA làm cầu nối qua file.

Vì sao bot đặt lệnh MT5 hay bị lỗi invalid volume?

Lỗi này xảy ra khi khối lượng không đúng bước khối lượng tối thiểu của broker. Mỗi cặp có ba thông số cần tôn trọng: khối lượng nhỏ nhất, bước khối lượng và khối lượng lớn nhất. Bot phải đọc ba thông số này từ terminal rồi làm tròn xuống theo bước, thay vì dùng một con số cố định cho mọi cặp.

SL và TP nên truyền theo pip hay theo giá?

Nên truyền theo số điểm giá, đơn vị nhỏ nhất của cặp, và để server quy đổi ra giá thực tế. Mỗi cặp có số chữ số thập phân khác nhau, có cặp tính theo pip hai chữ số nhưng có cặp vàng lại tính theo số lẻ, nên truyền theo giá tuyệt đối rất dễ sai khi bạn mở rộng sang cặp mới.

Vì sao tên cặp trong webhook khác tên cặp trong MT5?

Nhiều broker thêm hậu tố vào tên cặp để phân biệt loại tài khoản, ví dụ XAUUSD.a hoặc EURUSDm. TradingView lại dùng tên chuẩn không hậu tố. Cách xử lý là để server ghép hậu tố theo cấu hình, và kiểm tra tên cặp có tồn tại trong danh sách ký hiệu của terminal trước khi đặt lệnh.

Cần bật gì trong MT5 để bot đặt được lệnh?

Cần bật cho phép giao dịch thuật toán trong phần tuỳ chọn của terminal, và nếu dùng EA thì phải cho phép EA giao dịch. Với giải pháp cầu nối qua file, EA cần được cấp quyền đọc ghi file. Ngoài ra, tài khoản phải ở trạng thái cho phép giao dịch và cặp bạn muốn đánh phải có trong danh sách ký hiệu hiển thị.

Bot MT5 có cần biết giờ mở cửa của sàn không?

Có. MT5 dùng giờ máy chủ của broker, khác với giờ trên chart TradingView. Nếu bot không quy đổi, log sẽ lệch giờ và các so sánh theo ngày có thể sai. Với chiến lược chỉ giao dịch trong phiên, bot cũng nên kiểm tra cặp có đang trong giờ giao dịch hay không trước khi đặt lệnh, để tránh lệnh bị từ chối hoặc bị khớp giá xấu ở thời điểm mở cửa.