Roger:
Т.е., если у меня до этого была ошибка в программе, но я не вызвал
функцию GetLastError, и потом в другом месте программы я вдруг, ни с того ни с сего,
вызову эту функцию, то все равно получу 0?
Пока не вызовите GetLastError, код ошибки не обнулиться, а как только
вызовите, вернет последнюю случившуюся ошибку.
Roger:
Т.е., если у меня до этого была ошибка в программе, но я не вызвал
функцию GetLastError, и потом в другом месте программы я вдруг, ни с того ни с сего,
вызову эту функцию, то все равно получу 0?
Пока не вызовите GetLastError, код ошибки не обнулиться, а как только
вызовите, вернет последнюю случившуюся ошибку.
Которая могла быть сформирована при предыдущем прогоне программы.
В таком случае в Init() лучше всего обнулять код ошибки.
Которая могла быть сформирована при предыдущем прогоне программы.
В таком случае в Init() лучше всего обнулять код ошибки.
Похоже это излишне.
Справочник MQL4 - Выполнение программ - Ошибки выполнения
Выполнение программ
Вызов импортируемых функций
Ошибки выполнения
В исполняющей подсистеме клиентского терминала существует
возможность сохранения кода ошибки в случае ее возникновения
при выполнении mql4-программы. Для каждой исполняемой mql4-программы
предусмотрена своя собственная специальная переменная last_error.
Перед запуском функции init переменная last_error обнуляется. При возникновении ошибочной ситуации во время вычислений или
в процессе вызова встроенной функции переменная last_error принимает
соответствующий код ошибки. Значение, сохраненное в этой переменной, можно получить при
помощи функции GetLastError(). При этом переменная last_error обнуляется.
MetaQuotes:
Вы забыли указать точный пример вызова OrderSend
voidbuyLot(){intticket;
doubledLots = getLot();
if(dLots == 0)return;
if(AccountFreeMarginCheck(Symbol(),OP_BUY,dLots)<=0 || GetLastError()==134)return;
ticket=OrderSend(Symbol(),OP_BUY,dLots,Ask,3,Ask-StopProfit*Point,Ask+(ClosePribul*5)*Point,"StepByStep Cpp",magicnumber,0,Blue);
if(ticket>0){if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());
}else{interr=GetLastError();
Print("Order open error(",err,")");
}}
1. Стоп лосс и тейк профит следует устанавливать относительно
цены закрытия (для BUY - это Bid) - соответственно при выставлении
стопов вы не учитываете спред и можете получить ошибку "неверные
стопы".
2. Не могли бы вы привести фрагмент журнала клиентского терминала
- 10 строк вверх и вниз от сообщения об ошибке с кодом '1' ?
MetaQuotes:
Вы забыли указать точный пример вызова OrderSend
1. Стоп лосс и тейк профит следует устанавливать относительно
цены закрытия (для BUY - это Bid) - соответственно при выставлении
стопов вы не учитываете спред и можете получить ошибку "неверные
стопы".
2. Не могли бы вы привести фрагмент журнала клиентского терминала
- 10 строк вверх и вниз от сообщения об ошибке с кодом '1' ?
По поводу журнала - к сожалению в журнале не могу найти это место
(каталог log). У меня ещё позже вылетела критическая ошибка (содержание
ошибки сохранил). Как я понял журнал не пишется в файл лога сразу.
И видимо этот момент остался в памяти и не записался.
MetaQuotes:
Вы забыли указать точный пример вызова OrderSend
voidbuyLot(){intticket;
doubledLots = getLot();
if(dLots == 0)return;
if(AccountFreeMarginCheck(Symbol(),OP_BUY,dLots)<=0 || GetLastError()==134)return;
ticket=OrderSend(Symbol(),OP_BUY,dLots,Ask,3,Ask-StopProfit*Point,Ask+(ClosePribul*5)*Point,"StepByStep Cpp",magicnumber,0,Blue);
if(ticket>0){if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());
}else{interr=GetLastError();
Print("Order open error(",err,")");
}}
1. Стоп лосс и тейк профит следует устанавливать относительно
цены закрытия (для BUY - это Bid) - соответственно при выставлении
стопов вы не учитываете спред и можете получить ошибку "неверные
стопы".
2. Не могли бы вы привести фрагмент журнала клиентского терминала
- 10 строк вверх и вниз от сообщения об ошибке с кодом '1' ?
НАШЁЛ. Искал не там (было в experts\log). Файл с логами прилагаю. Ошибка
содержится в файле \experts\20070808.log Время - 22:42. Единственный момент
- у меня была закомментрована строка
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());
Т.е., если у меня до этого была ошибка в программе, но я не вызвал функцию GetLastError, и потом в другом месте программы я вдруг, ни с того ни с сего, вызову эту функцию, то все равно получу 0?
Пока не вызовите GetLastError, код ошибки не обнулиться, а как только вызовите, вернет последнюю случившуюся ошибку.
Т.е., если у меня до этого была ошибка в программе, но я не вызвал функцию GetLastError, и потом в другом месте программы я вдруг, ни с того ни с сего, вызову эту функцию, то все равно получу 0?
Пока не вызовите GetLastError, код ошибки не обнулиться, а как только вызовите, вернет последнюю случившуюся ошибку.
Которая могла быть сформирована при предыдущем прогоне программы. В таком случае в Init() лучше всего обнулять код ошибки.
Которая могла быть сформирована при предыдущем прогоне программы. В таком случае в Init() лучше всего обнулять код ошибки.
Похоже это излишне.
Справочник MQL4 - Выполнение программ - Ошибки выполнения
В исполняющей подсистеме клиентского терминала существует возможность сохранения кода ошибки в случае ее возникновения при выполнении mql4-программы. Для каждой исполняемой mql4-программы предусмотрена своя собственная специальная переменная last_error. Перед запуском функции init переменная last_error обнуляется. При возникновении ошибочной ситуации во время вычислений или в процессе вызова встроенной функции переменная last_error принимает соответствующий код ошибки. Значение, сохраненное в этой переменной, можно получить при помощи функции GetLastError(). При этом переменная last_error обнуляется.
Вы забыли указать точный пример вызова OrderSend
1. Стоп лосс и тейк профит следует устанавливать относительно цены закрытия (для BUY - это Bid) - соответственно при выставлении стопов вы не учитываете спред и можете получить ошибку "неверные стопы".
2. Не могли бы вы привести фрагмент журнала клиентского терминала - 10 строк вверх и вниз от сообщения об ошибке с кодом '1' ?
Вы забыли указать точный пример вызова OrderSend
2. Не могли бы вы привести фрагмент журнала клиентского терминала - 10 строк вверх и вниз от сообщения об ошибке с кодом '1' ?
По поводу журнала - к сожалению в журнале не могу найти это место (каталог log). У меня ещё позже вылетела критическая ошибка (содержание ошибки сохранил). Как я понял журнал не пишется в файл лога сразу. И видимо этот момент остался в памяти и не записался.
может нужно смотреть не \логи а \тестер\логи?
Вы забыли указать точный пример вызова OrderSend
1. Стоп лосс и тейк профит следует устанавливать относительно цены закрытия (для BUY - это Bid) - соответственно при выставлении стопов вы не учитываете спред и можете получить ошибку "неверные стопы".
2. Не могли бы вы привести фрагмент журнала клиентского терминала - 10 строк вверх и вниз от сообщения об ошибке с кодом '1' ?
соответственно в логах нет -
BUY order opened :Спасибо за логи. Не могли бы вы указать операционную систему и параметры компьютера (процессор - память)?
Процессор Celeron 2400
Память 2 Гб
Проблем с памятью и функционированием железа нет. Дополнительно к этому постоянно на этой машине каждый день идёт архивация - битых архивов нет.