Определение изменения цвета Heiken Ashi Smoothed

 

Здравствуйте.


Не понимаю, как определить смену цвета у Heiken Ashi Smoothed


Думал, что правильный способ такой


double HAOpen = iCustom(NULL, 0, "Heiken_Ashi_Smoothed", MaMetod, MaPeriod, MaMetod2, MaPeriod2, 2, 1);
double HAClose = iCustom(NULL, 0, "Heiken_Ashi_Smoothed", MaMetod, MaPeriod, MaMetod2, MaPeriod2, 3, 1);
text Color;

if (HAOpen < HAClose) {
   Color = "buy";
} else if (HAOpen > HAClose) {
   Color = "sell";
}


но оказалось, нет, есть бары где цвет к примеру синий (buy), но HAOpen > HAClose.

Вот не могу сообразить как по цифрам определить какого цвета бар на Heiken Ashi Smoothed

 
dodge >>:

Вот не могу сообразить как по цифрам определить какого цвета бар на Heiken Ashi Smoothed

дело в том, что свечи Heiken Ashi "синтетические":

Close = (Open+High+Low+Close)/4
Open = [Open (предыдущего бара) + Close (предыдущего бара)]/2
High = Max (High,Open,Close)

Low = Min (Low,Open, Close)

см. https://www.mql5.com/ru/code/33

 
Quantum >>:

дело в том, что свечи Heiken Ashi "синтетические":

см. https://www.mql5.com/ru/code/33


Может я, что не понимаю, но цвет Heiken Ashi как раз по этой формуле которую я в самом начале написал,, определяется.

В коде на mql5 почти так же и написано.


      if (haOpen<haClose) ExtColorBuffer[i]=0.0; // set color DodgerBlue
      else                ExtColorBuffer[i]=1.0; // set


но Smoothed нифига так не определяется, я смотрел в искодник Heiken_Ashi_Smoothed, так и не понял.
 
dodge >>:
но Smoothed нифига так не определяется, я смотрел в искодник Heiken_Ashi_Smoothed, так и не понял.

код нужно смотреть - приведите пожалуйста.

 
Quantum >>:

код нужно смотреть - приведите пожалуйста.

Код вот тут https://www.mql5.com/ru/forum/115531 есть, там даже алерт вкручен последним for.

Но на всякий случай прикреплю файл сюда.


Вот я так понимаю заполняются массивы, по которым рисуются бары, 3 и 4 (c 1) это толстые свечи, красный и синий цвета соответственно.

Но как потом это рисуется терминалом я не понимаю, точнее не понимаю алгоритм выбора цвета, на графике.

Думал может сначала рисуется красный цвет, а потом синий, и он накладывается на красный и поэтому не видно красную свечу, но такое бывает и наоборот,

значит дело не в том какой массив (цвет) сначала рисуется.


SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, Red);
SetIndexBuffer(0, ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, RoyalBlue);
SetIndexBuffer(1, ExtMapBuffer2);
SetIndexStyle(2,DRAW_HISTOGRAM, 0, 3, Red);
SetIndexBuffer(2, ExtMapBuffer3);
SetIndexStyle(3,DRAW_HISTOGRAM, 0, 3, RoyalBlue);
SetIndexBuffer(3, ExtMapBuffer4);


for(i=0; i<pos2; i++) ExtMapBuffer1[i]=iMAOnArray(ExtMapBuffer7,Bars,MaPeriod2,0,MaMetod2,i);
for(i=0; i<pos2; i++) ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer8,Bars,MaPeriod2,0,MaMetod2,i);
for(i=0; i<pos2; i++) ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer5,Bars,MaPeriod2,0,MaMetod2,i);
for(i=0; i<pos2; i++) ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer6,Bars,MaPeriod2,0,MaMetod2,i);


в этом же топике есть такой добавленный кусок кода, выводит алерт


for(i=0; i<pos2; i++) 
 {
  if(ExtMapBuffer4[i+2]>ExtMapBuffer4[i+1]&&ExtMapBuffer4[i+1]<ExtMapBuffer4[i]&& Time[i]!= LastTime)
    {
     Alert("Вверх  ","Символ  ",Symbol(),"  Период  ",GetNameTF());
     LastTime = Time[i];
    } 
   if(ExtMapBuffer4[i+2]<ExtMapBuffer4[i+1]&&ExtMapBuffer4[i+1]>ExtMapBuffer4[i]&& Time[i]!= LastTime)
    {
     Alert("Вниз  ","Символ  ",Symbol(),"  Период  ",GetNameTF());
     LastTime = Time[i];
    }        
 }

может так же можно определить и цвет.

Файлы:
 
dodge >>:


Но на всякий случай прикреплю файл сюда.


Сглаженные значения Опен и Кллозе - это 3 и 4 буферы. Вы же считываете 2 и 3.

Пробуйте так :

double HAOpen  = iCustom(NULL, 0, "Heiken_Ashi_Smoothed", MaMetod, MaPeriod, MaMetod2, MaPeriod2, 3, 1);
double HAClose = iCustom(NULL, 0, "Heiken_Ashi_Smoothed", MaMetod, MaPeriod, MaMetod2, MaPeriod2, 4, 1);

if(HAClose>HAOpen){Blue}; if(HAClose<HAOpen) {Red}.


Удачи.

 
VladislavVG >>:

Сглаженные значения Опен и Кллозе - это 3 и 4 буферы. Вы же считываете 2 и 3.

Пробуйте так :

if(HAClose>HAOpen){Blue}; if(HAClose<HAOpen) {Red}.


Удачи.



в документации по iCustom написано: mode - Индекс линии индикатора. Может быть от 0 до 7. т.е. считаем с нуля.

и поэтому ExtMapBuffer4 это iCustom(NULL, 0, "Heiken_Ashi_Smoothed", MaMethod< MaPeriod, MaMethod2, MaPeriod2, 3, 1);

Посмотрите на функцию SetIndexBuffer.

Так, что я правильно считываю значения.


И такое определение цвета не подходит к subj, уже проверено.

Как правильно определить цвет я пока так и не понял.

 
VladislavVG писал(а) >>

Сглаженные значения Опен и Кллозе - это 3 и 4 буферы. Вы же считываете 2 и 3.

Пробуйте так :

if(HAClose>HAOpen){Blue}; if(HAClose<HAOpen) {Red}.

Удачи.

Испульзуется буферы с номерами 0,1,2,3, И где же вы под номером 4 нашли

 
dodge >>:


в документации по iCustom написано: mode - Индекс линии индикатора. Может быть от 0 до 7. т.е. считаем с нуля.

и поэтому ExtMapBuffer4 это iCustom(NULL, 0, "Heiken_Ashi_Smoothed", MaMethod< MaPeriod, MaMethod2, MaPeriod2, 3, 1);

Посмотрите на функцию SetIndexBuffer.

Так, что я правильно считываю значения.


И такое определение цвета не подходит к subj, уже проверено.

Как правильно определить цвет я пока так и не понял.

Точно - не туда глянул.

 
dodge >>:


И такое определение цвета не подходит к subj, уже проверено.

Как правильно определить цвет я пока так и не понял.

Что не устраивает в таком определении цвета ?

Так определяется цвет (направление) "тела" свечи. Если считать, что красный - селл, а синий - бай, то должно соответствовать.

Кстати, в этом варианте индикатора могут быть свечи с разным цветом тела свечи и теней.


Удачи.

 
VladislavVG >>:

Что не устраивает в таком определении цвета ?

Так определяется цвет (направление) "тела" свечи. Если считать, что красный - селл, а синий - бай, то должно соответствовать.

Кстати, в этом варианте индикатора могут быть свечи с разным цветом тела свечи и теней.


Удачи.


По этой формуле скажем, свеча должна быть красная, а на графике она синяя, хотя HAOpen > HAClose.

Это я определил выводя HAOpen и HAClose через Print.


А нарвался я на это написав советника который при смене цвета свечи закрывает ордер.

Вот стал разбираться почему некоторые ордера закрыты не в том месте.

Причина обращения: