Обновление платформы MetaTrader 4 билд 625: Журналы в MetaTrader Market и новый MetaViewer - страница 45
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так и должно быть. Иначе будет на каждый МЕ как и на МТ свой файл справки.
А какие неудобства при работе с флешки?
Да не то что бы неудобства... Вот только при стремлении воспользоваться справкой на чужом компе, МТ начинает оставлять "мусор", который там не нужен. А если закачать справку на флешку и открывать ее отдельно, то она не будет обновляться. В общем кто-то что-то не додумал в этом вопросе.... Хотя, я думаю, что не сложно сделать раздел в настройках, где можно было бы указывать пути расположения настроек, шаблонов, справочных файлов и тд
Объявляем переменные count...
Используем
Ошибок 0, предупреждений 0. Т.е. инклюдник переменную видит.
Проверяем. Используем в инклюднике необъявленную переменную.
Ошибка. Значит, точно, инклюдник объявленные глобальные (внешние) переменные знает.
Давным давно тут всё впорядке
Когда же появится тут?
В сервисдеск писал, ответили, что "инклюдники ничего не знают о внешних переменных". Однако, видим, что знают.
И хрен бы с ним, если бы было 3 простых переменных, не влом и пописать. Но их существенно больше и, к сожалению, простыми именами не получается обойтись. Серфинг по окнам - позырить, как правильно пишется нужная переменная уже изрядно надоел
Объявляем переменные count...
Используем
Ошибок 0, предупреждений 0. Т.е. инклюдник переменную видит.
Проверяем. Используем в инклюднике необъявленную переменную.
Ошибка. Значит, точно, инклюдник объявленные глобальные (внешние) переменные знает.
Давным давно тут всё впорядке
Когда же появится тут?
В сервисдеск писал, ответили, что "инклюдники ничего не знают о внешних переменных". Однако, видим, что знают.
И хрен бы с ним, если бы было 3 простых переменных, не влом и пописать. Но их существенно больше и, к сожалению, простыми именами не получается обойтись. Серфинг по окнам - позырить, как правильно пишется нужная переменная уже изрядно надоел
А зачем в инклуднике в его функциях использовать переменные, заданные в одном отдельно взятом коде? Для чего тогда нужен этот инклудник? Для работы с конкретно одним-единственным кодом?
Передавайте параметры по ссылке в функции, находящиеся в инклуднике. Тогда вам не нужно будет помнить все имена переменных. Они от кода к коду могут меняться, просто передаваться в инклудник по ссылке. Тогда можно будет пользоваться функциями инклудника в любой программе, а не в одной-единственной.
На этапе финальной компиляции, когда инклюдник реально вставляется в общий поток/тело программы, он начинает видеть вышестоящие пределения. Когда работаете в отдельном файле, который не содержит информации о включениях/определениях других файлов, интеллисенс не может их определить. Так что все верно.
Очевидно, туплю. Что значит "реально вставляется в общий поток/тело программы". Объясните на примере:
Тут инклюдник реально вставляется или нет? Что значит "работает в отдельном файле"? И что такое тогда "инклюдник" в принципе?
И просьба осветить так же второй момент, который просто описал, сейчас покажу:
1. Пишем скрипт.
2. Создаем инклюдник, в котором описываем класс
3. Инклюдник с классом подключаем в скрипт
Имеем следующее:
Скрипт. Причем, переменные countema и countbar объявлены после инклюда
В классе CMain:
Однако список вывалился. Только в нем оказалась одна переменная из двух. Но вывалился. Но одна.
Т.е. в одних случаях вываливается не полностью, в других не вываливается совсем. Если во всем этом есть логика, то я её не улавливаю.
https://forum.mql4.com/61996
https://forum.mql4.com/ru/60554/page104
у меня вот такая точно проблема но дело не в вирусах - все компилится ок. Но не тестится и не инициализируется в терминале
В чем причина?
В MQL4 есть перечисление ENUM_DAY_OF_WEEK. Тем не менее, функция TimeDayOfWeek() возвращает результат типа int, а не ENUM_DAY_OF_WEEK. При этом численные значения перечисления полностью совпадают со значениями, возвращаемыми функцией TimeDayOfWekk().
Будет ли исправлен результат, возвращаемый функцией, или подобное поведение останется для совместимости со старыми программами?
Очевидно, туплю. Что значит "реально вставляется в общий поток/тело программы".
Вы понимаете смысл директивы #include?
Эта строчка перед компиляцией просто заменяется содержимым файла, указанного между <>.
Естественно, переменные "видны".
А когда вы редактируете сам mqh-файл, который понятия не имеет о том, куда его потом будут включать, эти переменные для него просто отсутствуют.
Вы можете попробовать в сам mqh-файл включить основной файл советника (через тот же инклуд), и переменные станут "видны" (раньше работало, сейчас - не знаю). Но это, мягко говоря, плохой стиль.
Вам правильно посоветовали - если переменные используются только в инклуднике, объявляйте их там.
Если нет - передавайте по ссылке и делайте с ними что хотите. Но не оперируйте с глобальными переменными основного файла в инклуднике, который может быть использован где угодно.
Я предполагал что поскольку терминальные переменные хранятся в памяти то скорость работы с ними будет соизмерима со скоростью работы с массивами, но на том примере видно что это далеко не так. Ренат видимо проверял на мощном компьютере с i7 и у него получилось 8 секунд (против нуля с массивами). Пользовательские компьютеры обычно значительно слабее, у меня разница составила 17 секунд (в примере я округлил до 15) и это только 10 000 циклов.
Попробуйте написать аналогичные функции для доступа к своим массивам, при этом организуя разграничение доступа, и замерьте скорость.
Уверен, будет не сильно быстрее, чем с терминальными переменными.
Если вам критично быстродействие, работайте со своими массивами, а сбрасывайте их на диск (то ли с помощью терминальных переменных, то ли с помощью файла) - по необходимости (например, по событию таймера каждые 5 минут).