Индикатор hma и звуковой сигнал - страница 5

 
forte928 писал(а) >>

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

Здравствуйте! Всё не было время, хорошенько протестировать индикатор, а вчера занялся. Всё-таки, он выдаёт сигналы на пересечение линии 100, не зависимо от состояния бара. Т.е., я имел в виду, что сигнал будет тогда, когда при пересечении линии, закрывается текущий бар. А он даёт сигнлы, только исходя из пересечения линии. К примеру на М15, во время движения цены, за 15мин. он может дать 10-15 сигналов в одну сторону, и столько же, в другую (если направление движения не определилось), а не один сигнал, при закрытии текущего бара, как хотелось бы. Можно ли это устранить? Если, конечно, не сложно.

 
Потестирую и исправлю..
 
forte928 писал(а) >>
Потестирую и исправлю..

Спасибо!

 
Я извиняюсь, а Вы про мой индикатор не забыли?
 
Нет просто были доработки еще свои..
 

Добрый вечер ...я ещё подумал, что может будет проще сделать так, что-бы индикатор давал сигнал после пересечения линии, и одновременном не закрытии текущей свечи, а открытии новой? Мне подходит и так, и так. А Вы сделайте, как проще Вам.

 

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

Файлы:
 
forte928 >>:

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

здраствуйте. Можете помоч поставить алерт на индикатор, звук при изменении цвета линии. Желательно тоже после закрытия бара.очень надо. Спасибо .

//+------------------------------------------------------------------+
//|                                                     LSMA nrp.mq4 |
//|                                                           mladen |
//+------------------------------------------------------------------+
#property  copyright "copyleft mladen"
#property  link      "mladenfx@gmail.com"

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Yellow
#property indicator_color2 Green
#property indicator_color3 Green
#property indicator_color4 Orange
#property indicator_color5 Orange
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 2

//
//
//
//
//

extern int    LSMAPeriod   = 14;
extern int    LSMAPrice    =  0;
//
//
//
//
//

double lsma[];
double lsmaua[];
double lsmaub[];
double lsmada[];
double lsmadb[];

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//
//

int init()
{
   SetIndexBuffer(0,lsma);
   SetIndexBuffer(1,lsmaua);
   SetIndexBuffer(2,lsmaub);
   SetIndexBuffer(3,lsmada);
   SetIndexBuffer(4,lsmadb);
   return(0);
}

//
//
//
//
//

int start()
{ 
   int      counted_bars=IndicatorCounted();
   int      limit,i;

   if(counted_bars < 0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = MathMin(Bars-counted_bars,Bars-1);

   //
   //
   //
   //
   //

   if (lsma[limit] > lsma[limit+1]) CleanPoint(limit,lsmaua,lsmaub);
   if (lsma[limit] < lsma[limit+1]) CleanPoint(limit,lsmada,lsmadb);
   for(i = limit; i >= 0; i--)
   {
      lsma[i]   = 3.0*iMA(NULL,0,LSMAPeriod,0,MODE_LWMA,LSMAPrice,i)-2.0*iMA(NULL,0,LSMAPeriod,0,MODE_SMA,LSMAPrice,i);
      lsmaua[i] = EMPTY_VALUE;
      lsmaub[i] = EMPTY_VALUE;
      lsmada[i] = EMPTY_VALUE;
      lsmadb[i] = EMPTY_VALUE;
         if (lsma[i] > lsma[i+1]) PlotPoint(i,lsmaua,lsmaub,lsma);
         if (lsma[i] < lsma[i+1]) PlotPoint(i,lsmada,lsmadb,lsma);
   }   
   return(0);
}



//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//
//

void CleanPoint(int i,double& first[],double& second[])
{
   if ((second[i]  != EMPTY_VALUE) && (second[i+1] != EMPTY_VALUE))
        second[i+1] = EMPTY_VALUE;
   else
      if ((first[i] != EMPTY_VALUE) && (first[i+1] != EMPTY_VALUE) && (first[i+2] == EMPTY_VALUE))
          first[i+1] = EMPTY_VALUE;
}

//
//
//
//
//

void PlotPoint(int i,double& first[],double& second[],double& from[])
{
   if (first[i+1] == EMPTY_VALUE)
      {
         if (first[i+2] == EMPTY_VALUE) {
                first[i]   = from[i];
                first[i+1] = from[i+1];
                second[i]  = EMPTY_VALUE;
            }
         else {
                second[i]   =  from[i];
                second[i+1] =  from[i+1];
                first[i]    = EMPTY_VALUE;
            }
      }
   else
      {
         first[i]   = from[i];
         second[i]  = EMPTY_VALUE;
      }
}
 
forte928 писал(а) >>

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

Большое спасибо! Сейчас буду тестировать.

 
snowplay писал(а) >>

здраствуйте. Можете помоч поставить алерт на индикатор, звук при изменении цвета линии. Желательно тоже после закрытия бара.очень надо. Спасибо .

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

Файлы:
Причина обращения: