Новая версия MetaTrader 4 Client Terminal 387 и MetaTrader 4 Data Center build 387 - страница 10

 
nen:

Это не баг визуального режима. Это именно обнуление индикаторных буферов - переинициализация буферов 388 версией.

Увы, Вы ошибаетесь. Это штатная работа механизма под названием IndicatorCounted() - обнуление индикаторных буферов при существенном изменении истории (этот механизм был во всех билдах).

В данном случае появился баг в визуальном режиме (в реальном я такого за неделю не обнаружил). Что за баг я уже описал.

 
AlexSTAL:
Я постом ниже полностью нашёл причину этого поведения.

Спасибо за проверку, теперь ясно в какую сторону копать.

Постараемся найти, исправить и как можно скорее выпустить обновление.

 
AlexSTAL:
Ну вот видите - Вы сами и отвечаете себе

Ошибся, в последних разработках IndicatorCounted() не применяется. В ZUP как раз применяется. И не ловит эту переинициализацию.
 
Хочу сообщить что в терминале и в последнем билде есть Баг а именно индикатор iBands при указании параметра deviation 0.8 ставит 0 . При любом указании меньше 1 ставит 0. Я понимаю что этот параметр отностится к int и должен быть целым числом Но при прикреплении индикатора к графику значение deviation можно ставить меньше 1 . Почему на графике можно ставить меньше 1 а в эксперте нет ...... или как это победить обойти ..............
 
VOLDEMAR:
Хочу сообщить что в терминале и в последнем билде есть Баг а именно индикатор iBands при указании параметра deviation 0.8 ставит 0 . При любом указании меньше 1 ставит 0. Я понимаю что этот параметр отностится к int и должен быть целым числом Но при прикреплении индикатора к графику значение deviation можно ставить меньше 1 . Почему на графике можно ставить меньше 1 а в эксперте нет ...... или как это победить обойти ..............
Так было всегда, насколько я помню. Если нет, то Слава (stringo) меня поправит.
 
VOLDEMAR:
Хочу сообщить что в терминале и в последнем билде есть Баг а именно индикатор iBands при указании параметра deviation 0.8 ставит 0 . При любом указании меньше 1 ставит 0. Я понимаю что этот параметр отностится к int и должен быть целым числом Но при прикреплении индикатора к графику значение deviation можно ставить меньше 1 . Почему на графике можно ставить меньше 1 а в эксперте нет ...... или как это победить обойти ..............

Да. посмотрите на тип передаваемых параметров.

он int

поэтому используйте iCustom BBands

 
sergeev:

Да. посмотрите на тип передаваемых параметров.

он int

поэтому используйте iCustom BBands

а как его использовать ?????

ни разу не пользовался ....

 
VOLDEMAR:

а как его использовать ?????

ни разу не пользовался ....

вот и хороший повод начать. всегда ведь что то в первый раз. :)
 

вообще говоря проблема чуть шире чем здесь обсуждается. терминалу явно не хватает функции вроде GetTerminalState которая должна вернуть какойто код (набор битов), по которому можно напрямую "спросить" терминал чем он щас занят? например IsConnected (которая кстати не всегда корректно возвращает результат после перелогинов) сообщает только да или нет. а хотелось бы подробненько:

- offline (пытался соединится, не получилось, стою ничего не делаю)

- connecting (пытаюсь соединится)

- connected (есть связь с сервером)

в последнем случае тоже нужны уточнения:

- HistoryOrdersLoading, HistoryOrdersLoaded (закачивается, закачана вся история по ордерам. для больших историй это занимает большое время и хотелось бы значть что терминал уже имеет ВСЮ историю)

- HistoryBarsLoading, HistoryBarsLoaded (зачачивается, закачана вся история по ценам. сюда же может и обсуждаемую проблему пометить както)

при обработке ордеров тоже совсем не лишне знать что была послана команда открытия ордера и сейчас терминал ожидает открытия ордера или модификации или закрытия. Ведь ордер никогда не исполняется мгновенно и хорошо бы знать над чем именно сейчас терминал задумался (тики идут а терминал почемуто не торгует - почему?) ;)

состояния о разрешении работы/торговли экспертов тоже можно сюда же "упаковать".

 
nen:

Хорошо.

Ставлю визуальное тестирование. Советник Moving Average.

Устанавливаю ZUP.

Евро. Часовки.

Учтите, мой разросшися код отслеживает подкачку истории. То есть происходит переинициализация при подкачке истории.

Ранее в этой ветке выкладывал кусок кода. Там вся оптимизация.

Выкладываю картинки. Мой "разросшийся" код предназначен для рисования картинок, все лишь. Автоторговлей он не занимается. И если картинки рисуются неверно, то это является багом.

Первая картинка. Маленькая история. Нарисовался один луч. Все нормально.

Почти сразу после начала тестирования нарисовались несколько лучей зигзага, нарисовалась бабочка. Полет нормальный.

Летим далее. Произошла ВАША переинициализация. Программа этого отследить не может. НЕТ ШТАТНОЙ ВОЗМОЖНОСТИ ОТСЛЕДИТЬ ПЕРЕИНИЦИАЛИЗАЦИЮ.

Так как включена оптимизация расчетов, а сигнала на полный пересчет не поступало, то, соответственно, видим результат:

Немного накопилась новая история. Отрисовался один луч зигазага:

Если сейчас переустановить индикатор, то произойдет начальная инициализация и все будет выглядеть следующим образом:

И так далее. Нет штатных возможностей отслежитвания ВАШЕЙ ПЕРЕИНИЦИАЛИЗАЦИИ индикаторных буферов.

А от пересчета индикатора на каждом тике увольте. Делайте сами такие безобразия. У ВАС долгое время в таком духе многое сделано. И сколько мы Вам на протяжении многих лет ни говорили про многие баги, до Вас это не доходило. А сейчас, когда многие программисты просто устали с Вами бороться и сделали свои обходы Ваших ошибок, Вы начинаете устраивать подлости.

Ваш код не менее разросся. И Вы плохо представляете о последствиях Ваших нововведений.

Тестируем далее.


Опять несколько раз прошла Ваша переинициализация. А должно выглядеть так:

Это трудно воспроизвести? Или просто нет желания?

И далее при тестировании все в том же духе.

Не надо сваливать с больной головы на здоровую. Код разросся.

-------

В заключение повторю. Не о себе беспокоюсь. Я для себя любые Ваши баги программно обойти смогу. А вот пользователи, коих огромное количество, этого сделать не смогут.

Добавлю. Еще ни один из своих индикаторов я не продал, не сделал ни одной платной разработки. Считаю, что, когда компания metaquotes может таким образом, как в 387-388 билде все в корне менять, никто со стороны нормальный бизнес на разработке с помощью языков MQL(*) построить не сможет. Вы не можете пока еще предложить сторонним разработчикам стабильной основы для разработок.

И все платные разработки с помощью Ваших языков на текущий момент считаю неким лохотроном.


Сделал всё так как описано. Но с некоторыми изменениями.

  1. В клиентском терминале поставил вывод в журнал при НАШЕЙ переинициализации буферов
  2. В индикаторе ZUP поставил распринтовку при удалении бабочки.

Вот лог.

15:45:16 Compiling 'ZUP_v92'
15:45:16 ZUP_v92 EURUSD,H1: loaded successfully
15:45:40 ZUP_v92 EURUSD,H1: initialized
15:45:40 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1095  IndicatorCounted=0
15:45:40 ZUP_v92 EURUSD,H1: triangle deleted
15:45:40 ZUP_v92 EURUSD,H1: triangle deleted
15:45:40 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:45:40 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1095  IndicatorCounted=0
15:45:40 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:45:40 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1095  IndicatorCounted=1094
15:45:41 custom indicator ZUP_v92 EURUSD,H1 buffer reinitialize
15:45:41 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1001  IndicatorCounted=0
15:45:41 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:45:41 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1001  IndicatorCounted=0
15:45:41 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:45:41 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1001  IndicatorCounted=1000
15:45:41 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:45:41 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1001  IndicatorCounted=1000
15:45:41 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:45:41 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1001  IndicatorCounted=1000
15:45:41 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:45:41 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1001  IndicatorCounted=1000
15:45:41 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:45:41 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1001  IndicatorCounted=1000
15:45:41 ZUP_v92 EURUSD,H1: delete objects from ZigZag
...
15:46:07 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1007  IndicatorCounted=1006
15:46:07 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:46:07 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1007  IndicatorCounted=1006
15:46:07 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:46:07 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1007  IndicatorCounted=1006
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:46:07 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1007  IndicatorCounted=1006
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:46:07 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1007  IndicatorCounted=1006
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:46:07 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1007  IndicatorCounted=1006
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:46:07 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1007  IndicatorCounted=1006
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:46:07 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1007  IndicatorCounted=1006
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:07 ZUP_v92 EURUSD,H1: triangle deleted
15:46:08 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:46:08 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1007  IndicatorCounted=1006
15:46:08 ZUP_v92 EURUSD,H1: triangle deleted
15:46:08 ZUP_v92 EURUSD,H1: triangle deleted
...
15:55:15 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:15 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1036  IndicatorCounted=1035
15:55:15 ZUP_v92 EURUSD,H1: triangle deleted
15:55:15 ZUP_v92 EURUSD,H1: triangle deleted
15:55:23 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:23 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1036  IndicatorCounted=1035
15:55:23 ZUP_v92 EURUSD,H1: triangle deleted
15:55:23 ZUP_v92 EURUSD,H1: triangle deleted
15:55:23 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:23 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1036  IndicatorCounted=1035
15:55:23 ZUP_v92 EURUSD,H1: triangle deleted
15:55:23 ZUP_v92 EURUSD,H1: triangle deleted
15:55:23 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:23 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1036  IndicatorCounted=1035
15:55:23 ZUP_v92 EURUSD,H1: triangle deleted
15:55:23 ZUP_v92 EURUSD,H1: triangle deleted
15:55:23 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:23 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1036  IndicatorCounted=1035
15:55:23 ZUP_v92 EURUSD,H1: triangle deleted
15:55:23 ZUP_v92 EURUSD,H1: triangle deleted
15:55:24 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:24 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1035
15:55:24 ZUP_v92 EURUSD,H1: triangle deleted
15:55:24 ZUP_v92 EURUSD,H1: triangle deleted
15:55:24 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:24 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:24 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:24 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:24 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:24 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:24 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:24 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:24 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:24 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:24 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:24 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:24 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:24 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:52 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:52 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:52 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:52 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:52 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:52 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:52 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:52 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:53 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:53 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:53 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:53 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036
15:55:53 ZUP_v92 EURUSD,H1: delete objects from ZigZag
15:55:53 ZUP_v92 EURUSD,H1: delete_objects3. Bars=1037  IndicatorCounted=1036

После последнего удаления бабочки (две строки triangle deleted) никакой переинициализации буферов не было!

Кстати, такое же самое поведение воспроизводится и в любимом Вами 225 билде

Причина обращения: