Разработчикам: очень странный глюк
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- Новая версия MetaTrader 4 Client Terminal build 402
- Обновление платформы MetaTrader 4 билд 625: Журналы в MetaTrader Market и новый MetaViewer
День добрый, уважаемые. Можете не вникать в смысл ниже приведенного скрипта, ответьте только на простой вопрос: почему инициализация переменной С проходит чем угодно, только не нулем? Причем, глюк проявляется только если Number - большое число. И чем оно больше, тем больше отклонение переменной от нуля. Если что-то, даже не существенное, изменить в скрипте (убрать, например, функции Print в цикле for), как правило, глюк пропадает. Проблема в том, что этот скрипт нужен мне именно в таком виде. Ничего менять нельзя.
Вообще-то все нормально.
Попробуй вставить вот такую строчку в код:
Print ("Число C = ", C); // Почему инициализация проходит не нулем??? if (C == 0) Alert("Число C = ", C); MathSrand (GetTickCount());
И если открыть файл лога, то там инициализация равна нулю. В терминал выводится отличное от нуля значение. Этот момент описывался где-то и не раз.
Установил 224 билд. Та же самая песня. Print пишет что угодно, но не С = 0. Почему такое происходит?
Видимо, Вам нужно немного изменить скрипт, чтобы все прояснилось:
int Number = 1000; int C =0; int val; int prev = 0; Comment ("Число C = ", C); // Выведем и на график сообщение, чтобы быть уверенным ,что смотрим туда, куда надо Print ("Число C = ", C); // Почему инициализация проходит не нулем???
Всем спасибо за ответы. Я просто понял, что Print иногда пишет не то что на самом деле. Нужно смотреть в логах.
Print всё правильно пишет, но не всё выводится во владку "Журнал" тестера. А Вы бы дожидались, пока весь файл лога, составляющий иногда сотни килобайт, будет напечатан в Журнале ?