Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 217

 
artmedia70:


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

К примеру при росте он растет, но если следующие движения происходят в пределах заданного фильтра он не меняется и движется строго горизонтально. Небходимо перед флетом индикатора, сравнить последние два значения и определить тренд. Если нужно могу в личку код скинуть?

 
Forexman77:

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

К примеру при росте он растет, но если следующие движения происходят в пределах заданного фильтра он не меняется и движется строго горизонтально. Небходимо перед флетом индикатора, сравнить последние два значения и определить тренд. Если нужно могу в личку код скинуть?

Я вам показал как в советнике найти ближайший экстремум линии индикатора. nBars сделайте равной Bars или просто замените nBars на Bars
 
artmedia70:
Я вам показал как в советнике найти ближайший экстремум линии индикатора. nBars сделайте равной Bars или просто замените nBars на Bars

Теперь выходит множество параметров, при вызове любого значения:a,b или с.

Код индикатора:

#property copyright ""
#property link      ""
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//--- input parameters

//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,0,2);
   SetIndexBuffer(0,ExtMapBuffer1);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    raznica,raznica_static,
    MA_1_t,                                                  
    MA_2_t;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   static double MA_otshet;
   for(int i=0;i<limit;i++)
   {
      MA_1_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t;
      raznica_static=MA_1_t-MA_otshet;
      if(raznica_static > -0.001 && raznica_static < 0.001)
      {
      ExtMapBuffer1[i]=MA_otshet;
      }
      else
      if(raznica > -0.001 && raznica < 0.001)
      {
      ExtMapBuffer1[i]=MA_2_t;
      MA_otshet=MA_2_t;
      }
      if((raznica > 0.001) || (raznica <- 0.001))
      {
      ExtMapBuffer1[i]=MA_1_t;
      }
   }
   return(0);
  }
//+------------------------------------------------------------------+
 
Не... вы лучше покажите что в советнике творите. Как берёте данные с вашего индюкатора?
 
artmedia70:
Не... вы лучше покажите что в советнике творите. Как берёте данные с вашего индюкатора?

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

Загрузите индикатор на дневном, три дня без изменений, наверное в этом проблемА?

for (i=2; i<Bars; i++) {
double a=iCustom(NULL, 0, "EMAF",0,0,i+1);
double b=iCustom(NULL, 0, "EMAF",0,0,i);
double c=iCustom(NULL, 0, "EMAF",0,0,i-1);
if ((a-b)*(b-c)<0) {
if (b<c) {
;// Нашли донышко
}
if (b>c) {
Alert ("b=",b) // Нашли пичок
}
}
}

 
Forexman77:

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

Загрузите индикатор на дневном, три дня без изменений, наверное в этом проблемА?

for (i=2; i<Bars; i++) {
double a=iCustom(NULL, 0, "EMAF",0,0,i+1);
double b=iCustom(NULL, 0, "EMAF",0,0,i);
double c=iCustom(NULL, 0, "EMAF",0,0,i-1);
if ((a-b)*(b-c)<0) {
if (b<c) {
;// Нашли донышко
}
if (b>c) {
Alert ("b=",b) // Нашли пичок
}
}
}

Проблема не может быть в этом. Мы же цикл сделали до Bars. После алерта впишите break;
 
artmedia70:
Проблема не может быть в этом. Мы же цикл сделали до Bars. После алерта впишите break;

После break; появляется одно сообщение. Но, значение не соответствует индикатору, может с самим индикатором, что-то?
Линию индикатор показывает, как необходимо мне. Расчет индикатора ведется из трех условий, соотвествующих текущей ситуации.
 
Forexman77:
После break; появляется одно сообщение. Но, значение не соответствует индикатору, может с самим индикатором, что-то?
Линию индикатор показывает, как необходимо мне. Расчет индикатора ведется из трех условий, соотвествующих текущей ситуации.

Вместо Alert("b=",b); Впишите:

Alert("Цена b="+DoubleToStr(b,Digits)+"\nВремя бара="+TimeToStr(Time[i]));
 
artmedia70:

Вместо Alert("b=",b); Впишите:



Не получается, пробовал по разному. Значение получаются явно не соответствющие,

да и время во всех значениях "Время бара=2010.11.04 00:00". Вызываю через скрипт.

Скорее всего дело в индикаторе: значение получается из

ExtMapBuffer1[i]

которое получается из трех разных условий соответствующих текущему моменту.

Вызываю текущее значение EURUSD все окей: 1.3717, чего не скажешь о максимумах.

 
Народ не подскажите пожалуйста код, код который показал баланс который был на начале месяца...
Причина обращения: