Retcode=10016在metatrader 5中执行交易时



当尝试使用大于0.0的止损时,我得到retcode=10016('无效止损')。如果留在0.0,交易将执行良好,并在移动平均线再次交叉时关闭。

这里是止损和获利市场订单函数的变量:

sl = 25.00
tp = 100.00
def market_order(symbol, volume, order_type, sl, tp, deviation=20, magic=12345):
order_type_dict = {
'buy': mt5.ORDER_TYPE_BUY,
'sell': mt5.ORDER_TYPE_SELL
}

price_dict = {
'buy': mt5.symbol_info_tick(symbol).ask,
'sell': mt5.symbol_info_tick(symbol).bid
}

request = {
"action": mt5.TRADE_ACTION_DEAL,
"symbol": symbol,
"volume": volume,  # FLOAT
"type": order_type_dict[order_type],
"price": price_dict[order_type],
"sl": sl,  # FLOAT
"tp": tp,  # FLOAT
"deviation": deviation,  # INTERGER
"magic": magic,  # INTERGER
"comment": strategy_name,
"type_time": mt5.ORDER_TIME_GTC,
"type_filling": mt5.ORDER_FILLING_IOC,
}

order_result = mt5.order_send(request)
return(order_result)

我已经尝试添加sl和tp到这个相同的错误发生

if num_positions == 0 and check_allowed_trading_hours():
order_result = market_order(symbol, volume, 'buy', sl, tp)
print(order_result)
if num_positions == 0 and check_allowed_trading_hours():
order_result = market_order(symbol, volume, 'sell', sl, tp)
print(order_result)

检查您的符号规格。这是市场观察的一部分(详情请参阅https://www.metatrader5.com/en/terminal/help/trading/market_watch#specification)。您的代理定义的一些参数可能是此错误的根源。首先检查"停止水平"。参数。它被定义为:

止损水平-当前价格的价格通道(以点为单位),在该通道内不能设置止损,止盈和未决订单。当在通道内下订单时,服务器将返回消息&;Invalid stop &;并且不接受订单

例如,我的代理将此参数对AUDUSD设置为0,对BRN设置为10。因此,我可以为澳元美元设置任何止损水平,但对于人民币,止损水平的最小差异必须离买入价/卖出价差10点

另外检查"sl"中的小数点数。和";tp"变量。如果你发送的变量有很多小数点,服务器将(很可能)拒绝你的请求。

希望这能给有这个问题的人指明正确的方向。

相关内容

  • 没有找到相关文章

最新更新