Если объект не найден, то это и есть ошибка поиска объекта…
ERR_OBJECT_NOT_FOUND
4202
Графический объект не найден
Не надо его алертить…
Ну, когда-то я был научен, что _LastError вообще не должен возвращать никаких ошибок. И кажется даже это было требованием маркета. Теперь уже всё не так строго?
И еще, насколько я понимаю, эта ошибка может перезаписать, какую-либо другую более важную ошибку в коде, как с этим справиться?
Ну, когда-то я был научен, что _LastError вообще не должен возвращать никаких ошибок. И кажется даже это было требованием маркета. Теперь уже всё не так строго?
И еще, насколько я понимаю, эта ошибка может перезаписать, какую-либо другую более важную ошибку в коде, как с этим справиться?
В переменной _LastError хранится значение последней ошибки, произошедшей во время исполнения mql5-программы.
Вас кто-то плохо учил. Переменная _LastError будет хранить полученное значение до тех пор, пока не произойдёт следующая, очередная ошибка.
Требованием маркета является отсутствие ошибок исполнения получаемых от сервера брокера\дц. Читайте документацию…
Oleg Kolesov #: Алексей спасибо за желание помочь. У вас тоже принцип: голодному удочку, а не рыбу.
Не просто удочку, а пояснение где почитать о решении проблемы. Если человек хочет разобраться в проблеме, я готов потратить время пока он не поймёт мои слова. Но если просят, сделай, а я по этому шаблону разберусь, значит человек разбираться не будет. Ему надо чтобы кто-то сделал, а дальше, хоть трава не расти…
Вас кто-то плохо учил. Переменная _LastError будет хранить полученное значение до тех пор, пока не произойдёт следующая, очередная ошибка.
Ну вот смотрите, вначале основного кода происходит например такая ошибка:
ERR_INVALID_DATETIME
4010
Неправильное значение даты и/или времени
А далее по коду создается объект и _LastError перезаписывается на
ERR_OBJECT_NOT_FOUND
4202
Графический объект не найден
Если проверка _LastError стоит в конце кода, как я обычно делаю, то я получу 4202 и просто проигнорирую ее. То есть ошибка 4010 останется незамеченной. Где я ошибаюсь?
Ну вот смотрите, вначале основного кода происходит например такая ошибка:
ERR_INVALID_DATETIME
4010
Неправильное значение даты и/или времени
А далее по коду создается объект и _LastError перезаписывается на
ERR_OBJECT_NOT_FOUND
4202
Графический объект не найден
Если проверка _LastError стоит в конце кода, как я обычно делаю, то я получу 4202 и просто проигнорирую ее. То есть ошибка 4010 останется незамеченной. Где я ошибаюсь?
Спасибо, этого не знал, думал все ошибки запрещены.
Записываю в массив значения времени конкретно каждого бара. На графике стоит ограничение 3000 баров.
Задача:
- Смещать массив значений при каждом новом баре.
Не получается настроить чтобы слаженно работало.
Правильно же я смещаю массив при новом баре, если (this.m_rt-this.m_pc)=1?
То-есть размер массива должен быть ровно 3000 и при образовании нового бара нулевой индекс надо переписать первым ……… и в конец дописать новое значение?
Если я правильно понял, то зачем цикл? Просто надо копировать массив сам в себя в нулевой индекс начиная с первого, а потом в последний индекс вписать новое значение.
Если объект не найден, то это и есть ошибка поиска объекта…
ERR_OBJECT_NOT_FOUND
4202
Графический объект не найден
Не надо его алертить…
Провел пару тестов... тут вот какое дело получается. На MQL5 использовать при создании объектов ObjectFind() вовсе необязательно. Объект можно создавать без всяких предварительных проверок его существования (просто через ObjectCreate) и даже внутри OnTick такой код не вызывается никаких ошибок _LastError.
Не знаю как это реализовано в недрах системного кода MQL5, возможно там уже уже зашита какая-то проверка, что объект будет создаваться только, если его еще нет. Но получается, что по крайней мере при создании объекта внутри MQL5 ObjectFind() просто не нужен. И видимо все его свойства безвариантно постоянно обновляются на каждом тике.
Чего не не скажешь про MQL4. Там создание объекта поверх уже существующего вызывается ошибку 4200 ("Объект уже существует"). То есть для его создания использование ObjectFind() уже обязательно. При этом остается простая возможность закрыть его свойства от постоянного переобновления без генерации ошибок _LastError.
То-есть размер массива должен быть ровно 3000 и при образовании нового бара нулевой индекс надо переписать первым ……… и в конец дописать новое значение?
Если я правильно понял, то зачем цикл? Просто надо копировать массив сам в себя в нулевой индекс начиная с первого, а потом в последний индекс вписать новое значение.
Ну да вроде все понятно, но если появляется обрыв, например задержка, появилось два бара, их записываю.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Если объект не найден, то это и есть ошибка поиска объекта…
ERR_OBJECT_NOT_FOUND
4202
Графический объект не найден
Не надо его алертить…
Ну, когда-то я был научен, что _LastError вообще не должен возвращать никаких ошибок. И кажется даже это было требованием маркета. Теперь уже всё не так строго?
И еще, насколько я понимаю, эта ошибка может перезаписать, какую-либо другую более важную ошибку в коде, как с этим справиться?
Ну, когда-то я был научен, что _LastError вообще не должен возвращать никаких ошибок. И кажется даже это было требованием маркета. Теперь уже всё не так строго?
И еще, насколько я понимаю, эта ошибка может перезаписать, какую-либо другую более важную ошибку в коде, как с этим справиться?
Вас кто-то плохо учил. Переменная _LastError будет хранить полученное значение до тех пор, пока не произойдёт следующая, очередная ошибка.
Требованием маркета является отсутствие ошибок исполнения получаемых от сервера брокера\дц. Читайте документацию…
Алексей спасибо за желание помочь. У вас тоже принцип: голодному удочку, а не рыбу.
Вас кто-то плохо учил. Переменная _LastError будет хранить полученное значение до тех пор, пока не произойдёт следующая, очередная ошибка.
Ну вот смотрите, вначале основного кода происходит например такая ошибка:
ERR_INVALID_DATETIME
4010
Неправильное значение даты и/или времени
А далее по коду создается объект и _LastError перезаписывается на
ERR_OBJECT_NOT_FOUND
4202
Графический объект не найден
Если проверка _LastError стоит в конце кода, как я обычно делаю, то я получу 4202 и просто проигнорирую ее. То есть ошибка 4010 останется незамеченной. Где я ошибаюсь?
Требованием маркета является отсутствие ошибок исполнения получаемых от сервера брокера\дц.
Спасибо, этого не знал, думал все ошибки запрещены.
Ну вот смотрите, вначале основного кода происходит например такая ошибка:
ERR_INVALID_DATETIME
4010
Неправильное значение даты и/или времени
А далее по коду создается объект и _LastError перезаписывается на
ERR_OBJECT_NOT_FOUND
4202
Графический объект не найден
Если проверка _LastError стоит в конце кода, как я обычно делаю, то я получу 4202 и просто проигнорирую ее. То есть ошибка 4010 останется незамеченной. Где я ошибаюсь?
Спасибо, этого не знал, думал все ошибки запрещены.
Именно так. Вы не ошибаетесь…
Здравствуйте, может кто подсказать.
Записываю в массив значения времени конкретно каждого бара. На графике стоит ограничение 3000 баров.
Задача:
- Смещать массив значений при каждом новом баре.
Не получается настроить чтобы слаженно работало.
Правильно же я смещаю массив при новом баре, если (this.m_rt-this.m_pc)=1?
Здравствуйте, может кто подсказать.
Записываю в массив значения времени конкретно каждого бара. На графике стоит ограничение 3000 баров.
Задача:
- Смещать массив значений при каждом новом баре.
Не получается настроить чтобы слаженно работало.
Правильно же я смещаю массив при новом баре, если (this.m_rt-this.m_pc)=1?
То-есть размер массива должен быть ровно 3000 и при образовании нового бара нулевой индекс надо переписать первым ……… и в конец дописать новое значение?
Если я правильно понял, то зачем цикл? Просто надо копировать массив сам в себя в нулевой индекс начиная с первого, а потом в последний индекс вписать новое значение.
Если объект не найден, то это и есть ошибка поиска объекта…
ERR_OBJECT_NOT_FOUND
4202
Графический объект не найден
Не надо его алертить…
Провел пару тестов... тут вот какое дело получается. На MQL5 использовать при создании объектов ObjectFind() вовсе необязательно.
Объект можно создавать без всяких предварительных проверок его существования (просто через ObjectCreate) и даже внутри OnTick такой код не вызывается никаких ошибок _LastError.
Не знаю как это реализовано в недрах системного кода MQL5, возможно там уже уже зашита какая-то проверка, что объект будет создаваться только, если его еще нет. Но получается, что по крайней мере при создании объекта внутри MQL5 ObjectFind() просто не нужен. И видимо все его свойства безвариантно постоянно обновляются на каждом тике.
Чего не не скажешь про MQL4. Там создание объекта поверх уже существующего вызывается ошибку 4200 ("Объект уже существует"). То есть для его создания использование ObjectFind() уже обязательно. При этом остается простая возможность закрыть его свойства от постоянного переобновления без генерации ошибок _LastError.
Прошу подтвердить мои выводы.
То-есть размер массива должен быть ровно 3000 и при образовании нового бара нулевой индекс надо переписать первым ……… и в конец дописать новое значение?
Если я правильно понял, то зачем цикл? Просто надо копировать массив сам в себя в нулевой индекс начиная с первого, а потом в последний индекс вписать новое значение.
Ну да вроде все понятно, но если появляется обрыв, например задержка, появилось два бара, их записываю.
Спасибо понял, попробую через CopyTime.