Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
а если переменную типа enum обьявить?
implicit enum conversion tst1.mq5 24 17
можно еще EnumToString() проверить...
думаю что тип без объявленных переменных просто был выброшен из компиляции как не используемый
я к тому что можно случайно объявить переменную с тем же именем что в уже в enum используется и потом очень долго и болезненно искать где и в каком месте я себе прострелил колено
Так каков вердикт Господа?) Если я пишу .mq5 программу с .mqh (#include), я могу смело прописывать extern и не бояться неожиданных последствий (как я это делал в mql4) или все же использовать input ?
В МТ5 для объявления внешних переменных использовать input. У extern в MT5 другое назначение.
В МТ5 для объявления внешних переменных использовать input. У extern в MT5 другое назначение.
почему в МТ5 нельзя использовать extern? - я свой пример в МТ5 компилировал, не вижу принципиальной разницы
почему в МТ5 нельзя использовать extern? - я свой пример в МТ5 компилировал, не вижу принципиальной разницы
Потому, что люди по привычке, оставшейся от древнего MQL4, пытаются использовать extern для входных параметров.
А в новом MQL4 и в MQL5 для этих целей нужен input совместно с #property strict, а extern - для других.
Потому и сказано было - не использовать extern.
Потому, что люди по привычке, оставшейся от древнего MQL4, пытаются использовать extern для входных параметров.
А в новом MQL4 и в MQL5 для этих целей нужен input совместно с #property strict, а extern - для других.
Потому и сказано было - не использовать extern.
вот каждый пытается написать многобукафф и в итоге получается, что то НЕ использовать ТОЛЬКО в МТ5, то НЕ ИСПОЛЬЗОВАТЬ вообще нигде )))
ладно, холивар начинается, имхо - увидел в старом коде extern - замени на input и исправь все предупреждения и да пребудет с тобой сила MQL !!!!
вот каждый пытается написать многобукафф и в итоге получается, что то НЕ использовать ТОЛЬКО в МТ5, то НЕ ИСПОЛЬЗОВАТЬ вообще нигде )))
ладно, холивар начинается, имхо - увидел в старом коде extern - замени на input и исправь все предупреждения и да пребудет с тобой сила MQL !!!!
Мало что понял из написанного.
Но имел в виду - не использовать extern в MQL5 и MQL4 с #property strict для объявления внешних параметров программ, а использовать по назначению, описанному (туманно) в справке.
Я тут вот что думаю, просто мысли... В MQL5 ведь намного проблемнее работа с iCustom() чем в MQL4 (да и вообще с вызовом индикаторов в советнике)? Это же так? Если да то продолжу...
я просто начал MQL5 понемногу изучать...
я наверное новую тему создам.Я тут вот что думаю, просто мысли... В MQL5 ведь намного проблемнее работа с iCustom() чем в MQL4 (да и вообще с вызовом индикаторов в советнике)? Это же так? Если да то продолжу...
не проблемнее, а просто в MQL5 с iCustom() приходится работать в 2 этапа:
1. получили хендл индикатора
2. запросили значения индикаторных буферов через CopyBuffer()
в MQL4 - iCustom() работает как вызов функции с параметрами - вызвал, получил
в MQL5 все так работает, разработчики зачем то умышленно урезали функционал встроенных функций и сделали обращение к таймсериям неудобными - только не давно добавили в MQL5 iClose(), iHigh() , раньше нужно было копировать в массив данные как с CopyBuffer()
в общем в МТ5 больше писанины просто чем в МТ4
не проблемнее, а просто в MQL5 с iCustom() приходится работать в 2 этапа:
1. получили хендл индикатора
2. запросили значения индикаторных буферов через CopyBuffer()
в MQL4 - iCustom() работает как вызов функции с параметрами - вызвал, получил
в MQL5 все так работает, разработчики зачем то умышленно урезали функционал встроенных функций и сделали обращение к таймсериям неудобными - только не давно добавили в MQL5 iClose(), iHigh() , раньше нужно было копировать в массив данные как с CopyBuffer()
в общем в МТ5 больше писанины просто чем в МТ4
https://www.mql5.com/ru/forum/316800
Реализация extern-переменных в MQL5 к сожалению не доработана, а потому применять её не советую, чревато проблемами. Речь идёт об отсутствии контроля за обязательной однократностью инициализации этих переменных.
Например, можно написать так:
и ошибки не будет. Представьте, что эти инициализации выполнены в разных подключаемых файлах. Тогда итоговый результат будет зависеть от порядка включений этих файлов.
Или так (исполняемый файл):
здесь мы вообще не проинициализировали extern-переменную, но ошибки тоже нет.
Соответственно нет контроля за тем, определены ли такие же переменные в других файлах или нет. Вы можете случайно поменять её имя, но программа будет компилироваться как ни в чём не бывало, хотя в других файлах у нас переменная с другим именем.
В общем, такое никуда не годится. Поэтому вместо extern-переменных лучше использовать функции. У них гарантируется только одно определение, не больше и не меньше.