Помогите разобраться с индикатором.

 
Есть примерно такой индикатор
  #property indicator_chart_window
  #property indicator_buffers 2
  #property indicator_color1 Red
  #property indicator_color2 Blue

  double ExtHistoBuffer[];
  double ExtHistoBuffer2[];
  
  double CalcS()
   {
    ...
   }

  double CalcB()
   {
    ...
   }
  
  int init()
   {
    SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID);
    SetIndexBuffer(0, ExtHistoBuffer);
    SetIndexLabel(0,"PatternSig_SELL");
    SetIndexArrow(0,234);
    SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID);
    SetIndexBuffer(1, ExtHistoBuffer2);
    SetIndexLabel(1,"PatternSig_BUY");
    SetIndexArrow(1,233);
    return(0);
   }

  void start()
   {
    int shift=0;
    for(shift=Bars-10;shift>=0;shift--)
       {
        ExtHistoBuffer[shift]=CalcS();
        ExtHistoBuffer2[shift]=CalcB();
       }   
   }


потом есть его вызов из эксперта
  int GetSig()
   {
    double b,s;
    int Sg=0; //1-buy; 2-sell
    s=iCustom(NULL,0,"PatternSignal",0,1);
    b=iCustom(NULL,0,"PatternSignal",1,1);
    if (b>0.1) Sg=1;
    if (s>0.1) Sg=2;
    if (!Sg==0) Print("Sg=",Sg);
    return(Sg);
   } 


на графике сигналы отображаются нормально, а при тестировании эксперта,
сигналы практически не совпадают, то они есть то их нет то есть но не те...
С чем может быть связано такое такое различие?
 
Нда, кода конечно исчерпывающее количество))))) Предположительно проблема в том, что несvотря на отсутсвие значков рисуемых индикаоров его значение всегда больше 0,1, так как пустые значения равны оооочень большому числу. Надо или проверять индикатор на неравенство константе EMPTY_VALUE, или в ините задать величину пустого значения SetyIndexEmptyValue(0,0.0)
 
проблема точно не в этом потому что функции CalcS() и CalcB() возвращают значении 0 или в >1, но <2...
 
FsShoman писал (а):
проблема точно не в этом потому что функции CalcS() и CalcB() возвращают значении 0 или в >1, но <2...

а в эксперте проверяется только на больше: b>0.1
 
я это знаю, вот оно равно или 0 или в интервале [1;2], если 0 то нет сигнала, больше 0.1 есть... оно не может быть большим числом... я могу выложить полный код, но думаю ничего нового там не увидишь. кстати пробовал проверку на пустое значение, не помогло...
 
а галочку пересчитать пробовал ставить?
 
FsShoman:
на графике сигналы отображаются нормально, а при тестировании эксперта,
сигналы практически не совпадают, то они есть то их нет то есть но не те...
С чем может быть связано такое такое различие?
Сигнал берется с 0-го бара?
Файлы fxt сгенерированы из той же истории, которая потом открывается в графике?
Причина обращения: