Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
... MQL5 в отличии от MQL4 не пытается понять что хочет пользователь и это правильно.
Предлагаю это на рекламный постер повесить. :) (шутка)
Василий, я понял, что есть нюансы, которые оправдывают такой подход МТ5 к удобствам программиста. И не возражаю. Пусть так.
1. Логика подсказывает, что процедура очистки массивов выполняется компилятором один раз на этапе компиляции.
Да уж, проблема у вас с логикой :)
Не знал, что в 4-ке при ресайзе происходит инициализация нулями. Это не удобство, а глупость какая-то, ведущая к понижению скорости программ. Т.е. если мне нужно проинициализировать массив значением -1, то происходит двойная инициализация.
В принципе, можно было бы какой то флаг добавить при объявлении массива, который указывал бы компилятору очищать массив. Было бы или удобно, или быстро, - на выбор.
В принципе, можно было бы какой то флаг добавить при объявлении массива, который указывал бы компилятору очищать массив. Было бы или удобно, или быстро, - на выбор.
Да какая разница. Делаешь инициализацию после ресайза, вот и весь флаг.
Да, после каждого объявления глобального массива и после каждого их ресайза. А если у тебя 20 - 30 глоб. массивов, некоторые из которых при определенных обстоятельствах меняют размер? Всюду писать инициализацию в циклах? (массивы могут быть двумерные). Разве это не потенциальный рассадник ошибок?
Да, после каждого объявления глобального массива и после каждого их ресайза. А если у тебя 20 - 30 глоб. массивов, некоторые из которых при определенных обстоятельствах меняют размер? Всюду писать инициализацию в циклах? (массивы могут быть двумерные). Разве это не потенциальный рассадник ошибок?
Эта хирургическая операция делается довольно просто. Сделать замену слова "ArrayResize" на что-нибудь другое - это будет имя своей функции для ресайза. В ней проверять, если ресайз в сторону увеличения, то пройти по новым элементам в цикле и присвоить им по нулю.
Еще в ините проинициализировать все массивы имеющие размер (если такие есть).
Еще могут быть массивы с заданным размером в функциях - их тоже. Их искать по квадратной скобке.
Эта хирургическая операция делается довольно просто. Сделать замену слова "ArrayResize" на что-нибудь другое - это будет имя своей функции для ресайза. В ней проверять, если ресайз в сторону увеличения, то пройти по новым элементам в цикле и присвоить им по нулю.
Еще в ините проинициализировать все массивы имеющие размер (если такие есть).
Еще могут быть массивы с заданным размером в функциях - их тоже. Их искать по квадратной скобке.
Кстати, да.
Попробую. Интересный хак.
поддержу топикстартера, хоть и много вопросов к его творению )))
разработчики MQL5 в погоне за скоростью вычислений (или еще за какими красивыми цифрами? ) убрали все "мелкие плюшки" которые делали MQL4 более дружественным,
как пример, вот я разбирался с написанием индикаторов под МТ5 , элементарное в MQL4 становится в MQL5 учебником по программированию, причем этот "учебник" нужно уметь читать в контексте торгового терминала:
1. индикаторные буффера при вызове OnInit() не инициализируются автоматически
2. просмотрел около сотни индикаторов в кодобазе, увы, под видом программирования на MQL5 пишут индикаторы в стиле MQL4 - разворачивают нумерацию массивов и таймсерий
3. не корректно не логично работают iHighest / iLowest - ищут бары с наибольшими/наименьшими значениями в сторону увеличения нумерации таймсерии... т.е. если использовать стандартные схемы построения индикаторов в MQL4 - расчет из прошлых данных к настоящим, то эта задача не решается с помощью iHighest и iLowest , т.к. самый левый бар это 0, а при вызове iLowest будем искать значения в будущем....
4. такая же беда и с ArrayMaximum() - сложно использовать в индикаторах... ну как сложно, чтобы не разворачивать нумерацию таймсерии, берем и постоянно вычитаем от стартового эл-та некое кол-во баров и получаем ArrayMaximum(high[i], i -Period,Period)
5. увы, даже знатоки MQL5 используют сомнительные конструкции.... скажем так некую базу костылей сохранившихся при переходе с МТ4 носят с собой до сих пор
ну и к чему это все? дык к тому, что MQL не претендует на чистый С++, зачем убрали более простые реализации для пользователей, около месяца просматриваю чем же хорош Питон, почему на нем так много работ... и вот только сейчас понимаю, что на Питоне дали возможность людям не обращать внимания на мелочи, сделали более дружественный интерфейс ;) - для программиста со стажем покажется, что все это не правильно, а люди пользуются и Питон довольно популярен