Новая версия платформы MetaTrader 4 build 1453

 

Появился новый глюк. Создаёшь скрипт, компилируешь. Кидаешь на график и отслеживаешь действия в журнале. Там смотрим сообщение о том, что скрипт initialize, затем скрипт remove. Но работу свою не выполнил. Тут же кидаешь его повторно и видишь, что работу он наконец-то соизволил сделать.

Чтоб не думать, что у меня в скрипте цикл while повесился, я создал скрипт без циклов. Скрипт, который просто создаёт 2 горизонтальные линии на графике цены. Компиляция - Бросок и... и ни чего не создано. Снова бросок и линии встали. Меняешь при шоу инпутс в настройках скрипта какой-то параметр, кидаешь на график и скрипт опять ни чего не сделал, но с графика выгузился. Снова кидаешь на график с тем же изменённым параметром (изменённым опять до той же самой величины) и, о чудо (!) скрипт сработал!
Почему некоторые скрипты стали срабатывать только со второго раза, да и то не всегда?

 
Vitaly Murlenko:

Появился новый глюк. Создаёшь скрипт, компилируешь. Кидаешь на график и отслеживаешь действия в журнале. Там смотрим сообщение о том, что скрипт initialize, затем скрипт remove. Но работу свою не выполнил. Тут же кидаешь его повторно и видишь, что работу он наконец-то соизволил сделать.

Чтоб не думать, что у меня в скрипте цикл while повесился, я создал скрипт без циклов. Скрипт, который просто создаёт 2 горизонтальные линии на графике цены. Компиляция - Бросок и... и ни чего не создано. Снова бросок и линии встали. Меняешь при шоу инпутс в настройках скрипта какой-то параметр, кидаешь на график и скрипт опять ни чего не сделал, но с графика выгузился. Снова кидаешь на график с тем же изменённым параметром (изменённым опять до той же самой величины) и, о чудо (!) скрипт сработал!
Почему некоторые скрипты стали срабатывать только со второго раза, да и то не всегда?

ChartRedraw в конец скрипта добавьте для эксперимента. 
 
Artyom Trishkin #:
ChartRedraw в конец скрипта добавьте для эксперимента. 

Изначально скрипт шёл по графику и собирал статистику свеч. Результат должен был выводить Алертом. Да, был цикл While. Я его убрал. На работе скрипта не отразилось ни как - Всё равно алерты не с первого раза выскакивают. По поводу Чарт редро. После нанесения линий на график скрипт должен был сообщить принтом о завершении работы. Он этого не сделал. Чарт редро не повлияет.

Я делал группу скриптов не для себя. Заказчик ответил, что высланные с крипты не работают. Когда я рассказал ему о сбое в терминале и попросил кинуть на график ещё раз-другой, он с удивлением сказал, что всё работает.

 
Vitaly Murlenko #:

Изначально скрипт шёл по графику и собирал статистику свеч. Результат должен был выводить Алертом. Да, был цикл While. Я его убрал. На работе скрипта не отразилось ни как - Всё равно алерты не с первого раза выскакивают. По поводу Чарт редро. После нанесения линий на график скрипт должен был сообщить принтом о завершении работы. Он этого не сделал. Чарт редро не повлияет.

Я делал группу скриптов не для себя. Заказчик ответил, что высланные с крипты не работают. Когда я рассказал ему о сбое в терминале и попросил кинуть на график ещё раз-другой, он с удивлением сказал, что всё работает.

В пятëрке ChartRedraw дëргает очередь сообщений, принудительно обновляя график. Может, в четвëрке что-то поменялось в ту же сторону. Я написал - попробуйте для эксперимента. Если бы сделали и проверили - это одно, а философствовать - совсем другое. 
 
Почему-то со старыми проверенными индикаторами происходит нечто подобное. На график кидаешь, индикатор на графике есть, а ни чего не отрисовывает. Отсоединяешь, кидаешь заново - рисует. И это те, которые в предыдущих билдах работали безупречно. Коды не менял - просто обновил терминал. Иногда по нескольку раз переприсоединять приходится.
 

Попробуйте переименовать OnInit(), например в MyOnInit().

И запустить однократно из OnCalculate().

 
Vitaly Murlenko #:
Почему-то со старыми проверенными индикаторами происходит нечто подобное. На график кидаешь, индикатор на графике есть, а ни чего не отрисовывает. Отсоединяешь, кидаешь заново - рисует. И это те, которые в предыдущих билдах работали безупречно. Коды не менял - просто обновил терминал. Иногда по нескольку раз переприсоединять приходится.
ChartRedraw попробуйте добавить, 2 раза уже предлагали это сделать.
 

Ребят, да неужели у вас всё иначе? У меня в компе терминалы, скачанные у разных брокеров. У всех без исключения после обновления до последнего билда один и тот же глюк: при броске на график любого из пользовательских индикаторов, запускается в работу он не всегда с первого раза. (Да и со скриптами та же беда) Нахрена пляски с бубном (лишние ChartRedraw), если в предыдущих билдах (во ВСЕХ!) это работало без плясок? Элементарный индикатор, который заполняет индикаторный буфер результатами простой математики и который всегда без проблем рисовался, сейчас стал рисоваться не с первого раза. И, ОБРАТИТЕ ВНИМАНИЕ(!) речь не идёт о создании объектов, которые реально требуют перерисовки. Речь только о значениях в индикаторном буфере, к которому ни когда мы не применяли чарт редро! Думаете это нормальное поведение терминала?

P.S.

Если я добавлю в код чарт редро туда, где он ни когда не применялся (нужды не было) и это реально сработает, то это очередной костыль. Тогда придётся править коды всех своих индикаторов. Ладно я могу исправить. А как быть тем, кто не кодит и при этом индюка купил? Вы в название форума-то посмотрите. "Форум ТРЕЙДЕРОВ...." Понимаете, ТРЕЙДЕРОВ! Он должен по умолчанию быть ориентирован не на программистов! Любой форум - это всегда обсуждение каких-то вопросов и поиск решения совместными усилиями. Цель - облегчение жизни, а не создание очередной сложности.

 
Vitaly Murlenko #:
Цель - облегчение жизни, а не создание очередной сложности.
А разработчики давно уже всем прямым текстом говорят, что пора переезжать на MetaTrader 5. Так что, возможно, новые проблемы это мягкое принуждение к переходу.
 
Ilya Filatov #:
А разработчики давно уже всем прямым текстом говорят, что пора переезжать на MetaTrader 5. Так что, возможно, новые проблемы это мягкое принуждение к переходу.
А в пятерке, типа, всё ок?
 

Подход метаквотесов похож на подход Билла Гейтса. Отдаётся в продажу (в пользование) недоотлаженный продукт с обещанием будущих улучшений. А далее улучшения + новые недоразумения, которые создадут базис для будущий улучшений и так цикл. А за это время доим, доим и доим пользователя. Заказчику мы бы так советника делали, мол, вот на тебе пока вот эту версию, она кое-как работает (ну в целом), а там ещё будешь доплачивать, а мы будем улучшать и устранять.

"Я не люблю манежи и арены

На них мильён меняют по рублю

Пусть впереди большие перемены

Я это ни когда не полюблю"

В.С. Высоцкий.

С МТ5 и MQL5 та же история: длительный-длительный дебаг. Вот почему я не хотел изначально переходить на MQL5 - в старом MQL4 уже понятны недостатки и написаны костыли. Новый язык и опять ночи на пролёт придётся новые костыли выдумывать. Кому это понравится?.. Время жизни-то не пополнишь.