Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1372
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если объект не найден, то это и есть ошибка поиска объекта…
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.