Содержание
Доброго времени суток.
В этом уроке мы разберем редактор кода Meta Editor. Чтобы начать работу, его вначале нужно найти и открыть. Файл запуска exe находится в корневой папке, когда был установлен терминал Meta Trader 4. По умолчанию он расположен по данному пути «C:\Program Files (x86)\<Имя брокера>»:
Альтернативным способом открыть его можно через сам терминал, либо нажав на F4, либо в меню выбрать Сервис – Редактор Meta Quotes Language, или же через панель инструментов:
Если же вам нужно открыть уже готовый код в редакторе, то его нужно искать в каталоге на диске, либо через окно навигации в терминале. Притом код, который подлежит редактированию, будет иметь оранжевый ромб в нижнем правом углу иконки, а уже скомпилированный без исходного кода – серый. В данном случае открываем нажатием правой кнопки – Изменить.
Обзор редактора Meta Editor
С этим разобрались. Теперь сам редактор. После длительного опыта работы в офисе за монитором компьютера в программе AutoCad я пришел к мнению, что работа на черном фоне менее утомительна для глаз, поэтому как графики в терминале, так и редактор у меня на черном фоне. Если вас это сейчас смущает, поверьте, через 2 дня работы вы привыкните и даже не будете обращать на это внимание.
Файл шаблона, который я использую в своем редакторе, приложу в конце статьи. Для его установки нужно открыть меню «Файл» в программе, далее «Открыть каталог данных». Находим папку «config» в нее вставляем с заменой файл «metaeditor.ini», фон окна изменился, когда мы будем писать код. Теперь можно открывать там редактор Meta Editor 4.
Перед нами стандартное меню программы, уже настроенная мною панель инструментов, навигатор по корневой папке, основное окно редактора, инструменты и статусная строка. Не будем изучать каждую кнопку отдельно, пройдемся только то основному, нужному для начала.
Меню – нужно для создания нового проекта, открытия сохраненного, либо последних открытых файлов, поиск по коду, открытию справочника (который нам понадобится очень часто), в справке можно узнать версию программы, а в сервисе настроить редактор. Принцип работы в меню вы сможете понять и сами, оно ничем не отличается от любой программы на Windows.
Так как мы используем уже подготовленный шаблон, то единственное, о чем можно еще тут упомянуть, так это о настройки подключения к сайту MQL Community, если войти через свою учетную запись, то код можно сохранять и синхронизировать через сервер, что полезно, если вы работаете с нескольких машин, а также учетная запись дает возможность компилировать код через MQL5 Cloud Protector. Нажатие этой кнопки отправляет ваш файл в облака на сайт MQL5, там в код добавляется дополнительная защита и он возвращается к нам более безопасным от взлома (опытные хакеры без труда могут декомпилировать ваш код, так что если вам есть что скрывать, то лучше воспользоваться этой кнопкой).
Панель инструментов – тут указаны основное кнопки, необходимые для работы. Конечно, в дальнейшем мы будем использовать сочетание клавиш для увеличения скорости работы, но для начала будем нажимать вручную.
Рассмотрим основные кнопки на панели:
Переход к определению (Alt+G). Данной кнопкой мы сможем перейти в начало переменной или функции. К примеру, мы используем переменную, которая узнает текущее время сервера в 30 местах в программе, чтобы найти то место, где мы ее объявили (создали) и создана эта кнопка. Либо же у нас есть функция, которая считает количество бычьих свечей за указанный период, чтобы ее отредактировать мы переходим прямо к ней с помощью данной кнопки. Т.е. увеличиваем нашу скорость работы и не тратим время на прокрутку кода. Также перейти к определению можно, нажав правой кнопкой на нужную переменную или функцию и выбрать это действие, либо же барабанчиком мыши
Список функций в файле (Alt +M). По сути, эта кнопка выполняет то же, что и предыдущая кнопка, только вместо поиска функции переход происходит по уже указанным в списке функциям. Функцией же называется отдельно созданная задача, которую можно вызывать в коде много раз, будь то проверка количества открытых ордеров или расчет среднего значения волатильности свечей.
Компилировать (F7) самая нажимаемая мною кнопка. Нужна для того, чтобы код формата .mq4 перевести в формат .ex4, тем самым получить возможность протестировать нами написанное в терминале, а также посмотреть возможные ошибки, которые были совершены в момент написания и не дадут нам скомпилировать код.
Кнопки, о которых я расскажу ниже, были добавлены дополнительно на панель инструментов, с помощью нажатия на нее правой кнопкой – Настроить.
Преобразование (Ctrl + ‘) и отмена преобразования (Ctrl + ; ) выделенных строк в комментарий. Комментарий — это та часть кода, которая не учитывается программой для компиляции. Нужен, чтобы приписывать пользовательские заметки рядом со сложными функциями (чтобы не забыть их суть), а также исключить часть кода их работы. Бывают либо однострочными в виде двух наклонных линий «//», либо многострочными «/* */». С помощью этих строк можно создать однострочные комментарии сразу для большого куска кода. Комментарий отображается серым цветом, обозначает, что программа учитывает его как заметку, а не часть кода.
Уменьшение (Shift+Tab) и увеличение (Tab) отступа в строке. Правильное оформление кода в плане читаемости очень важная часть программирования. У каждого программиста свой подход к оформлению, но, чтобы подобный код имел более читаемый вид,
нужно использовать отступ (табуляцию, кнопка Tab), это улучшает ориентирование по строкам и каждой отдельной функции, как на скриншоте ниже. Код стал располагаться лесенкой, и теперь намного понятнее из каких этапов эта функция состоит.
Обратите внимание, не нужно использовать никаких пробелов для сдвига строк вправо, это моветон на любом языке программирования, только табуляция, только хардкор.
Включение/отключение закладки (F2, Ctrl+F2) — очень полезный инструмент, нужен, чтобы расставить по коду в нужных строках памятки (закладки) о том, что к ним нужно вернуться. Очень часто бывает, что при написании какой-либо функции вам нужно перейти подсмотреть другую часть кода, тогда на текущей строке вы ставите данную закладку, переходите на искомую строку и ставите вторую закладку. Теперь с помощью нажатия клавиши F2 вы будете мгновенно перемещаться между этими двумя закладками. Когда работа с этой частью будет завершена, вы просто их удалите. Куда проще, чем запоминать номер строки, на которой вы остановились.
Стилизация исходного кода. Кнопка создана для автоматической расстановки отступов и табуляции всего кода целиком по мнению программы. Я ее не использую, но возможно кому-то на первых порах она пригодится, чтобы «причесать» код.
С кнопками закончили, теперь окна программы.
Навигатор – служит для быстрого открытия уже готового кода или библиотек из корневой папки терминала. Лично я им не пользуюсь, потому что открытие дополнительного кода происходит не так часто. Если он мне нужен, я вызываю его через открытый терминал, а библиотеки через папки вручную. Плюс данное окно занимает значительное место в редакторе, поэтому рекомендую его закрыть и открывать на время при необходимости.
Окно инструменты – тут нас интересует только одна вкладка «Ошибки». Нет ничего приятнее прочитать сообщение, что во время компиляции не обнаружено ошибок и предупреждений (0 errors, 0 warnings) и код готов к тестированию в терминале.
На этом знакомство с Meta Editor можно считать успешным. Остальной функционал для нас не важен на первых этапах и, если понадобится, о нем будет рассказано в дальнейшем. Надеюсь было не слишком утомительно, но пройти это нужно было.
Советы перед началось программирования
- Не сжимайте сильно код в строки. В свое время меня заразила навязчивая идея уменьшать количество строк кода его сжатием в строки, путем уменьшения пустого пространства на экране, чтобы меньше крутить барабанчик мышки. Когда мой код перевалил за 1000 строк и нужно было суметь в нем найти нужный функционал, это стало огромной проблемой, прочитать такой код стало невозможно. Пришлось потратить день на переделку, а это лишняя работа и нервы.
Вот пример сжатого отображения кода:
Да, опытный программист, скорее всего поймет после прочтения, что я хотел сделать в этих строках, но его глазам будет тяжеловато.
А вот пример нормального отображения этого куска кода, все сразу стало читаемо:
- Не растягивайте сильно код в километровые строки. Со сжатием мы разобрались, но есть обратная сторона, когда программисты уж сильно подходят к растягиванию кода, и та часть, которую можно было бы уместить в 20 строк начинает занимать 50 как на скриншоте ниже. Согласитесь, не очень-то правильный подход, неудобно как читать, так и листать.
- По мере увеличение профессиональных навыков – переписывайте уже имеющийся код. Если я сейчас открою свои первые файлы кода из архивов, которые я когда-то писал, мне станет не по себе, насколько же они примитивны. Это нормально, с каждым разом мы будем писать более красиво как с эстетической стороны, так и с программной: те функции которые у нас занимали сотню строк сейчас занимают пару десятков. Это прогресс в развитии, и чтобы его закрепить, нужно периодически открывать уже написанные ранее советники и индикаторы и улучшать их, даже, если это не особо влияет на сам функционал кода. Практика наше все.
- Проверяйте каждую функцию сразу после написания. Сейчас я могу написать сотню-вторую строк не сильно замороченного кода, нажать кнопку компиляции и в них не будет ни одной ошибки, но для новичка этого очень сложно добиться. Ошибки будут постоянно, это нормально, их еще нужно будет дополнительно научиться опознавать, и понимать, где их искать. Поэтому вначале нужна постоянная проверка через кнопку Компиляция.
- Ведите нумерацию версии вашего кода. Особенно важно приучить себя писать изменения в версии вашего кода, после внесения поправок и завершения работы с ним. В серьезных программах уровня google версия может иметь вид 1.2.123.042.1, в нашем же случае можно обойтись одной, двумя точками. Для индикаторов я использую маркировку как 1.0, где 1 – номер версии данного кода, который отвечает за что-то важное (в нашем случае это первая версия идеи), и 0 это ревизия, т.е. изменения, внесенные в процессе работы. Если индикатор в корне изменил свою логику, то я меняю 1 на 2, ревизию же я меняю после каждой работы с кодом 2.1, 2.2 … 2.123 и т.п. В советниках, т.к. они более сложны в большинстве случаев, я использую маркировку 2.4.223. Где 2 это версия полной логики работы, которая уже была переделана в корне, 4 – важные изменения, будь то добавление нового индикатора для анализа, либо дополнительных условий на вход. 223 же это ревизия, которая говорит о том, что я 223 раза уже правил этот код.
- Делайте как можно больше заметок в коде. На первый порах нужно комментировать все, что только приходит в голову, каждую важную строку. Если ваша переменная снимает показание индикатора Moving Average – запишите через «//» рядом об этом. Если мы открываем, модернизируем или закрываем где-то ордер – напишите рядом об этом. Также рекомендуется вести перечень изменений в версиях вашего кода. Профессиональные программисты делают это с помощью специальных программ, мы же для начала будет это делать в самом коде с помощью многострочного комментария, вот пример одного из советников:
Подобный перечень в большинстве случаев пишется в самом начале программного кода MT4.
- Подчищайте код как можно чаще. После того, как вы закончили писать в этот день, потратьте немного времени, чтобы удалить из кода лишнюю информацию. Это могут быть временные комментарии, которые уже не актуальны, либо «закоментированные» куски кода, которые вы уже переписали корректно, и они вам не нужны. Также нужно чистить лишние переменные, их может быть создано очень много. Если переменная создана на локальном уровне и ей не присвоено значение, то компилятор уведомит вас о том, что она создана, но в коде не используется. А вот о переменных на глобальном уровне он не уведомляет. Чем меньше лишнего мусора в коде, тем более приятно с ним работать, да и скорость его тестирования увеличится, если в нем будет меньше ненужных переменных.
- Пользуйтесь поиском. Когда вам нужно что-то найти в коде, не тратьте время на ручной поиск, воспользуйтесь встроенным через сочетание клавиш Ctrl+F. Искать можно по слову целиком и/или по заданному регистру слов. Не помню момента, когда бы во время кодинга я не пользовался данным инструментом. Также тут полезна функция найти и заменить Ctrl+H. Часто бывает, что вам просто не нравится имя, которым вы назвали переменную, это можно легко исправить во всем коде сразу через замену текста.
- По возможности приобретите второй монитор. Если у вас есть немного денег, и вы собираетесь писать код или работать на форекс продолжительное время, то данное приобретение в разы сокращает время на проделанную работу. На одном мониторе у вас будет открыт редактор, на втором в терминале вы будете проверять код через визуализацию его работы, смотреть логи, окно данных, журнал терминала. Я же вначале купил себе монитор на Авито или Юле за 3000 рублей, после мучений с низким расширением было принято решение приобрести 2 новых, одинаковых и недорогих монитора с HD расширением, о чем я еще ни разу не пожалел. Плюс на них можно смотреть во время перерыва видео в высоком качестве. Не забываем про правило Парето: «20 % усилий дают 80 % результата, а остальные 80 % усилий — лишь 20 % результата». Следующая, но не особо важная для меня цель на будущее – выгнутый монитор от Samsung, который совмещает в себе сразу три экрана в одном.
- Не бойтесь спрашивать. Вопросов у вас будет много, поверьте. Спрашивать можно меня, либо людей на форумах, google поиск. Как только вы застряли с какой-либо ошибкой – сразу же копируйте ее номер в поисковик и приписывайте к ней слово «mql4». В 95% случаев такая проблема уже была, и она обсуждалась, решение было найдено. Если же вы не нашли ответ, то на сайте https://www.mql5.com/ru/forum/mql4 вам бесплатно подскажет целое сообщество программистов.
- Перечитать эти советы еще раз после того, как вы пройдете несколько наших уроков.
Надеюсь, данная статья была для вас полезной.
0 1 2 3 |
void OnDeinit(const int reason) { ... } |
2 комментария. Оставить новый
Спасибо за советы. Я только начинаю изучать этот язык, буду потихоньку проходить ваши курсы
Пожалуйста. Успехов в изучении!