Công thức tính lot size chính xác dựa trên tick_value và tick_size của MT5, áp dụng đúng cho mọi symbol.
Sai lầm phổ biến của bot mới là hardcode công thức tính lot cho một symbol (thường là XAUUSD) rồi áp dụng cho mọi symbol. Điều này gây sai lệch nghiêm trọng vì mỗi loại tài sản có giá trị pip, kích thước hợp đồng khác nhau: vàng, cặp forex chính, cặp JPY, chỉ số — tất cả tính khác nhau.
MT5 cung cấp sẵn hai thông số cho mỗi symbol giúp tính lot chính xác cho mọi loại tài sản:
info = mt5.symbol_info(symbol)
tick_value = info.trade_tick_value # giá trị $ mỗi tick
tick_size = info.trade_tick_size # bước giá nhỏ nhấtrisk_usd = balance * risk_percent
sl_distance = abs(entry - stop_loss)
n_ticks = sl_distance / tick_size
loss_per_lot = n_ticks * tick_value
lot = risk_usd / loss_per_lotCông thức này tự động đúng cho vàng, EURUSD, GBPJPY, US30 — bất kỳ symbol nào — mà không cần if/else riêng. Đây là cách các bot chuyên nghiệp áp dụng.
Sau khi tính, luôn kiểm tra và làm tròn theo quy định sàn:
min_lot = info.volume_min
max_lot = info.volume_max
lot_step = info.volume_step
lot = max(min_lot, min(lot, max_lot))
lot = round(lot / lot_step) * lot_step