Пользовательские (внешние) индикаторы

При создании своих стратегий можно брать любые пользовательские индикаторы, которые используют буферы. Если у вашего индикатора есть буфер - это значит, что от него можно получить некоторое числовое значение. Это позволяет подключать пользовательские индикаторы в качестве источников данных.
Чтобы узнать, использует ли ваш индикатор буферы, нужно перейти в терминал МТ4 и установить в него индикатор, который вы собираетесь протестировать (он в любом случае должен быть установлен перед тестом). Затем нужно найти его в списке индикаторов и добавить на любой график реального рынка. По клику правой кнопкой мыши на график выберите пункт "Список индикаторов". В открывшемся списке сделайте двойной клик по вашему индикатору, и отобразится список его параметров. Во вкладке "Цвета" будет список буферов, которые использует данный индикатор.
В данном случае используются два буфера: 0 (синий) и 1 (красный). Если в вашем индикаторе данный список пуст, или содержит буферы, отображаемые черным цветом, которые нигде индикатором не используются, то тестирование стратегии с использованием данного индикатора невозможно. Исключением являются индикаторы, которые "рисуют" на графике такие графические объекты, как "Горизонтальная линия", "Трендовая линия", "Сеть Фибоначчи" (для настройки работы с ними перейдите в раздел Графические элементы.
В качестве примера рассмотрим пользовательский индикатор Oberon. Данный индикатор имеет два буфера: Буфер 0 отвечает за отображение синих стрелок, направленных вверх, Буфер 1 - за отображение красных стрелок, направленных вниз. Рассмотрим следующие условие открытия ордеров с использованием данного индикатора: ордеры в направлении SELL открывать при появлении красной стрелки (Буфер 1).
Для этого перейдем в редактор и создадим новую стратегию. Добавим группу условий открытия, тип ордеров выберем "SELL", тип группы - "Один сигнал - один ордер". Добавим новое условие с типом "Сравнение источников данных" - оно необходимо для функции отслеживания появления графических элементов.
Рассмотрим алгоритм работы индикаторов данного типа. Каждый тик буфер индикатора (в нашем случае Буфер 0) будет выдавать некоторое числовое значение. Возможны два варианта этого значения: если на рассматриваемом баре отсутствует графический элемент данного буфера (в нашем случае об этом будет свидетельствовать отсутствие стрелки), то индикатор будет выдавать максимально возможное числовое значение, равное 2147483647. Если же на рассматриваемом баре буфер отрисовал графический элемент (в нашем случае буфер отрисует стрелку), то индикатор будет выдавать уровень цены, на котором расположился данный элемент на графике. Следовательно, задача отслеживания появления стрелки сводится к следующему: на необходимом нам баре мы будем сравнивать значение индикатора, полученное от данного буфера, с любым числом, явно большим чем максимальное ценовое значение графика, но меньшим, чем максимально возможное числовое значение (2147483647). Для примера возьмем число 999999.
Вернемся в редактор и реализуем алгоритм сравнения, описанный выше. Для этого в качестве первого источника данных выберем "Внешний индикатор". Настроим параметры индикатора Oberon, рассматриваемого в примере:
Здесь поле "Название" должно полностью совпадать с названием файла индикатора, который вы поместили в папку "MQL4/Indicators" вашего терминала. Расширение ".ex4" указывать не нужно. "Источник данных" - номер буфера, из которого мы будем брать данные. В данном случае за красную стрелку отвечает Буфер 1. В поле "Сдвиг" указываем номер бара, на котором будем ждать стрелку. Это должна быть только что закрывшаяся свеча (бар), поэтому указываем единицу.
В нашем случае нет необходимости указывать входные параметры индикатора, потому что стандартные нас вполне устраивают. Если вам нужно добавить и настроить входной параметр для индикатора, нажмите кнопку "Добавить параметр". В появившемся поле нужно ввести значение и указать тип данного параметра ("Число" или "Текст"). Некоторые параметры имеют тип логических значений true (истина) или false (ложь), числовое представление которых 1 или 0 соответственно. В редакторе при добавлении параметра данного типа следует указывать их в числовом представлении ( 0 или 1 с типом "Число"). Пример рассмотренного параметра в настройках индикатора:
В редакторе при добавлении параметров, которые отвечают за цвет графических объектов индикатора, в поле для ввода следует всегда указывать число 255 (тип "Число"). Пример рассмотренных параметров в настройках индикатора:
Важно отметить, что нельзя пропускать и менять очередность следования входных параметров. Также важно всегда указывать верный тип параметра. Ошибки ввода параметров индикатора могут привести к некорректной работе источника данных и, как следствие, всего условия. Более того, неверно указанные типы параметров или буферы могут привести к некорректной и очень медленной работе всего тестера МТ4. Так выглядит список входных параметров индикатора Oberon:
А так будет выглядеть список четырех первых входных параметров в настройках индикатора:
Доступно добавление одинадцати параметров индикатора.
Первый источник данных для сравнения успешно задан.
В качестве второго источника данных для сравнения выступает число 999999. Для задания этого числа в редакторе используем источник данных "Фиксированная цена".
Второй источник данных для сравнения успешно задан.
Остается только выбрать знак сравнения между источниками. Для выполнения условия рассматриваемой задачи необходимо, чтобы значение индикатора Oberon было меньше числа 999999 (появление стрелки, направленной вниз). Следовательно, выбираем знак "<" (меньше).
В результате в те моменты, когда стрелки нет, буфер будет выдавать максимально возможное числовое значение(2147483647). Оно будет больше, чем указанное число во втором источнике сравнения (999999) - условие не выполняется, и сделка открыта не будет. Как только появится стрелка, буфер выдаст цену, на которой расположилась стрелка. Эта цена будет меньше, чем число 999999 - условие будет выполнено и даст сигнал на открытие сделки в SELL-направлении.
Зададим фиксированный лот 0,01 для ордеров данной стратегии в разделе money-менеджмент и сохраним стратегию. Перейдем в терминал и отследим открытие ордера согласно условию примера.
Как видно на графике, условие примера успешно выполнено.
Рассмотренный алгоритм создания различных условий подходит для всех индикаторов, основанных на отрисовке одиночных графических элементов.
Вернуться к справке На главную