MQL4: уроки программирования, советники и индикаторы, учебник

уроки программирования mql4

Полученный файл будет сохранен в соответствующем каталоге, в зависимости от его типа. Затем мы вызываем функцию PipPoint() и присваиваем результат UsePoint. Теперь мы можем использовать значение, хранящееся в UsePoint, например, для расчета стоп-лосса. Функции являются строительными блоками современных языков программирования. Функция — это блок кода, предназначенный для выполнения определенной задачи, например, размещения ордера или расчета стоп-лосса.

  1. Первая будет открывать ордер указанным объёмом по текущей рыночной цене в указанном направлении.
  2. Cо значениями по умолчанию советник не блещет результатами, впрочем, и не сливает.
  3. Мы пишем демонстрационный вариант, поэтому не будем обрабатывать возможные исключения, когда что-то пошло не так и на счёте оказались открыты встречные ордера.
  4. В сегодняшнем уроке мы разберем, как можно автоматизировать средствами MQL4 один из самых сильных и надежных паттернов – дивергенцию.

Именно их мы будем использовать для иллюстраций и называть барами. Массивы, в которых каждый элемент имеет один индекс, называются одномерными. Если же каждый элемент массива имеет более одного индекса – то мы имеем дело с многомерным массивом. Давайте решим предыдущую задачу с использованием функции, которая будет удалять из переданного по ссылке массива элемент с указанным индексом. Оператор continue прерывает текущую итерацию цикла и начинает новую. Все операторы в теле цикла, идущие за оператором continue, не будут выполнены.

Качественное открытие и модификация ордеров

Она только производит действия над массивом в целом или над его отдельными элементами. Номер переменной в массиве называют индексом (от латинского index – указательный палец). При объявлении массива в квадратных скобках указывается его размер (количество элементов), а при обращении к переменной – индекс элемента. Циклы служат для многократного повторения какого-то участка кода, а массивы – для хранения неограниченного количества структур данных с их последующей обработкой в цикле. Сетка строится на расстоянии, равном значению входного параметра DistanceToGrid от цены Ask для ордеров Buy Stop и Bid для сетки Sell Stop. В случае, если это значение меньше минимально разрешённого, сетка строится на расстоянии Sell Stop для данного символа.

Операторы break и continue могут использоваться в теле цикла любого типа. В данном коде мы реализовали задержку с выводом оставшегося до запуска времени в секундах при помощи цикла do while. Функция GetTickCount() возвращает количество миллисекунд, прошедших с момента старта системы.

Массивы

Нельзя опускать только разделяющие выражения точки с запятыми, то есть в записи всегда должны быть оба символа «;». Например, запись for(;;) представляет собой бесконечный цикл. Выражение1 и выражение3 могут состоять из нескольких выражений, объединенных оператором запятая «,». Мы объявили переменную sum для записи в неё текущей суммы чисел и проинициализировали её нулевым значением. Опираясь именно на собранную функцией RefreshState() статистику, советник отслеживает текущую обстановку на торговом счёте и определяет, на каком именно шаге алгоритма он находится.

Структуры в MQL4 представляют собой наборы данных, которые называют элементами структуры или полями. В отличие от массивов, которые содержат элементы только одного типа, структуры могут состоять из элементов разных типов. Таким образом, первым и основным назначением структур является возможность группировать переменные по какому-то признаку. Структура – это пользовательский тип данных, а значит, можно объявлять переменные этого типа. К каждому элементу структуры можно обращаться и изменять его напрямую, как и обычную переменную. Однако на все эти действия распространяются и определённые ограничения, которые мы рассмотрим далее.

уроки программирования mql4

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

уроки программирования mql4

Для фиксации прибыли в нашем советнике используется общий Stop Loss, но может случиться так, что будут активированы все ордера пирамиды и цена уйдёт дальше по тренду. Чтобы не терять в таких редких случаях прибыль, используется страховочный Take Profit, иначе нам придётся ждать возвращения цены и срабатывания общего Stop Loss. При этом лучше всё-таки использовать больше ордеров в пирамиде. Обратите внимание, что в теле метода мы обращаемся к элементам структуры, не используя точку, так как мы использовали операцию разрешения контекста. Числовые поля перед их обновлением в самом начале тела метода обнуляются функцией ZeroMemory() с ключевым словом this, таким образом, структура передаёт ссылку на саму себя. После заполнения формы Вы получите доступ более чем к 10 часам подробных пошаговых видеоуроков с домашними заданиями для закрепления.

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

Скоростной, гибкий и мощный язык программирования торговых роботов

Мы указываем внешнюю переменную, добавляя extern перед переменной. Это указывает на то, что переменная будет отображаться в диалоговом окне «Свойства эксперта» и будет доступна для просмотра и настройки пользователем. Мастер советников в MetaEditor — это самый быстрый способ начать создавать советник. Вы можете запустить мастер, выбрав New в меню File, нажав кнопку New на панели инструментов или нажав Ctrl + N на клавиатуре.

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

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

Автоматический поиск дивергенции на примере осциллятора RSI

Поскольку обращение к элементам массива, как правило, осуществляется с использованием циклов, то научимся сначала работать с ними, а потом перейдем к массивам. Исходный код советника снабжён подробными, практически построчными комментариями, так что его можно рассматривать как самостоятельный учебный материал. Исходя из особенностей трендовой торговли, вариант с уменьшением лота выглядит предпочтительнее, поскольку по мере затухания тренда мы уменьшаем и объём наших «доливок». Конечно, в этом случае прибыль ожидаемо больше, но пропорционально растёт и просадка.