Input переменные и функции MQL4
В этом разделе курса мы составим список дел вспомогательных действий для торгового робота.
Техническое задание
Напишем техническое задание правильно, от этого зависит точность кода программиста. ☀☁ Да-да, помните: «Солнце, как в цирке, лучами играло»?
Вход в сделку осуществляется в сторону закрытой дневной свечи: при бычьей – на покупку, при медвежьей – на продажу. Фиксированные тейк-профит и стоп-лосс: 25-30 пунктов для 4х-значных котировок. Если сделка закрывается с убытком, то переворачиваем позицию и увеличиваем размер ставки столько раз, пока депозит ни закончится сделка ни закроется с прибылью. Когда сделка закрывается с прибылью, тогда ждём начала новой дневной свечи и соответствующего сигнала, чтобы открыть сделку с начальным размером ставки.
Прочтём описание стратегии ещё раз и выделим 2 главных момента:
- входные параметры
- пользовательские функции
Входные параметры глазами заказчика
- размер тейк-профита
- размер стоп-лосса
- множитель увеличения лота
- начальный размер лота
Функции глазами заказчика
- функция «вход в сделку»
- функция «направление закрытия дня»
- функция «сигнал на продажу»
- функция «сигнал на покупку»
- функция «определение начало дня»
Входные параметры глазами разработчика
- фиксированный размер профита в пунктах, целая величина (int), по умолчанию: 250 (для 3-х, 5-значных котировок)
- фиксированный размер убытка в пунктах, целая величина (int), по умолчанию: 250 (для 3-х, 5-значных котировок)
- множитель увеличения лота, дробная величина (double), по умолчанию: 0.01
- начальный размер лота , дробная величина (double), по умолчанию: 2.0
- фиксированный размер проскальзывания в пунктах, целая величина (int), по умолчанию: 10 (для 3-х, 5-значных котировок)
- переключатель «не в сторону закрытой дневной свечи», булевой элемент (bool), по умолчанию: false (хоть заказчик этого и не просил, но мы сделаем возможность для реверс-сигналов)
- рабочий таймфрейм, уникальный идентификатор (ENUM_TIMEFRAMES), по умолчанию: 15
Функции глазами разработчика
- функция, определяющая тренд (по дневным свечам)
- функция, идентифицирующая открытые ордера (по рынку)
функция, идентифицирующая закрытые ордера (в истории)- функция, возвращающая размер профита последнего закрытого ордера (в истории)
- функция, возвращающая дату последнего закрытого ордера (в истории)
- функция, возвращающая размер лота последнего закрытого ордера (в истории)
- функция, возвращающая тип последнего закрытого ордера (в истории)
- функция, открывающая сделки
- функция, прописывающая алгоритм торговой стратегии
Как видим, у заказчика и разработчика разные взгляды на одни и те же вещи.
Input переменные
Давайте впишем в код указания для входных параметров.

Input переменные определяют входные параметры программы, они доступны из окна свойств программы.

Функции MQL4
В нашем курсе уже не в первый раз упоминаем о важности функций для написания кода советника.
Сегодня составим список достаточных функций на языке MQL4, необходимых для решения промежуточных задач в помощь программисту.
Определение функции
Код, описывающий, что делает функция, называется определением функции:
заголовок_функции
{
инструкции
}
Всё, что находится перед первой фигурной скобкой, составляет заголовок определения функции, а то, что находится между фигурными скобками, является телом определения функции.
Избранный список функций MQL4
Отсортируем функции по разделам.
Доступ к таймсериям и индикаторам
- iBars() — возвращает количество баров в истории по соответствующему символу и периоду
- iClose() — возвращает значение цены закрытия бара соответствующего графика
- iOpen() — возвращает значение цены открытия бара соответствующего графика
- iTime() — возвращает значение времени открытия бара соответствующего графика
- iVolume() — возвращает значение тикового объема бара соответствующего графика
Общие функции
Преобразование данных
- NormalizeDouble() — округление числа с плавающей точкой до указанной точности
- TimeToString() — преобразование значения, содержащего время в секундах, прошедшее с 01.01.1970, в строку формата «yyyy.mm.dd hh:mi»
Проверка состояния
- GetLastError() — возвращает значение последней ошибки
- IsTradeAllowed() — возвращает информацию о возможности торговли при помощи экспертов
- Symbol() — возвращает имя символа текущего графика
Торговые функции
- OrderCloseTime() — возвращает время закрытия выбранного ордера
- OrderLots() — возвращает количество лотов выбранного ордера
- OrderMagicNumber() — возвращает идентификационное («магическое») число выбранного ордера
- OrderProfit() — возвращает значение чистой прибыли выбранного ордера
- OrderSelect() — выбирает ордер для дальнейшей работы с ним
- OrderSend() — основная функция, используемая для совершения торговых операций или установки отложенного ордера
- OrdersHistoryTotal() — возвращает количество закрытых и удалённых ордеров в истории текущего счёта, загруженной в клиентском терминале
- OrdersTotal() — возвращает общее количество открытых и отложенных ордеров
- OrderSymbol() — возвращает наименование финансового инструмента текущего выбранного ордера
- OrderType() — возвращает тип операции текущего выбранного ордера
В следующий раз мы рассмотрим применение функций в подробностях.
{Продолжение следует}