Примеры решения задач с помощью индикаторов Universal

14 сентября 2018, 14:46
Yurij Kozhevnikov
0
94

EN

Примеры реальных просьб пользователей о написании индикатора и решения их задач с помощью индикаторов Universal

Содержание


Вопрос 1. Превышение значения.

Напишите, пожалуйста, такой индикатор - надо графически, с вертикальной линии, показать те свечи на которых показание РСИ превышает мною заданное какое то значение. Эти значение (уровни РСИ) могут менятся с 0 до 100 и тут важно, чтобы можно было вводить четыре знаки после запятой, например значение 79,9834. 

 В настройках индикатора надо было чтобы возможно менять период РСИ и ввести уровень РСИ при котором появится вертикальные линии через свеч.

 Ну вот, например, период РСИ 2 и допустим я ввёл чтобы после превышание уровня 86,8840 через этих свеч нарисовался вертикальная линия.

Ответ

Индикаторы Universal не предназначены для рисования дополнительных графических объектов, но и с помощью одной линии индикатора можно добиться похожего эффекта.
Решим задачу, сформулированную в последнем предложении.
Для контроля кинем на график индикатор RSI с периодом 2 и добавим для контроля уровень с значением 86,8840.
Затем кинем на график индикатор Universal Main Window или Universal Main Window MT5 в зависимости от платформы и напишем формулу:

IF (RSI(2, 0 , 0) > 86.8840, 1.01 * High(0), 0)

Другими словами, мы рисуем линию по следующему правилу:
Если значение RSI больше 86,8840, то значение индикатора выше максимума текущего бара на 1%. В противном случае - ноль.

Как видим, результат весьма похож на то, что просил пользователь.

Содержание

Вопрос 2. Модификация индикатора Envelopes.

Здравствуйте, помогите пожалуйста!

 Нужно чтобы индикатор Envelopes.mq5 отклонение брал не в процентах (%), а в пунктах исходя из расчёта индикатора ATR.mq5. За ранее спасибо)

Ответ

Из справки узнаем, как рассчитывается индикатор Envelopes.
Оказывается, это индикатор Moving Average, смещённый вверх и вниз на заданный процент. Для того, чтобы имитировать работу этого индикатора, заменив проценты пунктами, взятыми из индикатора ATR, достаточно будет двух экземпляров бесплатной версии индикатора Universal Main Window Free или Universal Main Window Free MT5 в зависимости от платформы.
Кинем на график индикаторы ATR и Envelopes, указав в настройках одинаковый период.
Кинем на график первый индикатор Universal, предназначенный для верхней линии, назначив ему цвет линии Aqua и следющую формулу:

MA(14, 0, 0, 0) + ATR(14, 0)

Для нижней линии назначим цвет Magenta и формулу:

MA(14, 0, 0, 0) - ATR(14, 0)

Как видим, результат не сильно отличается от стандартного индикатора Envelopes.

Содержание

Вопрос 3. Пересечения.

Здравствуйте. Помогите с сигнальным индикатором. Не могу нигде найти рабочий вариант.

Принцип работы заключается в следующем - при пересечении ценой верхней или нижней полосы Боллинждера со стандартными настройками, а также одновременно с этим, обозначенных приделов индикатора RSI (70-30 или 80-20), индикатор должен подавать звуковой сигнал. Можно добавить к этому индикатору стрелочный указатель. Период RSI должен настраиваться пользователем. Заранее спасибо.

и RSI и BB пересечение сверху вниз верхней линии или снизу вверх , опишите точнее условия
в общем система основана на затухании тренда. если цена пересекает верхнюю границу BB снизу вверх и границу 70 или 80 RSI, то дается звуковой сигнал на продажу, если цена пересекает нижнюю границу BB сверху вниз и границу 30 или 20 RSI, то дается звуковой сигнал на покупку. Bollinger bands со стандартными настройками период 20, отклонение 2, RSI должен настраивать пользователь, в том числе и крайние приделы. таймфрейм 1, 5, 15, 30 мин.

Ответ

Пересечения - это тонкий вопрос, который можно понимать и реализовывать по-разному. Одновременные пересечения в двух разных индикаторах - очень редкое явление, которое может вообще никогда не произойти. Некоторые заказчики неправильно употребляют термин "пересечение", понимая под ним "нахождение в области".
Мы рассмотрим реализации обоих понятий.
Общей будет конечная реализация: в дополнительном окне графика индикатор будет рисовать линию в диапазоне от -2 до +2, где значения -2 и +2 будут означать соблюдение обоих условий на продажу или покупку соответственно, -1 и +1 - соблюдение только одного условия, а 0 - несоблюдение ни одного условия или получение разнонаправленных сигналов.
Так как в нашем алгоритме присутствуют условия, нам потребуется полная версия индикатора Universal Separate Window или Universal Separate Window MT5 в зависимости от платформы.

1. Пересечение.
Разберёмся с понятием пересечения и разделим задачу на составляющие.
Возьмём воображаемые Линию1 и Линию2. Предположим, что Линия1 на предыдущем баре была ниже Линии2, а на текущем баре - выше. Как это выразить языком формул? Если вспомнить, что текущий бар всегда нулевой, предыдущий первый и так далее, можно скаазать что Линия1(1) < Линия2(1) И Линия1(0) > Линия2(0). Достаточное ли это условие? Нет. Редко, но иногда может случиться, что мы попадаем на момент пересечения и тогда Линия1 = Линия2. Можно попробовать сделать такое условие: Линия1(1) <= Линия2(1) И Линия1(0) > Линия2(0). Но в этом случае мы можем попасть на ложное срабатывание, если Линия1 была выше Линии2, на следующем баре коснулась её, а затем снова поднялась. Факта пересечения в этом случае не будет, а условие сработает. Будем считать достаточной такую проверку: на втором баре Линия1 ниже Линии2, на первом - ниже или на одном уровне, а на нулевом - выше: Линия1(2) < Линия2(2) И Линия1(1) <= Линия2(1) И Линия1(0) > Линия2(0).
А теперь перейдём к индикаторам.

1.1. Bollinger Bands®.
Составим условие пересечения ценой верхней линии индикатора с заданными в вопросе настройками и назначим его полю Expression1:

Expression1 =
AND( Close(2) < BB(20,2,0,1,2) , Close(1) <= BB(20,2,0,1,1) , Close(0) > BB(20,2,0,1,0))

Аналогично составим условие для пересечения нижней линии и назначим его полю Expression2:

Expression2 =
AND( Close(2) > BB(20,2,0,2,2) , Close(1) >= BB(20,2,0,2,1) , Close(0) < BB(20,2,0,2,0))

Вспомним, что пересечение верхней линии - это сигнал на продажу, а пересечение нижней - сигнал на покупку.
Сформулирум общее условие:
Если сигнал на продажу, то -1, в противном случае если сигнал на покупку, то +1, в противном случае 0.
Составим соответствующую формулу, вставив в неё созданные ранее условия, и назначим её полю Expression3:

Expression3 =
IF ( Expression1 , -1 , IF ( Expression2 , 1 , 0 ) )

1.2. Relative Strength Index.
Составим аналогичным образом условие для пересечения линии индикатора RSI снизу вверх значения 70. Так как волатильность линии увеличивается с уменьшением заданного периода, поставим период 5. Назначим это условие полю Expression4:

Expression4 =
AND( RSI(5,0,2) < 70 , RSI(5,0,1) <= 70 , RSI(5,0,0) > 70)
Теперь условие для пересечения сверху вниз значения 30 назначим полю Expression5:
Expression5 =
AND( RSI(5,0,2) > 30 , RSI(5,0,1) >= 30 , RSI(5,0,0) < 30)

А теперь с помощью этих заготовок составим общую формулу как для предыдущего индикатора и назначим её полю Expression6:

Expression6 =
IF ( Expression4 , -1 , IF ( Expression5 , 1 , 0 ) )

1.3. Окончательная формула.
У нас получились для двух индикаторов две формулы, которые при сигнале на продажу возвращают -1, а при сигнале на покупку +1.
Просуммируем их и получим итоговую формулу, которую вставим в поле Line Function:

Line Function =
Expression3 + Expression6

1.4. Результат.

2. Нахождение в области.
Для проверки условия нахождения линии в определённой области достаточно одного (если линия должна быть выше или ниже определённого значения) или двух (если линия должна между двух определённых значений) условий.
В нашем случае достаточно одного условия для каждой проверки.
Оформим эти условия как в предыдущем примере.

2.1. Bollinger Bands®.
Составим условие нахождения цены выше верхней линии индикатора и назначим его полю Expression1:

Expression1 =
Close(0) > BB(20,2,0,1,0)

Теперь составим условие нахождения цены ниже нижней линии и назначим его полю Expression2:

Expression2 =
Close(0) < BB(20,2,0,2,0)

Благодаря такой структуре общая формула для индикатора не будет отличаться от предыдущего примера:

Expression3 =
IF ( Expression1 , -1 , IF ( Expression2 , 1 , 0 ) )

2.2. Relative Strength Index.
Аналогично составим условия для индикатора RSI:

Expression4 =
RSI(5,0,0) > 70
Expression5 =
RSI(5,0,0) < 30
Expression6 =
IF ( Expression4 , -1 , IF ( Expression5 , 1 , 0 ) )

2.3. Окончательная формула.
Окончательная формула также не будет отличаться от предыдущего примера:

Line Function =
Expression3 + Expression6

2.4. Результат.

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

Содержание

Вопрос 4. Размер свечи.

Есть такой индикатор который показывал объём тела свечи в пунктах на графике?

Ответ

Для того, чтобы узнать величину любого компонента свечи, необходимо вычесть один показатель бара от другого. Для того, чтобы результат был в пунктах, надо полученную разницу умножить на 10 в степени количества знаков после запятой в цене данного инструмента. Для такой задачи будет достаточно бесплатного индикатора Universal Separate Window Free или Universal Separate Window Free MT5 в зависимости от платформы.
Составим таблицу, в которой определим все возможные показатели свечи для пятизнака:

Размер свечи
(High(0) - Low(0)) * 10^5
Размер тела свечи
Abs(Close(0) - Open(0)) * 10^5
Размер верхней тени
( High(0) - Max( Open(0), Close(0) ) ) * 10^5
Размер нижней тени
( Min (Open(0), Close(0) ) - Low(0) ) * 10^5

Размер тела свечи:

Содержание


Поделитесь с друзьями: