Например, торговые критерии в эксперте могут формироваться на основе каналалинейной регрессии, построенного на баровой истории определённой длительности (например,по последним 50 барам). Для того, чтобы этот графический объект не “съезжал”, его необходимоперерисовывать на каждом новом баре. Для этой цели необходимо вычислить и сообщитьобъекту новые координаты, в соответствии с которыми объект должен быть отображёнв окне финансового инструмента.

Если возвращённоезначение оказывается больше или равно 0, то средств хватает, если же меньше, тоордер такой стоимости по этому финансовому инструменту открыть не удастся – клиентскийтерминал вернёт ошибку 134. Рассмотрим и некоторые другие наиболее распространённые ошибки. Для этого вернёмсяк идее открытия ордера с помощью скрипта в том окне, в которое присоединён скрипт. Очень важное свойство клиентского терминала состоит в том, что в случае, если вовремя выполнения прикладной программы возникает ошибка, то клиентский терминалне прекращает исполнение программы. Обычно ошибки возникают по причине несовершенства используемогов прикладной программе алгоритма, а в некоторых случаях – в результате внешних(по отношению к программе) причин. К внутренним причинам относятся любые нарушениятребований языка MQL4 или правил торговли, например, использование неправильныхцен, а к внешним – причины, не связанные с прикладной программой, например, проблемысо связью.

Пользовательские функции не вызываются для исполнения клиентским терминалом. Любые пользовательские функции всегда выполняются в рамках исполнения какой-то из специальных функций, возвращающих управление клиентскому терминалу. Пользовательские функции также могут запрашивать (использовать) для обработки значения переменных окружения – информационной среды клиентского терминала (тонкие синие стрелки на схеме). С момента, когда программа запущена на исполнение в окне финансового инструмента, исполняются строки головной части программы.

Параметры и внешние переменные

Таким критериемможет быть не только количество лотов, но и факт отсутствия StopLoss на каком-либоиз ордеров, размер дистанции от StopLoss до текущей цены. В ряде случаев критериемможет выступать обобщённый показатель – размер убытка, который может быть полученпри резком изменении цены, т.е. При условии одномоментного автоматического закрытиявсех рыночных ордеров по StopLoss. Каждый открываемый ордер имеет свой уникальный MagicNumber, равный текущему серверномувремени.

Логические операции

В соответствии с принятой в эксперте торговой стратегией эксперт открываети закрывает только рыночные ордера, использование отложенных ордеров в этой стратегиине предусмотрено. Вызов управляющей торговой функции Trade() осуществляется из специальной функцииstart() эксперта usualexpert.mq4. В качестве передаваемого параметра в функции Trade() указано значение, возвращаемоефункцией определения торговых критериев Criterion(). Как правило, обычный эксперт содержит несколько торговых функций.

Функция MarketInfo()

Обратитевнимание, в описании функции ObjectCreate() указываются только координаты ценыи времени. Причём, для второй и третьей пары координат имеются умолчательные значения, в то время как для первой пары координат умолчательных значений нет. Для получения информации об ошибке необходимо вызвать функциюGetLastError(). Глобальная переменная — это переменная, которая доступна всем функциям в программе. Пока программа работает, значение глобальной CTFD Forex переменной сохраняется.

По мере появления в окне финансового инструмента новых баров место положения графическогообъекта OBJ_TEXT относительно ценового графика не изменяется, т.е. С появлениемновых баров объект будет смещаться влево вместе с ценовым графиком, а когда новыхбаров накопится достаточное количество, то объект переместится за пределы левойграницы окна финансового инструмента. Точкой отсчёта координат самого объекта (в данном случае) является верхний левыйугол курсорной рамки, видимой при выделении объекта мышью. В левом верхнем углукурсорной рамки можно видеть небольшую точку, свидетельствующую о настройках данногографического объекта. В случае, если указана иная точка привязки, то и на курсорнойрамке точка будет указана в другом углу. Если прикладная программа (эксперт, скрипт, индикатор) успешно скомпилирована и её название появилось в окне навигатора клиентского терминала, то её можно использовать в практической работе.

Функция вызывается непосредственно перед вызовом функции OnDeinit() и имеет тип возвращаемого значения double. Функция OnTester() может быть использована только в экспертах при тестировании и предназначена в первую очередь для расчета некоторого значения, используемого в качестве критерия Custom max при генетической оптимизации входных параметров. Каждый эксперт и каждый индикатор работает со своим таймером, и получает события только от него. При завершении работы mql4-программы таймер уничтожается принудительно, если он был создан, но не был отключен функцией EventKillTimer(). Результат выполнения функции OnInit() анализируется исполняющей подсистемой терминала только в том случае, если программа скомпилирована с использованием #property strict. Событие Init генерируется сразу после загрузки эксперта или индикатора.

Последовательность исполнения кода в программе

Представить в учебнике описание и пример использованиядля каждой из них не представляется возможным ввиду их большого количества. Некоторыефункции, требующие подробных пояснений, рассмотрены в предыдущих разделах. В данномразделе рассматриваются другие наиболее употребляемые функции. В конце каждогопараграфа приводится полный список функций определённой категории и их краткоеописание.

В этом случае вычисляются значения StopLoss и TakeProfit, соответствующиетипу ордера Buy, и после этого управление передаётся в строку Таким образом, при исполнении функции start() графический объект “канал линейнойрегрессии” будет перерисовываться клиентским терминалом всякий раз при образованиинового бара, на первом же его тике (см. рис. 139). По окончании выполнения экспертав окне финансового инструмента, в момент исполнения специальной функции deinit(),указанный объект будет удалён (т.е. программа “подметёт” после работысвоё рабочее место). В ряде случаев требуется программно изменить положение объекта в окне финансовогоинструмента. Чаще всего такая необходимость возникает по причине появления новыхбаров.

Вызов программ на исполнение

Скрипт удобно использовать для выполнения разовых операций, например, для открытия или закрытия ордеров, для отображения на экране текстовой информации, установки графических объектов и пр. Эксперт (Expert Advisor) – программа, составленная на языке MQL4 и вызываемая клиентским терминалом для исполнения на каждом тике. Основным назначением экспертов является программное управление торговыми операциями. В блоке 5-6 выполняется анализ ошибок, полученных при исполнении торговых приказов.Если ошибка является критической, то функция заканчивает работу. Если же полученапреодолимая ошибка, то значение счётчика i понижается на 1.

Каждый из них может быть удалён программно в соответствии с алгоритмом. Рассмотренный выше эксперт grafobjects.mq4 имеет небольшой недостаток. По окончании работы эксперта в окне финансового инструментаостанется графический объект (при этом его свойства будут такими, какими они былина момент последнего изменения). Графические объекты самопроизвольно не удаляются.По мере развития торгов, начиная с некоторого момента, надпись Открытие Sell ужене будет соответствовать действительности. Чтобы не вводить пользователя в заблуждение,графический объект нужно удалить.

Пользовательская управляющая торговая функция Trade()

Описание стандартной функции скрыто от глаз программиста, его невозможно изменить, но оно доступно редактору MetaEditor. В период компиляции программы редактор MetaEditor сформирует такой исполняемый файл, в котором в полной мере правильно будут исполняться все вызываемые стандартные функции. Головная часть – это несколько строк программы, расположенных в её начале (буквально – в первой, второй строке и т.д.), содержащих некоторые записи. В этих строках размещается информация общего характера, касающаяся программы в целом. Например, в головной части располагаются строки объявления и инициализации глобальных переменных (необходимость расположения той или иной информации в головной части программы будет рассмотрена ниже).

Возвращает значение цены закрытия ордера при достижении уровня прибыльности (take profit) текущего выбранного ордера Возвращает наименование финансового инструмента текущего выбранного ордера Возвращает значение цены закрытия ордера при достижении убыточности (stop loss) текущего выбранного ордера.

Leave a Reply

Your email address will not be published. Required fields are marked *