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

 
Zolotai:

Да код тут не при чем. Мне просто нужно правильное условие. Вопрос есть ли возможность узнать время текущего бара? Как вообще узнать время бара?
Time[] и iTime().
 
Zolotai:

Да код тут не при чем. Мне просто нужно правильное условие. Вопрос есть ли возможность узнать время текущего бара? Как вообще узнать время бара?
Time[индекс_нужного_бара]; Вернёт вам время открытия бара с номером "индекс_нужного_бара". Можно iTime() использовать для других символов и таймфреймов
 

Как получить сигнал в советнике вот от такого индикатора

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#define  SH_BUY   1
#define  SH_SELL  -1
extern int     AllBars=0;
extern int     Otstup=30;
extern double  Per=9;
int            SH,NB,i,UD;
double         R,SHMax,SHMin;
double         BufD[];
double         BufU[];

int init()
{
   if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars;
   IndicatorBuffers(2);
   IndicatorShortName("SHI_SilverTrendSig");
   SetIndexStyle(0,DRAW_ARROW,0,1);
   SetIndexStyle(1,DRAW_ARROW,0,1);
   SetIndexArrow(0,159);
   SetIndexArrow(1,159);
   SetIndexBuffer(0,BufU);
   SetIndexBuffer(1,BufD);
   SetIndexDrawBegin(0,Bars-NB);
   SetIndexDrawBegin(1,Bars-NB);
   ArrayInitialize(BufD,0.0);
   ArrayInitialize(BufU,0.0);
   return(0);
}
int start()
{
   int CB=IndicatorCounted();
   if(CB<0) return(-1); else if(NB>Bars-CB) NB=Bars-CB;
   for (SH=1;SH<NB;SH++)
   {
      for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;

      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { BufU[SH]=Low[SH]-R*0.5; UD=SH_SELL; }
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { BufD[SH]=High[SH]+R*0.5; UD=SH_BUY; }
   }
   return(0);
}

Пробовал через iCustom но пишет значение 2147483647 при указании любых номеров линий и баров ...

 
VOLDEMAR:

Как получить сигнал в советнике вот от такого индикатора

Пробовал через iCustom но пишет значение 2147483647 при указании любых номеров линий и баров ...

Это значение EMPTY_VALUE. Оно по-умолчанию находится в буфере индикатора, если нет сигнала. В цикле пробегите по буферу, и отлОвите непустые значения.
 

Проверку его буферов делайте так:

if (Bufer0>0) {               // в double Bufer0 через iCustom() ранее получено значение буфера индикатора 0
   if (Bufer0!=EMPTY_VALUE) {
      // поймали значение в буфере
      }
   }
 
artmedia70:

Проверку его буферов делайте так:


Ок это я понял, но в буфере может быть сотня значений как найти последнее и как определить что последнее на покупку сигнал или продажу ?
 
Все сообразил спасибо
 
VOLDEMAR:

Ок это я понял, но в буфере может быть сотня значений как найти последнее и как определить что последнее на покупку сигнал или продажу ?

Код не компилил и в МТ не смотрел, но, BufD - первый синий буфер, BufU - нулевой красный буфер. Что они там на экране показывают, синие и красные точки? Вот и смотрите какая точка какого цвета на что там указывает. А отлавливайте их в буферах - красную в нулевом буфере, синюю - в первом.

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

 
всем привет.не подскажите почему в мт4 не могу настроить не одного советника все выдают отрицательное значение при тесте стратегии! в чем может быть проблема?
 
serjlarkin:
всем привет.не подскажите почему в мт4 не могу настроить не одного советника все выдают отрицательное значение при тесте стратегии! в чем может быть проблема?
Отрицательное значение чего?