Просто не нужно писать всё в одну строчку и не стоит жалеть фигурных скобок:
int i; //--- int co=0; for(i=0;i<=w;i++) { if(w==10) { co++; Alert(co); } } //--- return value of prev_calculated for next call return(rates_total);
и тогда сразу всё визуально станет понятно.
А понятно становится то, что переменная "w" вообще непонятно откуда взялась и какое имеет значение.
Artyom Trishkin:
Вопрос возник при отладке, в результате появилась эта
Программа:
Результат (арлеты):
........... и т.д. до 1.
Правило: Если выражение истинно, то выполняется оператор1.
В программе: оператор1 выполняется ВСЕГДА.
Так что же такое оператор if() в MQL5 и MQL4 на самом деле, кто знает? Объясните пожалуйста мне, бестолковому.
У вас так: если w равно 10, то выдать алерт. А w у вас глобальная, и равна десяти. И что не так по-вашему?
У вас так: если w равно 10, то выдать алерт. А w у вас глобальная, и равна десяти. И что не так по-вашему?
По моему if()должно сработать только один раз, при истинности условия в скобках. А по факту срабатывает при каждой проверке условия и все выражения в {} выполняются на каждом шаге и жуют машинное время. И причем здесь глобальность W? Просто удобнее менять шаг из терминала чем из редактора. Наверное, надо пояснить подробнее. При по шаговой проверке индикатора обнаружил вот такой дребезг срабатываний в подпрограмме стоящей за if{} и в котором нет никакого w. А код что написан выше, это уже упрощение для пояснения сути вопроса. ПОЧЕМУ переменная CO выросла за цикл от 0 до 10? Почему Alert срабатывает на каждом шаге? Из-за глобальности w ?!
iClose + iBarShift. Тестер в МТ4 следит за корректностью текущей цены только тестируемого инструмента, корректность данных других инструментов вы должны обеспечить сами
И вряд ли у вас получится эффективно арбитражить в МТ4
Судя по всему у вас опечатка в коде, и хотели написать вот так:
От ПЕРЕМЕНЫ мест слагаемых сумма не меняется. А суть вопроса в следующем: Почему переменная СО выросла за цикл от 0 до 11? Почему Alert срабатывает на каждом шаге? В коде ошибок нет.
Ещё раз повторю: в коде ошибок нет, но в логике - есть. У вас в вашей логике записано: если w равна 10, то выдать алерт и увеличить co на единицу. Переменная w задана глобальной, равна 10, и нигде не меняется в цикле. Именно потому условие всегда истинно.
ЗЫ. Не потому, что w глобальная, а потому, что ей присвоено значение 10. И в цикле проверяется значение 10

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вопрос возник при отладке, в результате появилась эта
Программа:
Результат (арлеты):
........... и т.д. до 1.
Правило: Если выражение истинно, то выполняется оператор1.
В программе: оператор1 выполняется ВСЕГДА.
Так что же такое оператор if() в MQL5 и MQL4 на самом деле, кто знает? Объясните пожалуйста мне, бестолковому.