MT5 Python API的关闭位置不起作用



我试图从Python关闭MT5中的一个现有位置,但MT5总是声明"不支持的填充模式">
我尝试了所有可能的填充模式,但总是得到相同的结果。同样,如果我在请求中省略了填充模式。我还试图从符号信息中获取填充模式,并在请求中使用它,但没有成功。这发生在实时帐户上
这是我的函数,它接受一个现有职位并发送该职位的关闭请求:

async def ClosePosition(position):
if (position.type == mt5.POSITION_TYPE_BUY):
order_type = mt5.ORDER_TYPE_SELL
price = mt5.symbol_info_tick(position.symbol).bid
else:
order_type = mt5.ORDER_TYPE_BUY
price = mt5.symbol_info_tick(position.symbol).ask
request = {
"action": mt5.TRADE_ACTION_DEAL,
"symbol": position.symbol,
"volume": position.volume,
"type": order_type,
"position": position.ticket,
"price": price,
"deviation": 10,
"magic": 0,
"comment": "Closed by Python",
"type_time": mt5.ORDER_TIME_GTC,
"type_filling": mt5.ORDER_FILLING_RETURN
}
result = mt5.order_send(request)

这是该杂志所说的:
Trades '#######': failed market buy 0.01 CHFJPY, close #109459760 sell 0.01 CHFJPY 116.807 [Unsupported filling mode]

非常感谢您的帮助。

最终我发现SYMBOL_FILLING_MODE的值与ENUMORDER_TYPE_FILLING的值不匹配。当我将SYMBOL_FILLING_MODE转换为适当的ENUM_ORDR_TYPE_FILLING时,它就起作用了
因此,在我的示例中,使用mt5.ORDER_FILLING_IOC成功关闭仓位。

最新更新