Вопрос по реализации

 
Прочел книгу "Играть на бирже просто" В.А.Тарана, в конце которой нашел систему которая на мой взгляд очень просто реализуема роботом(кому интересно а книги под рукой нет могу привести текст системы). В системе первым наперво надо определить зону консолидации (нахождение цены в коридоре равном 2ATR). Для этого написал индикатор который бы вычислял ценовой диапазон и выводил его на график совместно с ATR*коэффициент, назовем его, ширины коридора (в книге он взят два по умолчанию). Индикатор
//+------------------------------------------------------------------+
//|                                               Prise Diapason.mq4 |
//+------------------------------------------------------------------+
#property copyright "bdv"
#property link      "https://www.metaquotes.net/"
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Green
 
//---- input parameters
extern int PDPeriod=6;
extern double PD_ATR=2.0;
//---- buffers
double PDBuffer[];
double scaleATRBuffer[];
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- 1 additional buffer used for counting.
//   IndicatorBuffers(2);
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(0,PDBuffer);
   SetIndexBuffer(1,scaleATRBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Prise Diapason vs ATR ("+PDPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"PD");
   SetIndexLabel(1,"Scale ATR");
//----
   SetIndexDrawBegin(0,PDPeriod);
   SetIndexDrawBegin(1,PDPeriod);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| PD                                               |
//+------------------------------------------------------------------+
int start()
  {
   int i,j;
   
   int counted_bars=IndicatorCounted();
   int limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   for(i=0;i<limit;i++)
     {
      double high=High[i];
      for (j=i;j<i+PDPeriod;j++)
         if (High[j]>high) 
            high=High[j]; 
      double low =Low[i];
      for (j=i;j<i+PDPeriod;j++)
         if (Low[j]<low) 
            low=Low[j]; 
      PDBuffer[i]=high-low;
      scaleATRBuffer[i]=PD_ATR*iATR(0,0,PDPeriod,i);
     }
   return(0);
  }
//+------------------------------------------------------------------+
вроде работает нормально запускаю проверяю все сходится. Но пытаюсь его использовать в эксперте даже самом простом как этот:
//+------------------------------------------------------------------+
//|                                                          aaa.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net"
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   static datetime prevtime=0;   
   if(prevtime == Time[0]) return(0);
   prevtime = Time[0];
//----
   double PD = iCustom(0,0,"Prise Diapason vs ATR",6,2,0,0);
   double scaleATR_tek = iCustom(0,0,"Prise Diapason vs ATR",6,2,1,0);
   Print("PD = ",PD," scaleATR = ",scaleATR_tek," High = ",High[0], " Open = ",Open[0]);   
//----
   return(0);
  }
//+------------------------------------------------------------------+

и получается какая то фигня графики выводятся нормально а значения выводимые с помощью Print ни каким образом графику не соответствуют.
В чем ошибка? Очень хочется разобраться. Спасибо.
 

функция iCustom(NULL ...

 
double scaleATR_tek = iCustom(0,0,"Prise Diapason vs ATR",6,2,1,0);
Уточните название файла индикатора....
 
kharko:
double scaleATR_tek = iCustom(0,0,"Prise Diapason vs ATR",6,2,1,0);
Уточните название файла индикатора....
Не совсем понял.
Что значит уточнить название файла индикатора?
 
1. У вас в первом посте название индикатора Prise Diapason, а в советнике вызывается Prise Diapason vs ATR. Может вы смотрите на Prise Diapason, а выводите значения Price Diapason vs ATR
2. Вы рассчитываете значение на текущем (незакрытом) баре, что тоже может приводить к серьезным разбежностям. Поэтому лучше использовать
 значения первого бара, он уже не изменится.