Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1737
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Конечно же, программа не ждёт пока терминал в отдельном потоке выводит в журнал какие-то данные.
Спасибо, имею ввиду
Не пойму, почему время от времени вылетает "-1", если после фора проверить Print(i);, перед брейком стоят i-- и if (i==0), то есть, команда выхода, если уже внутри оператора i достигло 0. Поскольку i используется еще дальше по коду, в Close[i], то выдаёт ошибку array out of range
Скажите, пожалуйста, после break в операторе for (i; i>0; i--) выражение "i--" или просто "выражение 3" (по документации) исполняется? Не нашёл в учебнике.
Не пойму, почему время от времени вылетает "-1", если после фора проверить Print(i);, перед брейком стоят i-- и if (i==0), то есть, команда выхода, если уже внутри оператора i достигло 0. Поскольку i используется еще дальше по коду, в Close[i], то выдаёт ошибку array out of range
Скажите, пожалуйста, после break в операторе for (i; i>0; i--) выражение "i--" или просто "выражение 3" (по документации) исполняется? Не нашёл в учебнике.
Не пойму, почему время от времени вылетает "-1", если после фора проверить Print(i);, перед брейком стоят i-- и if (i==0), то есть, команда выхода, если уже внутри оператора i достигло 0. Поскольку i используется еще дальше по коду, в Close[i], то выдаёт ошибку array out of range
После брейк выход из цикла на следующий за циклом оператор, после континью завершение итерации в этом месте и начало новой.
После брейк выход из цикла на следующий за циклом оператор, после континью завершение итерации в этом месте и начало новой.
Секундочку, ниже код
Ничего не понял. Код в студию
i=10;
for (i; i>0; i--)
{
i--;
if (i==0) break;
}
Print(i);
Print(Close[i]);
// В журнале пишет (-1), как так... и, отсюда ошибка array out of range, поскольку Close[-1] не бывает.
То есть, правильно я понимаю, что после break в заголовке (i; i>0; i--) третье выражение "i--" всё равно исполняется?
Секундочку, ниже код
i=10;
for (i; i>0; i--)
{
i--;
if (i==0) break;
}
Print(i);
Print(Close[i]);
// В журнале пишет (-1), как так... и, отсюда ошибка array out of range, поскольку Close[-1] не бывает.
То есть, правильно я понимаю, что после break в заголовке (i; i>0; i--) третье выражение "i--" всё равно исполняется?
Правильно пишет
Вы отнимаете не только в заголовке, но и в теле цикла.Правильно пишет
Не спрашивайте, что за чухню в коде я пишу. Просто хочу понять нюансы этого оператора) Вроде как в теле я указал "пора уходить отсюда, ведь i=0", а оператор берёт и ещё раз выполняет выражение, хотя должен передать управление следующему оператору
Не спрашивайте, что за чухню я пишу. Просто хочу понять нюансы этого оператора) Вроде как в теле я указал "пора уходить отсюда, ведь i=0", а оператор берёт и ещё раз выполняет выражение, хотя должен передать управление следующему оператору
Да вы указали, но отняли перед этой проверкой. Напишите так
будет другой результат
Да вы указали, но отняли перед этой проверкой. Напишите так
ааа... дошло. Понял.
Благодарю вас всех за оперативные ответы.
ааа... дошло. Понял.
Благодарю вас всех за оперативные ответы.
Ваш код распечатывает 0, а не -1..
Возможно -1 где то из другого места распечаталось, скорее всего весь код в принтах..
Прежде чем пытаться решить проблему ее нужно определить.. Убедиться что она есть и локализовать ее место, а только потом решать..