Общие сведения об индикаторах
Технические индикаторы используются трейдерами для принятия решений о покупке или продаже того или иного актива. Другими словами — для принятия торговых решений.
Индикаторы представляют собой некие графические объекты на графике. Индикаторы могут быть перерисовывающиеся — значение которых постоянно обновляется в соответствии с изменением цены актива, или неперерисовывающиеся — значения которых не зависят от текущего значения цены.
К перерисовывающимся индикатором относятся трендовые индикаторы и осциляторы. Трендовые индикаторы наносятся непосредственно на график цены и следуют за ней по мере изменения ее значения. Осциляторы выводятся в отдельном окне, расположенном, как правило, ниже окна графика цены.
Трендовые индикаторы отличаются от осциляторов тем, что они возвращают значение цены, на основании которй был выведен индикатор. Осциляторы же в свою очередь возвращают значение, расчитанное на основе заложенного алгоритма и, как правило, это значение представлено в виде процентов.
Все перерисовывающиеся индикаторы имеют один схожий параметр — период, за который расчитывается индикатор. Период представляет собой не что иное, как количество свечей, значение цен которых используется в расчете значения индикатора. Также ряд индикаторов имеет параметр сдвиг— который позволяет указать, на сколько свечей требуется сместиться влево (значение меньше нуля) или вправо (значение больше нуля).
Например, если для индикатора Скользящая средняя указать период 55, то расчет значения индикатора будет использовать 55 свечей, включая и текущую, не закрытую на данный момент.
Давайте рассмотрим наглядно на графике, какие свечи будут использоваться при расчете индикатора Скользящая средняя с параметрами, указанными на рисунке выше:
На рисунке выше зеленым прямоугольником выделены свечи, значения которых используются для расчета текущего значения индикатора — 15 свечей, начиная с текущей, незакрытой свечи.
Создание индикаторов
Прежде чем использовать значения индикаторов для принятия торгового решения в нашем советнике, нам необходимо в первую очередь создать эти индикаторы, указав все необходимые параметры для их расчета. При создании индикатора в коде советника мы сможем получить значение этого индикатора, при этом на экран он выведен не будет.
Для того, чтобы создать один из стандартных индикаторов, присутствующих в торговом терминале Metatrader существует целый ряд функций, каждая из которых используется для создания одного индикатора. Каждая функция должна иметь как минимум два формальных параметра — название торгового инструмента и период графика. При этом для расчета индикатора можно использовать не только текущий инструмент и период графика и любой, указанный в параметрах функции.
Давайте рассмотрим создание скользящих средних, которые потребуются нам при создании советника.
Для создания индикатора Скользящая средняя используется функция iMA(), в формальных параметрах которой требуется указать название инструмента, для которого будет расчитан индикатор, период графика, а также все параметры для расчета индикатора — период, сдвиг, тип цены для расчета, метод усреднения (тип скользящей средней). Также мы можем указать количество свечей, на которое требуется сместить влево для расчета значения скользящей средней — сдвиг относительно текущего бара на указанное количество периодов назад.
Для того, чтобы можно было использовать различные периоды скользящих средних в нашем советнике, объявим две переменные в группе параметров советника. Это нам позволит в дальнейшем оптимизировать работу советника для различных инструментов.
Далее в программе мы можем указывать не конкретные значения периодов скользящих средних, а использовать значения данных переменных. Также нам потребуются переменные типа double, в которых будет храниться текущее значение расситанных скользящих средних.
Так как нам потребуется доступ к значениям индикаторов из различных частей программы, то нам необходимо объявить переменные на глобальном уровне, в противном случае значения этих переменных не будут доступны для всей программы советника, а только для блока, в котором они были объявлены.
Далее, нам необходимо получить значения быстрой и медленной скользящих средних и сохранить их в соответствующих переменных. Так как нам, скорее всего, придется часто получать значение этих переменных, то удобнее вынести эти действия в отдельную функцию.
При создани линий индикатора мы используем текущий торговый инструмент, наименование которого нам возвращает стандартная функция Symbol(), текущий период графика, возвращаемый стандартной функцией Period(). Затем нам необходимо указать параметры, требуемые для создания индикатора.
В качестве периода для расчета значений линий индикатора мы использовали переменные, объявленные как входные параметры нашего советника — pFast для быстрой линии и pSlow — для медленной. Остальные параметры обеих линий одинаковые — четвертым параметром сдвиг мы указали 0, далее тип скользящих средних. Мы будем использовать линии EMA, что мы и передали функции. В качестве цены для расчета мы указали цены закрытия свечей — PRICE_CLOSE. Последним параметром мы указали, что хотим расчитывать значения скользящих средних начиная с текущего, незакрытого бара. Если бы мы указали последним значением, например, 1, то расчет скользящих средних начинался бы не с текущей свечи, а предыдущей — последней закрытой свечи на графике.
Теперь, для того, чтобы узнать расчитанные значения скользящих средних, нам достаточно вызвать нашу функцию внутри стандартной функции OnTick(), которая выполняется при каждом поступлении нового тика и вывести расчитанное значение линий индикатора на экран.
Как мы знаем из предыдущих уроков, для корректного отображения чисел с плавающей запятой на экране (типы данных float и double), предварительно необходимо привести к удобному для восприятия виду. Для начала требуется привести в соответствие количество значащих цифр после запятой с количеством знаком в используемой котировке. Для этого мы вызываем функцию NormalizeDouble, первым параметром передавая ей число, которое требуется нормализовать, а вторым параметром — необходимую точность полученного числа. Так как котировки могут быть как 5-значные, так и 4-значные, 3-значные и 2-значные, то в качестве второго параметра мы передаем глобальную переменную Digits, которая имеет значение, равное числу знаков после запятой для текущего торгового инструмента.
Далее, мы переводим числовой тип double в строку стандартной функцией DoubleToString, также указав требуемую нам точность числа.
Теперь наш советник готов для установки на график. Торговать он, конечно, пока не умеет, но кое что уже способен делать! Давайте проверим что у нас получилось
При установке нашего советника на график, нам предоставляетя возможность указать входные параметры для его работы. Мы указали в качестве входных параметров — периоды для расчета быстрой и медленной скользящей средней.
Заключение
В данной статье мы узнали, какие существуют индикаторы и как получать их значения из программы на языке MQL.