MetaQuotes Language 4 (MQL4) - новый встроенный язык программирования торговых стратегий. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и идеально подходящие для реализации собственных торговых стратегий. Кроме того, на MQL4 можно создавать собственные технические индикаторы...
Скрипт открытия сетки ордеров BuyLimit/SellLimit
Скрипт, открывающий сетку отложенных ордеров BuyLimit/SellLimit с заданным отступом от текущей цены и шагом.
Скрипт открытия сетки ордеров BuyStop/SellStop
Скрипт, открывающий сетку отложенных ордеров BuyStop/SellStop с заданным отступом от текущей цены и шагом.
Магический номер последней закрытой позиции
Функция возвращает магический номер последней закрытой позиции. Параметры: (нет)
Тип последней закрытой позиции
Функция возвращает тип последней закрытой позиции. Параметры: _magic — MagicNumber (-1 — любой магик)
Профит открытых позиций в пунктах
Функция возвращает профит всех открытых позиций в пунктах. Параметры: _order_type — операция (-1 — любая позиция) _magic — MagicNumber (-1 — любой магик)
Профит открытых позиций в валюте депозита
Функция возвращает профит всех открытых позиций в валюте депозита с учётом комиссии и свопов. Параметры: _order_type — операция (-1 — любая позиция) _magic — MagicNumber (-1 — любой магик)
Урок №11: Пишем индикатор
На этом уроке мы напишем простой индикатор, который в дальнейшем будем использовать при разработке советника. А использовать для получения сигнала мы будем уже существующие — Moving Average и MACD. Алгоритм следующий: Определять направление сделки (покупка или продажа) мы будем по индикатору Moving Average с периодом 100 на дневном графике(Daily), т.е. если текущая цена выше MA(100), то покупаем, а если ниже — продаём. А для поиска удачных точек входа воспользуемся индикатором MACD. вход в покупки– индикатор MACD ниже нуля, идет снизу вверх, а его сверху вниз пересекает сигнальная линия. вход в продажи – индикатор MACD выше нуля, идет cверху вниз, а его снизу вверх пересекает сигнальная линия. Итак, приступим. Запускаем MetaEditor и вызываем мастер создания программ. Отмечаем в списке выбора «Пользовательский Читать дальше …
Урок №10: Наш первый советник
Уважаемые коллеги, на этом уроке мы напишем наш первый советник, познакомимся с некоторыми основными функциями языка MQL4, а также напишем несколько своих. Приступим, и для начала запустим MetaEditor и создадим шаблон эксперта, ничего не меняя, просто нажимаем кнопку «Далее»… Обязательно заполняем, как минимум, поле «Имя» — это название нашего будущего советника, поля «Автор» и «Ссылка» не обязательны к заполнению. Добавляем параметры «Lots», «TakeProfit», «StopLoss», обращая внимание тип данных каждого параметра. После заполнения нажимаем кнопку «Далее»: На следующей форме мастера мы также ничего не отмечаем, просто нажимаем кнопку «Далее»: И очередное окно мы оставляем без заполнения, нажимаем кнопку «Готово»: Итак, мы получили шаблон будущего эксперта, с которым будем работать. Итак, мы предусмотрим наш будущий советник для работы с 4-х Читать дальше …
Урок №9: Перегрузка функций
MQL4 позволяет определять несколько функций с одинаковым именем. Такие функции называются перегруженными. Их может быть две, три и больше и различаются они порядком следования, количеством, типом. Таким образом перегрузка функций нужна для того, чтобы избежать дублирования имён функций, выполняющих подобные действия, но с различной программной логикой. В конечном счёте перегрузка функций улучшает удобочитаемость программ. Например, предположим, что в вашей программе есть функция с именем day_of_week, которая возвращает текущий день недели (0 для воскресенья, 1 для понедельника, …, 6 для субботы). Ваша программа могла бы перегрузить эту функцию таким образом, чтобы она верно возвращала день недели, если ей передан юлианский день в качестве параметра, или если ей переданы день, месяц и год: //+——————————————————————+ //| Expert function | //+——————————————————————+ int day_of_week(int julian_day) { // Операторы Читать дальше …
Урок №8: Локальные и глобальные переменные
На одном из прошлых уроков мы узнали, что функции позволяют разделить программу на небольшие легко управляемые части. Все функции, используемые вами до настоящего момента, были достаточно простые. Как только вашим функциям потребуется выполнить более сложную работу, они должны будут использовать переменные для реализации своих задач. Переменные, которые объявляются внутри функции, называются локальными переменными. Факт того, что локальные переменные существуют, известны только функции, в которой они объявлены. Наиболее важно понять то, что локальные переменные существуют только в блоке кода, в котором они объявлены. Таким образом, локальные переменные создаются при входе в блок и уничтожаются при выходе из него. Наиболее типичным блоком кода, в котором объявляются локальные переменные, является функция. Например, рассмотрим две функции: //+——————————————————————+ //| Expert function | //+——————————————————————+ void func1() { int x; Читать дальше …
Урок №7: Условия и циклы
Условный оператор if Конструкция практически любого алгоритма подразумевает наличие условий, поэтому для организации вычислений в зависимости от какого-либо условия в MQL предусмотрен условный оператор if, который в общем виде записывается следующим образом: if (условие) выражение_1; else выражение_2; Здесь условие — это логическое выражение, переменная или константа. Работает условный оператор следующем образом. Сначала вычисляется значения выражения, записанного в виде условия. Если оно имеет значение истина (true), выполняется выражение_1. В противном случае (значение ложное (false) ) выражение_2. Например, чтобы сравнить значения переменных a и b нужно написать следующую часть программного кода: //+——————————————————————+ //| Expert function | //+——————————————————————+ bool check(int a, int b) { if (a > b) return true; return false; } В данном случае условие(a > b) помещено в скобках после оператора if. В этой конструкции код «return Читать дальше …
Урок №6: Операции и выражения
Виды операций В языке MQL4 различают следующие виды операций: арифметические операции; операции присваивания; операции отношения; логические операции; побитовые операции; операция запятая; вызов функции. Арифметические операции К символам арифметических операций относятся следующие: Символ Операция Пример Аналог + Сумма величин x + 2 — Вычитание величин или изменение знака x — 3, y = — y * Умножение величин 3 * x / Частное от деления x / 5 % Остаток от деления minutes = time % 60 ++ Добавление 1 к значению переменной y++ y = y + 1 — Вычитание 1 из значения переменной y— y = y — 1 Операции присваивания К символам операций присваивания относятся следующие: Символ Операция Пример Аналог = Присваивание значения x переменной y у = Читать дальше …