20 ноября 2022 г.

Общие различия между MQL4 и MQL5

С точки зрения грамматики кода различий очень мало.
Убедитесь, что в каждом исходном файле указано #property strict

Вставка #property strict в начале каждого файла гарантирует, что MQL4 будет работать в «строгом» режиме, который обеспечивает более близкое соблюдение стандартов к MQL5, а не к MQL4 до 2014 года. Без этой строки в МТ4 произойдет непредвиденное поведение.

Для программ, написанных на диалекте MQL4 до 2014 года, вставка этой строки часто приводит к большому количеству ошибок из-за различных методов написания кода. Это следует смягчить, следуя рекомендациям, описанным в этом руководстве и в целом.

Эта строка обычно вставляется, если вы создаете файл в MetaEditor 4, но не вставляется, если вы используете MetaEditor 5, поэтому убедитесь, что эта строка присутствует в каждом исходном файле.

Для настроек используйте входные переменные, а не внешние переменные.

Хотя допустимо в MQL4, extern bool var; стал недействительным для пользовательских настроек в MQL5 с 2017 года. MQL5 требует, чтобы вы использовали input bool var; или же окно настроек не отображается.

Согласно документам MQL5, переменная extern предназначена для использования в качестве общей переменной для исходных файлов, связанных вместе с помощью #include. В MT4 принято использовать внешние переменные в качестве пользовательских настроек, но MT5 прекратил эту практику. Тем не менее, внешние переменные по-прежнему работают в MQL5 по назначению.

input переменные могут быть установлены пользователем только один раз и не могут быть изменены во время выполнения. Если вы используете внешние переменные в качестве пользовательских настроек, вам следует проверить, изменяете ли вы эти внешние переменные на новые значения во время выполнения:
Если вы этого не сделаете, безопасно выполнить поиск и заменить внешние переменные входными переменными.
Если вы меняете внешние переменные extern, вы можете иметь отдельные входные переменные input, а затем копировать значения в ваши текущие внешние переменные extern во время OnInit.

Переменные должны быть инициализированы значением по умолчанию.
В MQL4, если вы объявляете переменную, ее значение неявно инициализируется равным 0 или эквивалентным. Поэтому вы можете написать int startVal; без указания стоимости. В MQL5 это не работает, потому что MT5 не инициализирует переменные за вас — вы должны инициализировать все переменные значением по умолчанию: int startVal = 0;

Комментариев нет:

Отправить комментарий

Торговые стратегии на рынке форекс

На рынке Forex существует множество различных стратегий, которые трейдеры могут использовать при создании экспертных советников (экспертов)...