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

 
dodge >>:


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

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


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

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

Вы там не с нулевым ли баром работали ? Он может менять цвет, хотя судя по Вашему коду работали с первым.


ЗЫ Набросал для проверки индюк - цвет тела свечи так и определяется (по соотношению HAOpen / HAClose). Расхождений не увидел.


//+------------------------------------------------------------------+
//|                                                  Heatmap_HAS.mq4 |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_minimum -0.05
#property indicator_maximum 1.05
#property indicator_buffers 2
#property indicator_color1 MediumBlue
#property indicator_width1 3
#property indicator_color2 Crimson
#property indicator_width2 3

   
//---- parameters
extern int MaMetod =2;
extern int MaPeriod=6;
extern int MaMetod2 =3;
extern int MaPeriod2=2;
//---- buffers
double  UpBf[];   
double  DnBf[];
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int init()
{
   SetIndexBuffer(0,UpBf);SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
   SetIndexBuffer(1,DnBf);SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2);
   
   IndicatorShortName("Heatmap_HAS("+MaMetod+","+MaPeriod+","+MaMetod2+","+MaPeriod2+")");
   return(0);
}

int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+

int start()
{
int startBar = Bars-MaPeriod-MaPeriod2;

    for(int i=startBar-1;i>=0;i--)
    {
        double HAOpen  = iCustom(NULL, 0, "Heiken_Ashi_Smoothed", MaMetod, MaPeriod, MaMetod2, MaPeriod2, 2, i);
        double HAClose = iCustom(NULL, 0, "Heiken_Ashi_Smoothed", MaMetod, MaPeriod, MaMetod2, MaPeriod2, 3, i);
        
        if(HAClose>HAOpen) 
             UpBf[i] = 1;
        else UpBf[i] = 0;
        if(HAClose<HAOpen) 
             DnBf[i] = 1;
        else DnBf[i] = 0;
    }
    return(0);
}
 
VladislavVG >>:

Вы там не с нулевым ли баром работали ? Он может менять цвет, хотя судя по Вашему коду работали с первым.


С первым, про нулевой я понимаю, что может меняться.

 
dodge >>:

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

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

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

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

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


extern int MaMetod =2;
extern int MaPeriod=6;
extern int MaMetod2 =3;
extern int MaPeriod2=2;
extern int limit_bars=6; //кол-во одинаковых сигналов

//в start
double bye?=0,sell?=0;
   for(int i=1; i<=limit_bars; i++)
     if(indi(0,i)<indi(1,i))bye?++;

   for(    i=1; i<=limit_bars; i++)
     if(indi(0,i)>indi(1,i))sell?++;


   if(bye?==limit_bars) ...       //buy
   if(sell?==limit_bars)...       //sell

//в конец, отдельной функцией
//--------------------------------------------------------------                  
double indi(int buf, int shift)
{return(iCustom(0,0,"Heiken_Ashi_Smoothed",MaMetod,MaPeriod,MaMetod2,MaPeriod2,buf,shift));}  
//--------------------------------------------------------------
0 и 1 буфера первыми дают сигналы.
Причина обращения: