Задача с индикатором не могу сообразить как сделать, прошу помощи...

 

Не люблю писать индикаторы с расчетами большими мало опыта, но тут подвернулась идейка ноне ззнаю как решить, посмотрел несколько исходников в кода базе но тож так и не понял

Вобщем задача мувинг растет окрашивается в синий падает в краснный , теоритически у меня все получилось, не могу понять как побороть разыв в линиях...

   int    limit;
   limit=rates_total-prev_calculated;

   for(int i=0; i<limit-1; i++)
     {
      double ma=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);

      ExtUpBuffer[i]=ma;
      ExtDnBuffer[i]=ma;
      
      if(ExtUpBuffer[i+1]<=ExtUpBuffer[i])
        {
         ExtUpBuffer[i+1]=ExtUpBuffer[i];
        }
      else
        {
         ExtDnBuffer[i]=ma;
        }
     }
 

Так подойдет?

double ma_1=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
double ma_2=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i+1);

ExtUpBuffer[i]=EMPTY_VALUE;
ExtDnBuffer[i]=EMPTY_VALUE;
if(ma_1>ma_2) ExtUpBuffer[i] = ma_1;
else          ExtDnBuffer[i] = ma_1;
 
Oksana Berenko:

Так подойдет?

Так разрыв получается, спасибо мне уже помогли.
 
   int    limit;
   limit=rates_total-prev_calculated-1;

   for(int i=limit; i>=0; i--)
     {
      double ma   = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
      double ma_1 = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i+1);
      ExtUpBuffer[i]=ma;
      ExtDnBuffer[i]=ma;
      if (NormalizeDouble(ma_1,Digits) - NormalizeDouble(ma,Digits) < 0)
         {
         ExtDnBuffer[i+1] = EMPTY_VALUE;
         ExtUpBuffer[i+1] = ma_1;
         }
 
     }