Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Создавай темы на форуме и увеличивай рейтинг!
Andrey
12
Andrey 2015.07.27 18:10 

Вообщем, не могу соединить два условия вместе:

Вот как я это понимаю:

#property  indicator_separate_window
#property  indicator_buffers 5
#property  indicator_color1  Black
#property  indicator_color2  Green
#property  indicator_color3  Green
#property  indicator_color4  Red
#property  indicator_color5  Red
//---- indicator buffers
double     ExtACBuffer[];

double     ExtUpBuffer[];
double     ExtUp2Buffer[];
double     ExtDnBuffer[];
double     ExtDn2Buffer[];

double     ExtMacdBuffer[];
double     ExtSignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorShortName("AC");
//--- 2 additional buffers are used for counting.
   IndicatorBuffers(7);
//--- drawing settings
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM,0,1);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexStyle(4,DRAW_HISTOGRAM,0,1);
   IndicatorDigits(Digits+2);
   SetIndexDrawBegin(0,38);
   SetIndexDrawBegin(1,38);
   SetIndexDrawBegin(2,38);
   SetIndexDrawBegin(3,38);
   SetIndexDrawBegin(4,38);
//--- all indicator buffers mapping
   SetIndexBuffer(0,ExtACBuffer);
   SetIndexBuffer(1,ExtUpBuffer);
   SetIndexBuffer(2,ExtUp2Buffer);
   SetIndexBuffer(3,ExtDnBuffer);
   SetIndexBuffer(4,ExtDn2Buffer);
   SetIndexBuffer(5,ExtMacdBuffer);
   SetIndexBuffer(6,ExtSignalBuffer);
//--- name for DataWindow and indicator subwindow label
   SetIndexLabel(1,NULL);
   SetIndexLabel(2,NULL);
   SetIndexLabel(3,NULL);
   SetIndexLabel(4,NULL);
   return(0);
  }
//+------------------------------------------------------------------+
//| Accelerator/Decelerator Oscillator                               |
//+------------------------------------------------------------------+
int start()
  {
   int    limit;
   int    counted_bars=IndicatorCounted();
   double prev,current,early;
   //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   //---- macd counted in the 1-st additional buffer
   for(int i=0; i<limit; i++)
      ExtMacdBuffer[i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,20,0,MODE_SMA,PRICE_MEDIAN,i);
   //---- signal line counted in the 2-nd additional buffer
   for(i=0; i<limit; i++)
      ExtSignalBuffer[i]=iMAOnArray(ExtMacdBuffer,Bars,5,0,MODE_SMA,i);
//--- dispatch values between 4 buffers
   bool up=true;
   bool change=true;
   for(i=limit-1; i>=0; i--)
     {
      current=ExtMacdBuffer[i]-ExtSignalBuffer[i];
      prev=ExtMacdBuffer[i+1]-ExtSignalBuffer[i+1];
      early=ExtMacdBuffer[i+2]-ExtSignalBuffer[i+2];
      if(current>prev) //----условие первое

         {
         up=true;
         }
      else
         {
         up=false;
         }
      if((current-prev) <= (prev-early)) //----условие второе
         {
         change=true;
         }
      else
         {
         change=false;
         }
      if(!up)
        {
         if (!change)
            {
               ExtUpBuffer[i]=0.0;
               ExtUp2Buffer[i]=current;
               ExtDnBuffer[i]=0.0;
               ExtDn2Buffer[i]=0.0;
            }
         else
            {
               ExtUpBuffer[i]=current;
               ExtUp2Buffer[i]=0.0;
               ExtDnBuffer[i]=0.0;
               ExtDn2Buffer[i]=0.0;
            }
        }
      else
        {
           {
              ExtUpBuffer[i]=0.0;
              ExtUp2Buffer[i]=0.0;
              ExtDnBuffer[i]=0.0;
              ExtDn2Buffer[i]=current;
           }
         else
           {
              ExtUpBuffer[i]=0.0;
              ExtUp2Buffer[i]=0.0;
              ExtDnBuffer[i]=current;
              ExtDn2Buffer[i]=0.0;
           }
        }
     ExtACBuffer[i]=current;
     }
//---- done
   return(0);
  }
-------------------------------------------------------+

Однако, метатрейдер меня не слушает и индикатор не запускается. Люди добрые помогите, пожалуйста!

Alexander
2441
Alexander 2015.07.28 02:18  
Я так понимаю ты забыл в одном месте поставить if (!change)
Victor Nikolaev
Модератор
14041
Victor Nikolaev 2015.07.28 03:02  
Ecl1pse:

Вообщем, не могу соединить два условия вместе:

Вот как я это понимаю:

 Однако, метатрейдер меня не слушает и индикатор не запускается. Люди добрые помогите, пожалуйста!

Выложи весь код индикатора
Andrey
12
Andrey 2015.07.28 03:51  
Vinin:
Выложи весь код индикатора

Готово, смотрите в шапке темы

Roger:
Я так понимаю ты забыл в одном месте поставить if (!change)

В каком месте? 

Victor Nikolaev
Модератор
14041
Victor Nikolaev 2015.07.28 15:13  
Ecl1pse:

 

Готово, смотрите в шапке темы

В каком месте? 

Добавил один if и все рисует

 

Файлы:
ancl.mq4 5 kb
Andrey
12
Andrey 2015.07.29 04:20  
Vinin:

Добавил один if и все рисует

Спасибо теперь заработал, вот только второе условие работает не так как ожидалось. Правильно работает только в направление вверх, а вниз отображается не правильно. Ожидал, что когда текущая полосочка на гистограмме замедляется по отношению к предыдущей, то это фиксируется изменением её формы. Да и цвет почему-то изменил ориентацию.
Victor Nikolaev
Модератор
14041
Victor Nikolaev 2015.07.29 14:27  
Ecl1pse:
Спасибо теперь заработал, вот только второе условие работает не так как ожидалось. Правильно работает только в направление вверх, а вниз отображается не правильно. Ожидал, что когда текущая полосочка на гистограмме замедляется по отношению к предыдущей, то это фиксируется изменением её формы. Да и цвет почему-то изменил ориентацию.
Поправьте как надо. Я просто по аналогии сделал
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий