Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Помогите плз,делаю визардом советник в MEditor5,компилирую,ставлю на график ,а он (советник ) вылетает,т.е. значек появляется и пропадает
То есть, никаких ошибок тестера или среды исполнения MQL5 нет, а есть явная ошибка программиста.
Гм. Программист обнаружил неожиданное для него поведение программы, выявил суть этого поведения, явно воспроизвёл его, привёл простейший наглядный пример с доведением до абсурда (Sleep с отрицательными значениями), а ему - это ошибка программиста :) Хотя "ошибка программиста" - это, например, явное утверждение, что функция Sleep в тестере не работает.
Из данных выше разъяснений следует, что разработчики считают допустимым использование функцией Sleep() отрицательных значений. Хотя из описания функции ("...задерживает выполнение текущего эксперта или скрипта на определенный интервал") трудно предположить, что интервал задержки может исчисляться отрицательными числами. ..И раз уж речь зашла об ошибках, то можете считать таковой моё утверждение о том, что терминалу следовало бы пресекать использование отрицательных значений в функции Sleep().
Гм. Программист обнаружил неожиданное для него поведение программы, выявил суть этого поведения, явно воспроизвёл его, привёл простейший наглядный пример с доведением до абсурда (Sleep с отрицательными значениями), а ему - это ошибка программиста :) Хотя "ошибка программиста" - это, например, явное утверждение, что функция Sleep в тестере не работает.
Из данных выше разъяснений следует, что разработчики считают допустимым использование функцией Sleep() отрицательных значений. Хотя из описания функции ("...задерживает выполнение текущего эксперта или скрипта на определенный интервал") трудно предположить, что интервал задержки может исчисляться отрицательными числами. ..И раз уж речь зашла об ошибках, то можете считать таковой моё утверждение о том, что терминалу следовало бы пресекать использование отрицательных значений в функции Sleep().
Yedelkin, как Вы представляете себе контроль параметров функций компилятором? А ведь таких функций, у которых надо бы контролировать значения параметров - не один десяток.
Здесь одно из двух - либо скорость компиляции, либо тотальный параноидальный контроль.
Мы пошли по первому пути. При этом исполнительная подсистема не пропускает неверные параметры на этапе выполнения, формируя код ошибки, который можно взять при помощи функции GetLastError.
Добро пожаловать в мир реального программирования.
А Вы, видимо, ожидали, что при отрицательном значении задержки выйдете из Sleep раньше чем зайдёте?
Предположение об ожиданиях - неверное.
Работа с отрицательными значениями вообще не предполагалась. См. мой пост выше: "из описания функции ("...задерживает выполнение текущего эксперта или скрипта на определенный интервал") трудно предположить, что интервал задержки может исчисляться отрицательными числами". И речь идёт не о том, что я "мог бы ожидать", а о том, что, фактически, функция SLeep позволяет работать с отрицательными значениями. Когда это выяснилось - отправил сообщение. Если считаете такую работу функции Sleep() допустимой - так оно и останется.
а о том, что, фактически, функция SLeep позволяет работать с отрицательными значениями.
Предположение об ожиданиях - неверное.
Работа с отрицательными значениями вообще не предполагалась. См. мой пост выше: "из описания функции ("...задерживает выполнение текущего эксперта или скрипта на определенный интервал") трудно предположить, что интервал задержки может исчисляться отрицательными числами". И речь идёт не о том, что я "мог бы ожидать", а о том, что, фактически, функция SLeep позволяет работать с отрицательными значениями. Когда это выяснилось - отправил сообщение. Если считаете такую работу функции Sleep() допустимой - так оно и останется.
Разумеется, внутреннее представление беззнаковое.
Можете потребовать изменения типа параметра на uint.
Yedelkin, как Вы представляете себе контроль параметров функций компилятором? А ведь таких функций, у которых надо бы контролировать значения параметров - не один десяток.
Здесь одно из двух - либо скорость компиляции, либо тотальный параноидальный контроль.
Мы пошли по первому пути. При этом исполнительная подсистема не пропускает неверные параметры на этапе выполнения, формируя код ошибки, который можно взять при помощи функции GetLastError.
Да джентльмены, я всегда на вашей стороне! :) И знаю в программировании только малую часть того, что знаете вы (ориентируюсь только по Справочнику MQL5). Но если вижу некие моменты, не понятные для меня лично - пишу об этом. Стараюсь привести наглядный пример "непонятного момента", если получится. Попутно объясняю, почему данный момент непонятен именно для меня. Соответственно, если вы считаете, что "тревога ложная", то получается, что либо я неправильно понял справочные материалы, либо справочные материалы не отражают всю информацию, необходимую для понимания момента. В данном случае мне было бы достаточно наличия в разделе "Функция Sleep" указания (предупреждения), что (1) "компилятор не контролирует значение параметра функции, в связи с чем функция может работать с отрицательными значениями" и (2) "Функция Sleep() полностью поддерживается тестером".
..Как работает компилятор - понятия не имею. Исходя из описанной парадигмы работы компилятора напрашивается пожелание: отразить в примечаниях к десяткам функций, что значения их параметров терминалом не контролируются.