Что-то не пойму "где собака зарыта", код работает, все OK, а вот предупреждения компилятора possible loss of data due to type conversion Indi.mqh 125 45 заставляют задуматься.
Вы не инициализировали локальную переменнуюi, которая при последующих вызовах выделялась в том же самом месте стека, как и на предыдущих вызовах.
Тогда в каком случае нужно использовать класс памяти static?
Непонятное предложение в справке "Локальные переменные, объявленные как static, имеют областью действия блок, несмотря на то, что они существуют с самого начала выполнения программы" растолкуйте пожалуйста. Такое впечатление, что во фразе закралась синтаксическая или грамматическая очепятка :)
Скажите пожалуйста, с какой вообще целью была добавлена возможность объявлять переменные внутри блоков? Раньше при таком случае:
int c;
for(int i=0;i<1000;i++)
{
int c=Counter();
}
Раньше бы всплыло окошечко, что прямая объявлена дважды и было понятно, что нужно придумывать другое название для переменной или использовать эту же, но без int. А сейчас можно запутаться. На С++ тоже так?
(Я до изучения MQL программировал на Visual Basic. Там такого безобразия не было)
Тогда в каком случае нужно использовать класс памятиstatic?
Нет.
Если вы создали переменную int i; , то почему ее не проинициализировали? Фактически Вы сами сказали "мне не важно что в этой переменной" и в результате получили в ней мусор.
Правильно надо делать так: int i=0;
На С++ тоже так?
Да, все верно - можно внутри блока создавать такие переменные.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Что-то не пойму "где собака зарыта", код работает, все OK, а вот предупреждения компилятора possible loss of data due to type conversion Indi.mqh 125 45 заставляют задуматься.
Разработчикам.
Насколько я понял, вопрос со свопами решили? Или тогда не понятно почему тема исчезла из сервисдеска.....
При тестировании советника
В журнале отобразится постоянно увеличивающееся число! Так и должно быть?
В MQL4 для такого эффекта нужно было писать
При тестировании советника
В журнале отобразится постоянно увеличивающееся число! Так и должно быть?
Да, так и должно быть.
Вы не инициализировали локальную переменную i, которая при последующих вызовах выделялась в том же самом месте стека, как и на предыдущих вызовах.
Да, так и должно быть.
Вы не инициализировали локальную переменную i, которая при последующих вызовах выделялась в том же самом месте стека, как и на предыдущих вызовах.
Тогда в каком случае нужно использовать класс памяти static?
Непонятное предложение в справке "Локальные переменные, объявленные как static, имеют областью действия блок, несмотря на то, что они существуют с самого начала выполнения программы" растолкуйте пожалуйста. Такое впечатление, что во фразе закралась синтаксическая или грамматическая очепятка :)
Обратите внимание на пример в справке: https://www.mql5.com/ru/docs/basis/variables/static
Если из кода убрать слово static, то ничего не поменяется:
Вопрос: Зачем вообще нужен static, если без него тоже самое?
Здравствуйте. В описании [Tester] у Вас не хватает параметра ExpertParameters. Более подробно о нем можно узнать в справке.
Спасибо, заработало.
Скажите пожалуйста, с какой вообще целью была добавлена возможность объявлять переменные внутри блоков? Раньше при таком случае:
Раньше бы всплыло окошечко, что прямая объявлена дважды и было понятно, что нужно придумывать другое название для переменной или использовать эту же, но без int. А сейчас можно запутаться. На С++ тоже так?
(Я до изучения MQL программировал на Visual Basic. Там такого безобразия не было)
Тогда в каком случае нужно использовать класс памяти static?
Нет.
Если вы создали переменную int i; , то почему ее не проинициализировали? Фактически Вы сами сказали "мне не важно что в этой переменной" и в результате получили в ней мусор.
Правильно надо делать так: int i=0;
На С++ тоже так?
Столкнулся с проблей на Windows 7 64 bit на 306 Билде терминала (Windows 7 32 bit всё работает нормально).
Столкнулся с проблей на Windows 7 64 bit на 306 Билде терминала (Windows 7 32 bit всё работает нормально).