Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
seleção por símbolo e majic não funciona
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
}
OrderSelect não funciona, não seleciona uma ordem (ticket por índice) para trabalhar com ela, exemplo simples no anexo e não funciona no MT5 por algum motivo.
A seleção por símbolo e majic não funciona
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
}
OrderSelect não funciona, não seleciona uma ordem (ticket por índice) para trabalhar com ela, exemplo simples no anexo e não funciona no mt5 por algum motivo
Olá, tenho uma dúvida: como posso obter dados sobre erros ao enviar ordens para o MT5, na versão MT4 é assim
if (CloseError == false)
{
ResetLastError();
error = GetLastError();
Print(" CloseOpenedTrades OrderClose failed" + " - ticket=", OrderTicket() + string(error) + ") " + ErrorDescription(error) + " - ticket= ", OrderTicket());
}
O código de erro está contido na estrutura MqlTradeResult, não poderei usar o código acima no MT5 sem acesso ao resultado, como posso modificar o mt4orders.mqh para retornar os erros do servidor de negociação?
Olá, tenho uma dúvida: como posso obter dados sobre erros ao enviar ordens para o MT5, na versão MT4 é assim
if (CloseError == false)
{
ResetLastError();
error = GetLastError();
Print(" CloseOpenedTrades OrderClose failed" + " - ticket=", OrderTicket() + string(error) + ") " + ErrorDescription(error) + " - ticket= ", OrderTicket());
}
O código de erro está contido na estrutura MqlTradeResult, não poderei usar o código acima no MT5 sem acesso ao resultado, como posso modificar o mt4orders.mqh para retornar os erros do servidor de negociação?
Ou seja, se houver um erro ao fechar um pedido, GetLastError() retornará o código de erro (do servidor de negociação), mesmo que não verifiquemos MqlTradeResult Result; Result.retcode in OrderSend(Request, Result)?
Sim, não é difícil de implementar.
if (CloseError == false)
{
ResetLastError();
error = GetLastError();
Print(" CloseOpenedTrades OrderClose failed" + " - ticket=", OrderTicket() + string(error) + ") " + ErrorDescription(error) + " - ticket= ", OrderTicket());
}
Não entendo o significado do destaque.
Sim, não é difícil de implementar.
Não entendo o significado da parte destacada.
estava no EA para o mt4
Você diz que não é difícil de implementar, mas, na verdade, GetLastError() pode retornar um erro do servidor de negociação se a ordem não for enviada, sem analisar a estrutura MqlTradeResult.
Você pode simplesmente adicionar uma verificação a:
{
MqlTradeResult Result;
if (::OrderSend(Request, Result) || Result.retcode != TRADE_RETCODE_DONE)
{
Print("OrderSend() error: ", ResultRetcodeDescription(Result.retcode));
return(false);
}
else
{
return(true);
}
//return(MT4ORDERS::OrderSend(Request, Result) ? Result.retcode < TRADE_RETCODE_ERROR : false);
}
mas é necessário fazer isso, se GetLastError() pode funcionar como está?
Esse era o caso do consultor mt4
Então, há um erro na lógica.
Você diz que não é difícil de implementar, mas, na verdade, GetLastError() pode retornar um erro do servidor de negociação, se a ordem não for enviada, sem analisar a estrutura MqlTradeResult.
Você pode simplesmente adicionar uma verificação a:
{
MqlTradeResult Result;
if (::OrderSend(Request, Result) || Result.retcode != TRADE_RETCODE_DONE)
{
Print("OrderSend() error: ", ResultRetcodeDescription(Result.retcode));
return(false);
}
else
{
return(true);
}
//return(MT4ORDERS::OrderSend(Request, Result) ? Result.retcode < TRADE_RETCODE_ERROR : false);
}
mas é necessário fazer isso, se GetLastError() pode funcionar como está?
Não estou entendendo. Sua implementação em if contém um erro. Além disso, existe algo como TRADE_RETCODE_DONE_PARTIAL - é uma execução bem-sucedida do OrderSend.
E mesmo que você corrija seu código, ele registrará apenas uma mensagem de erro (e talvez alguém não queira vê-la todas as vezes). Mas ela NÃO estará disponível na MQL.
Portanto, a variante em que GetLastError retorna tanto os erros de tempo de execução padrão quanto os códigos de retorno adicionais do servidor de negociação parece ser a mais adequada.