Спасибо, я извиняюсь, так вышло, что возился с переводом на мт5 версию одного советника, и провозился очень долго, а логика торговли не совпадала, я вроде бы и Magic проверял и всё что могло бы так влиять, в итоге я написал простой пример и он не работал. Но я потом нашёл у себя ошибку, и этот пример выше к ней никакого отношения не имеет. Я хотел удалить своё сообщение но не успел.
код ошибки содержится в структуре MqlTradeResult, я ведь не смогу использовать вышеприведённый код в МТ5, нед доступа к result, как можно модифицировать mt4orders.mqh для возврата ошибок торгового сервера? спасибо
код ошибки содержится в структуре MqlTradeResult, я ведь не смогу использовать вышеприведённый код в МТ5, нед доступа к result, как можно модифицировать mt4orders.mqh для возврата ошибок торгового сервера? спасибо
Можно заставить GetLastError возвращать больше значений - дополнить и кодами из MqlTradeResult.
Т.е. если произойдёт ошибка при закрытии ордера GetLastError() вернёт код ошибки ( торгового сервера) , даже если мы не будем проверять MqlTradeResult Result; Result.retcode в OrderSend(Request, Result)?
Aliaksandr Kryvanos: Т.е. если произойдёт ошибка при закрытии ордера GetLastError() вернёт код ошибки ( торгового сервера) , даже если мы не будем проверять MqlTradeResult Result; Result.retcode в OrderSend(Request, Result)?
Вы говорите не сложно реализовать, а по факту GetLastError() может вернуть ошибку торгового сервера, если ордер не отправится, без анализа структуры MqlTradeResult.
Вы говорите не сложно реализовать, а по факту GetLastError() может вернуть ошибку торгового сервера, если ордер не отправится, без анализа структуры MqlTradeResult.
но нужно ли так делать, если GetLastError() может и так работать?
Не понял Вас. Ваша реализация в if содержит ошибку. Более того, есть еще такое понятие, как TRADE_RETCODE_DONE_PARTIAL - это успешное выполнение OrderSend.
И даже если исправить Ваш код, то он только выведет в журнал сообщение об ошибке (а кто-то еще может не хотеть каждый раз это видеть). Но в MQL оно будет НЕ доступно.
Ясно, а можете натолкнуть на мысль как GetLastError() заставить выводить и ошибки торгового сервера, я бы написал сам, если у Вас пока нет времени. Спасибо
не работает выбор по символу и маджику
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
}
не работает OrderSelect не выбирает ордер (тикет по индексу) для работы с ним, простой пример во вложении и он не работает на мт5 почему-то
не работает выбор по символу и маджику
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
}
не работает OrderSelect не выбирает ордер (тикет по индексу) для работы с ним, простой пример во вложении и он не работает на мт5 почему-то
Здравствуйте, вот вопрос имеется у меня, как можно получить данные об ошибках при отправке ордеров для МТ5, в МТ4 варианте это выглядит так
if (CloseError == false)
{
ResetLastError();
error = GetLastError();
Print(" CloseOpenedTrades OrderClose failed" + " - ticket=", OrderTicket() + string(error) + ") " + ErrorDescription(error) + " - ticket= ", OrderTicket());
}
код ошибки содержится в структуре MqlTradeResult, я ведь не смогу использовать вышеприведённый код в МТ5, нед доступа к result, как можно модифицировать mt4orders.mqh для возврата ошибок торгового сервера? спасибо
Здравствуйте, вот вопрос имеется у меня, как можно получить данные об ошибках при отправке ордеров для МТ5, в МТ4 варианте это выглядит так
if (CloseError == false)
{
ResetLastError();
error = GetLastError();
Print(" CloseOpenedTrades OrderClose failed" + " - ticket=", OrderTicket() + string(error) + ") " + ErrorDescription(error) + " - ticket= ", OrderTicket());
}
код ошибки содержится в структуре MqlTradeResult, я ведь не смогу использовать вышеприведённый код в МТ5, нед доступа к result, как можно модифицировать mt4orders.mqh для возврата ошибок торгового сервера? спасибо
Т.е. если произойдёт ошибка при закрытии ордера GetLastError() вернёт код ошибки ( торгового сервера) , даже если мы не будем проверять MqlTradeResult Result; Result.retcode в OrderSend(Request, Result)?
Да, это не сложно реализовать.
if (CloseError == false)
{
ResetLastError();
error = GetLastError();
Print(" CloseOpenedTrades OrderClose failed" + " - ticket=", OrderTicket() + string(error) + ") " + ErrorDescription(error) + " - ticket= ", OrderTicket());
}
Не понял смысл выделенного.
Да, это не сложно реализовать.
Не понял смысл выделенного.
так было в советнике для мт4
Вы говорите не сложно реализовать, а по факту GetLastError() может вернуть ошибку торгового сервера, если ордер не отправится, без анализа структуры MqlTradeResult.
Просто можно дописать проверку в:
{
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);
}
но нужно ли так делать, если GetLastError() может и так работать?
так было в советнике для мт4
Тогда там ошибка в логике.
Вы говорите не сложно реализовать, а по факту GetLastError() может вернуть ошибку торгового сервера, если ордер не отправится, без анализа структуры MqlTradeResult.
Просто можно дописать проверку в:
{
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);
}
но нужно ли так делать, если GetLastError() может и так работать?
Не понял Вас. Ваша реализация в if содержит ошибку. Более того, есть еще такое понятие, как TRADE_RETCODE_DONE_PARTIAL - это успешное выполнение OrderSend.
И даже если исправить Ваш код, то он только выведет в журнал сообщение об ошибке (а кто-то еще может не хотеть каждый раз это видеть). Но в MQL оно будет НЕ доступно.
Поэтому вариант, когда GetLastError возвращает и стандартные ошибки времени выполнения и дополнительные коды возврата торгового сервера, видится самым оптимальным.