День добрый, уважаемые.
Можете не вникать в смысл ниже приведенного скрипта, ответьте только на простой вопрос: почему инициализация переменной С проходит чем угодно, только не нулем?
Причем, глюк проявляется только если Number - большое число. И чем оно больше, тем больше отклонение переменной от нуля.
Если что-то, даже не существенное, изменить в скрипте (убрать, например, функции Print в цикле for), как правило, глюк пропадает. Проблема в том, что этот скрипт нужен мне именно в таком виде. Ничего менять нельзя.
Файлы:
check.mq4
2 kb
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- Новая версия MetaTrader 4 Client Terminal build 402
- Пропуски расчетов при тестировании (оптимизации) на многоядерной сети. Кто встречал? Как бороться?
benik >>:
День добрый, уважаемые. Можете не вникать в смысл ниже приведенного скрипта, ответьте только на простой вопрос: почему инициализация переменной С проходит чем угодно, только не нулем? Причем, глюк проявляется только если Number - большое число. И чем оно больше, тем больше отклонение переменной от нуля. Если что-то, даже не существенное, изменить в скрипте (убрать, например, функции Print в цикле for), как правило, глюк пропадает. Проблема в том, что этот скрипт нужен мне именно в таком виде. Ничего менять нельзя.
День добрый, уважаемые. Можете не вникать в смысл ниже приведенного скрипта, ответьте только на простой вопрос: почему инициализация переменной С проходит чем угодно, только не нулем? Причем, глюк проявляется только если Number - большое число. И чем оно больше, тем больше отклонение переменной от нуля. Если что-то, даже не существенное, изменить в скрипте (убрать, например, функции Print в цикле for), как правило, глюк пропадает. Проблема в том, что этот скрипт нужен мне именно в таком виде. Ничего менять нельзя.
Вообще-то все нормально.
Попробуй вставить вот такую строчку в код:
Print ("Число C = ", C); // Почему инициализация проходит не нулем??? if (C == 0) Alert("Число C = ", C); MathSrand (GetTickCount());
И если открыть файл лога, то там инициализация равна нулю. В терминал выводится отличное от нуля значение. Этот момент описывался где-то и не раз.
В скрипте явная инициализация переменной C нулевым значением, и все работает как и должно. О чем идет речь?
Сейчас снова проверил - у меня инициализируется не нулем. Первая запись функции Print - С = -1
Я проверяю в 221 билде.
Странно, если вставить
if (C == 0) Alert("Число C = ", C);
как подсказал HIDDEN, выскакивает Alert С = 0. Почему же тогда первая запись функции Print:
2009.07.06 10:47:29 Check _DJI,H4: Число C = 8
Ладно, вопрос снимаю. Сейчас проверил, действительно в логах пишется все как полагается.
benik >>:
Установил 224 билд. Та же самая песня. Print пишет что угодно, но не С = 0. Почему такое происходит?
Видимо, Вам нужно немного изменить скрипт, чтобы все прояснилось:
int Number = 1000; int C =0; int val; int prev = 0; Comment ("Число C = ", C); // Выведем и на график сообщение, чтобы быть уверенным ,что смотрим туда, куда надо Print ("Число C = ", C); // Почему инициализация проходит не нулем???
benik писал(а) >>
Всем спасибо за ответы. Я просто понял, что Print иногда пишет не то что на самом деле. Нужно смотреть в логах.
Print всё правильно пишет, но не всё выводится во владку "Журнал" тестера. А Вы бы дожидались, пока весь файл лога, составляющий иногда сотни килобайт, будет напечатан в Журнале ?
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь