INNER CODE UNIT · Python
place_order
flukelaster/ai-trading-agent · mt5_bridge/main.py:262
async def place_order(req: OrderRequest):
if not ensure_connected():
return mt5_response(False, error="MT5 not connected")
symbol_info = mt5.symbol_info(req.symbol)
if symbol_info is None:
return mt5_response(False, error=f"Symbol {req.symbol} not found")
if not symbol_info.visible:
mt5.symbol_select(req.symbol, True)
# Clamp and round volume to symbol spec
vol = req.lot
vol_min = symbol_info.volume_min
vol_max = symbol_info.volume_max
vol_step = symbol_info.volume_step
if vol_step > 0:
vol = math.floor(vol / vol_step) * vol_step
vol = round(vol, 10) # avoid float precision artifacts