В разделе Типы данных мы рассматривали варианты объявления переменных. Нечто такое, что в принципе может существовать в виде части (половина карандаша, например). Поэтому карандаши будем учитывать как действительные переменные, т.е. Правом использования торговых функций обладают только эксперты и скрипты (и только в том случае, если включена соответствующая опция в настройках экспертаили скрипта). Использование торговых функций в пользовательских индикаторах запрещено.
Поэтому не все тики приводят к запуску эксперта и пользовательского индикатора на исполнение, а только те, которые поступают в период, когда управление передано клиентскому терминалу и программа находится в режиме ожидания нового тика. После присоединения к окну финансового инструмента программа (эксперт или пользовательский индикатор) выполняет подготовительные операции и переходит в режим ожидания тика. При поступлении тика программа запускается клиентским терминалом на выполнение, исполняет все действия, заложенные в её алгоритме, и по окончании исполнения передаёт управление клиентскому терминалу – переходит в режим ожидания тика.
Функция MarketInfo()
В блоке 4-5 выполняется анализ результатов выполнения торговой операции. Если функцияOrderClose() вернула значение true, то это означает, что торговая операция успешнозавершена, т.е. В этом случае управление передаётся в блок 5-6, гдеобновляется информация об ордерах, имеющихся на текущий момент.
Для расчета значений индикатора добавлен еще один обработчик OnCalculate(), который позволяет вычислять значения индикатора на основе другого индикатора. Таким образом, В MQL5 пользовательские индикаторы можно накладывать на другие индикаторы (например, TEMA от MACD), и тем самым получать новые комбинации индикаторов для быстрой проверки идей без программирования. Все необходимые расчеты пользовательских индикаторов необходимо размещать в предопределенной функции OnCalculate(). Группа функций, используемых при оформлении пользовательских индикаторов. Данные функции нельзя использовать при написании советников и скриптов. В случае если после перекомпиляции состав входных параметров не изменился, будут применены те значения параметров, которые были до этого установлены.
Параметрустанавливается пользователем, может совпадать или не совпадать со значением этогоже параметра других ордеров. Ранее упоминалось, что стандартные функции могут быть представлены только в виде вызова функции. Вообще говоря, стандартная функция, как и специальные и пользовательские функции, имеет описание. Однако это описание не указывается в программе (поэтому и не показано на схеме).
Создание новой программы
Stoploss – заявленная цена закрытия, определяющая предельный уровень убыточности. Тип операций может быть указан в виде предопределённой константыили её значения и в соответствии с типом торговой операции. Ранее мы ознакомились с основными понятиями, на которых базируется язык программирования MQL4. Включаемые файлы — это исходные текстовые файлы, содержащие код, который вы можете использовать в других программах. Включаемые файлы имеют расширение MQH и хранятся в папке Include в каталоге MetaTrader или в той же папке, что и исходные файлы.
Когда программа запущена на исполнение в окне финансового инструмента, клиентский терминал передаёт управление одной из специальных функций, в результате чего эта функция исполняется. Если в результате исполнения торгового приказа функция OrderClose() вернула значениеfalse, то это значит, что ордер не закрыт. Чтобы выяснить причину неудачи выполняетсяанализ последней ошибки, возникшей при попытке осуществления торговой операции.Для этого вызывается функция Errors() (см. раздел Функция обработки ошибок).
Графические объекты отображаются клиентским терминалом в окне финансового инструментав соответствии с заданными координатами. Преобразование вида и места положенияграфического объекта может осуществляться вручную или программно, путём сообщенияграфическому объекту новых значений координат и других параметров. После этого программа находится в состоянии ожидания события от клиентского терминала. У каждой mql4-программы должна быть хотя бы одна функция-обработчик события, в противном случае загруженная программа выполняться не будет. Функции-обработчики событий имеют предопределенные имена, предопределенные наборы параметров и предопределенные типы возврата.
То есть все мощные функции MQL5, включая ООП и компилятор в нативный код, станут доступны в MQL4. Запущенная на исполнение программа userfunction.ех4 отобразит на экране окно,в котором будут выводиться сообщения функции Alert(). Обратите внимание, результатработы программы будет таким же, как и результат работы простого эксперта simple.mq4. Легко увидеть, что структура программы userfunction.mq4 составлена в соответствии с обычным порядком расположения функциональных блоков. Если же этот порядок изменить на другой допустимый порядок, то результат работы программы не изменится. Значение этой локальной переменной будет доступно из любого места специальнойфункции start().
Построчный комментарий, если он присутствует в строке, должен начинаться с 76 позиции (рекомендуется для мониторов 17″ с разрешением 1024 х 768 пикс.). Например, если строка кода занимает 80 позиций, то её не обязательно разбивать на две строки, можно написать комментарий, начиная с 81 позиции. Обычно содержательная часть программы (код) составляют строки длиной около 50 символов, поэтому построчный комментарий выглядит как столбец текста в правой части экрана. Это ограничение не является формальным требованием синтаксиса языка, однако чтение программы, содержащей длинные строки, очень неудобно. Любую длинную строку всегда можно расположить в несколько программных строк, так, чтобы все они были полностью видны на экране.
Осуществление торговых операций
Типи значение результата совпадают с типом и значением правого выражения. Значение выражения содержит 1 во всех разрядах, в которых значения переменной содержат 0, и 0 во всех разрядах, в которых значения переменной содержат 1. Выражение – последовательность операндов и знаков операций – запись в программе, вычисленное значение которой характеризуется типом данных.
- Чтобы получить дополнительную информацию об ошибке, необходимо вызватьфункцию GetLastError().
- Теперь в MetaTrader 4 можно создавать полноценные приложения с использованием ресурсов.
- Поэтому мы решили перенести в него максимум функций и возможностей языка MQL5, полностью сохраняя функционал MQL4.
- Тип данных void используется для функций, которые выполняют определенную задачу, но не должны возвращать никакое значение.
- Очень важное свойство клиентского терминала состоит в том, что в случае, если вовремя выполнения прикладной программы возникает ошибка, то клиентский терминалне прекращает исполнение программы.
- Правом использования торговых функций обладают только эксперты и скрипты (и только в том случае, если включена соответствующая опция в настройках экспертаили скрипта).
Операции отношения
В окне панели инструментов отображается содержание справки, ошибки компиляции, результаты поиска файлов и онлайн-доступ к статьям и файлам на MQL4.com. Скрипт — это упрощенный советник, который выполняет одну задачу, такую как установка отложенного ордера или закрытие всех ордеров на графике. Для написания кода программы используется текстовый редактор экспертов MetaEditor 4, выделяющий цветом различные конструкции языка MQL4, что позволяет пользователю лучше ориентироваться в тексте экспертной системы. В качестве справочной системы по языку MQL4 используется словарь — MetaQuotes Language Dictionary. Краткий справочник содержит разбитые на категории функции, операции, зарезервированные слова, другие конструкции языка и позволяет узнать описание каждого используемого элемента, входящего в язык. В состав MQL4 включено большое количество функций, необходимых для анализа текущих и Finam пришедших ранее котировок, встроены основные индикаторы и функции по управлению торговыми позициями и контролю над ними.
- В предыдущем параграфе мы познакомились с необходимостью представления разных типов данных.
- Отдельно нужно заметить, что в данном примере намеренно не рассматриваются все безисключения ошибки.
- В случае сложения переменных типа string строки просто приплюсовываются друг к другу в той последовательности, в которой они упоминаются в выражении.
- В этом случае стандартнаяфункция Symbol() вернёт строковое значение EURUSD.
- Специальная функция init() вызывается для исполнения один раз в начале работы программы.
Разумеется, для практического использования в подобныхслучаях необходимо предусматривать пробелы и др. В MQL4 разрешено складывать значения строковых констант и переменных. В случае сложения переменных типа string строки просто приплюсовываются друг к другу в той последовательности, в которой они упоминаются в выражении. В отличие от эксперта и пользовательского индикатора, скрипт запускается на исполнение сразу же после присоединения к окну финансового инструмента, не дожидаясь поступления тика. Весь код скрипта выполняется один раз, а после того как все программные строки исполнены, скрипт заканчивает свою работу и выгружается из окна финансового инструмента.
Если в очереди уже есть событие NewTick либо это событие находится в состоянии обработки, то новое событие NewTick в очередь mql4-программы не ставится. Аналогично, если в очереди mql4-программы уже находится событие ChartEvent или такое событие обрабатывается, то новое событие такого типа не ставится в очередь. Обработка событий таймера производится по такой же схеме – если в очереди находится или уже обрабатывается событие Timer, то новое событие таймера не ставится в очередь.
Запрет на использование функций в индикаторах и экспертах
Здесь объекту с именем Obj_Reg_Ch для первой координаты (координата 0) устанавливаетсязначение TimeLen_Cn-1, а для второй координаты (координата 1) -Time. Последним среди передаваемых в функцию ObjectMove() параметров указан 0. Это- координата цены, которую в соответствии с описанием функции передавать необходимо,но которое в данном случае будет проигнорировано клиентским терминалом. 137 видно, что в окне финансового инструмента имеется также подокно индикатораMACD. Нужно заметить, что для полноценной работы эксперта наличие этого индикаторав окне финансового инструмента не требуется, т.к. Вычисление торговых критериевв эксперте происходит в результате исполнения функции технического индикатора, не связанной с выводом индикатора на экран.