Клинит!!! Помогите!!!

 

Ребята, вопрос вот в чем. Есть одна кривая индюка, есть вторая кривая - вторая это сдвинутая назад по времени копия первой. Они разных цветов. Понятное дело, дрожат на конечных сегментах, из за изменения цены. Т.е. перерисовываются, но не критически. Задача стоит в том чтобы поймать уже свершившееся пересечение и войти ордером по второй свече.тогда как пересечение остается на первой. пересечения, в конце концов, может и не быть. Но если оно есть - ставить ордер на открытии 2 свечи. Неужели нельзя это перенести в код? Я заманался доказывать что такое возможно. Не знаю как - по модулю, по относительным координатам, по процентам, по цвету кривых в конце концом. Может кто выведет из штопора? Тогда возможно взаимовыгодное предложение

Спасибо всем, кто прочел мою просьбу!

 

Вторая сдвинута влево или вправо? Покажите изображение.

 
по моему типичная задача. а рисунок индикаторов покажете?
 
Integer писал(а) >>

Вторая сдвинута влево или вправо? Покажите изображение.

Вторая сдвинута назад.

 
EgorD писал(а) >>

Вторая сдвинута назад.

Где этот зад? Слева или справа? Почему прямо на вопрос не отвечаете? Где на изображении эта сдвинутя линия?

 
Integer писал(а) >>

Где этот зад? Слева или справа? Почему прямо на вопрос не отвечаете? Где на изображении эта сдвинутя линия?

Извините.На рисунке это красная линия(она сдвинута). Назад-это значит влево. Назад по времени.

 
EgorD >>:

Задача стоит в том чтобы поймать уже свершившееся пересечение и войти ордером по второй свече.тогда как пересечение остается на первой.

https://book.mql4.com/ru/samples/indicators

Почитайте, возможно некоторые вопросы пропадут. Как раз найдёте пример ловли пересечений.

 
Интересно, а как он рисует ее для нулевого бара, если она сдвинута.
 

отловить пересечение просто..


string ind = "Copmplex_pairs";
double red1 = iCustom(NULL,0,ind,0,2);
double red2 = iCustom(NULL,0,ind,0,3);
double yel1 = iCustom(NULL,0,ind,1,2);
double yel2 = iCustom(NULL,0,ind,1,3);

// пересечение красная пошла ниже желтой
if (red2 > yel2 && red1 < yel2) что-то_делать();

// пересечение желтая пошла ниже красной
if (red2 < yel2 && red1 > yel2) что-то_делать();

0 - это номер индикатора, отрисовывающего красную линию

1 - это номер индикатора, отрисовывающего желтую линию

у вас могут быть другие номера

double iCustom(

string symbol, int timeframe, string name, ..., int mode, int shift)

Расчет указанного пользовательского индикатора. Пользовательский индикатор должен быть скомпилирован (файл с расширением EX4) и находиться в директории каталог_терминала\experts\indicators.
Параметры:
symbol - Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
name - Имя пользовательского индикатора.
... - Список параметров (при необходимости). Передаваемые параметры должны соответствовать порядку объявления и типу внешних (extern) переменных пользовательского индикатора.
mode - Индекс линии индикатора. Может быть от 0 до 7 и должен соответствовать индексу, используемому одной из функций SetIndexBuffer.
shift -

Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).


кроме того нужно реализовать открытие позиций только при появлении нового бара,

тогда открытие позиции будет при появлении нового бара, второго по счету после пересечения