Данные в тестере стратегий

 
Прошу разъяснения разработчиков.
Мой советник, который я пытаюсь протестировать на M5, кроме текущих цен, использует значения индикатора с W1 (скажем,
iMA(Symbol(),PERIOD_W1,9,0,0,PRICE_CLOSE,1)

).
Как поступает тестер, когда я запускаю тестирование:
-подгружает все необходимые M5 и W1?
-подгружает все необходимые M5, а W1 расчитывает по M5?
-подгружает все необходимые M5, а W1 игнорирует?
Как мне поступить, чтобы быть уверенным, что тестер имеет все необходимые котировки?
Правильно ли я понимаю, что файлы *.HST в работе тестера вообще не используются?

 
Странно работает индикатор при визуальном тестировании, и если просто бросить его на график.
Вот код:
//+------------------------------------------------------------------+
//|                                                    Intra_Day.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, klot."
#property link      "klot@mail.ru"

#property indicator_chart_window
#property indicator_color1 Aqua
//---- indicator parameters
extern int Hour_Begin_Day=21;
//---- indicator buffers
int begin,end;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
 
//---- indicator short name
   IndicatorShortName("Intra_Day");
//---- initialization done
 ObjectCreate("Begin",OBJ_VLINE,0,0,0);
 ObjectCreate("Open",OBJ_TREND,0,0,0);
 ObjectSet("Open",OBJPROP_RAY,false); 
 ObjectCreate("End",OBJ_VLINE,0,0,0);
 ObjectCreate("High_asian",OBJ_TREND,0,0,0,0,0);
 ObjectSet("High_asian",OBJPROP_RAY,false); 
 ObjectCreate("Low_asian",OBJ_TREND,0,0,0,0,0);
 ObjectSet("Low_asian",OBJPROP_RAY,false); 
 
   return(0);
  }
  int deinit()
  {
//----
   ObjectDelete("Begin");
   ObjectDelete("Open");
   ObjectDelete("End");
   ObjectDelete("High_asian");
   ObjectDelete("Low_asian");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
{
   int    asia_b,t,h,i;
   datetime begin_time,end_time,asia_t;
   double curlow,curhigh;
     
       begin_time=iTime(NULL,PERIOD_D1,1)+(Hour_Begin_Day*3600);
       asia_t=iTime(NULL,PERIOD_D1,0)+(6*3600);
       end_time=iTime(NULL,PERIOD_D1,0)+(Hour_Begin_Day*3600);
       asia_b=iBarShift(NULL,0,asia_t);
       
       begin=iBarShift(NULL,0,begin_time);
       end=iBarShift(NULL,0,end_time);
     ObjectSet("Begin",OBJPROP_TIME1,begin_time);
     ObjectSet("Open",OBJPROP_TIME1,begin_time);
     ObjectSet("Open",OBJPROP_PRICE1,Open[begin]);
     ObjectSet("Open",OBJPROP_TIME2,Time[0]);
     ObjectSet("Open",OBJPROP_PRICE2,Open[begin]);
     ObjectSet("End",OBJPROP_TIME1,end_time);
     
      curlow=Low[Lowest(NULL,0,MODE_LOW,(begin-asia_b),asia_b)];
      curhigh=High[Highest(NULL,0,MODE_HIGH,(begin-asia_b),asia_b)];
      
      ObjectSet("High_asian",OBJPROP_TIME1,begin_time);
      ObjectSet("High_asian",OBJPROP_PRICE1,curhigh);
      ObjectSet("High_asian",OBJPROP_TIME2,Time[0]);
      ObjectSet("High_asian",OBJPROP_PRICE2,curhigh);
      
      ObjectSet("Low_asian",OBJPROP_TIME1,begin_time);
      ObjectSet("Low_asian",OBJPROP_PRICE1,curlow);
      ObjectSet("Low_asian",OBJPROP_TIME2,Time[0]);
      ObjectSet("Low_asian",OBJPROP_PRICE2,curlow);
      
    return(0);
}
//+------------------------------------------------------------------+
 
Он подгружает все необходимые M5 и W1 и точно моделирует развитие W1 синхронно с M5.
Просто сделайте Print значений и посмотрите.
 
Тогда подскажите еще, в каком случае конструкция типа
Pmax=MathMax(iHigh(Symbol(),PERIOD_M30,1),iHigh(Symbol(),PERIOD_M30,2))


может давать Pmax=0?
Вычисляю, вывожу, получаю "0". Но ведь так не бывает! :-(


 
Дополнение к последнему сообщению
GetLastError()=0


Причем, начиная с некоторой даты в процессе тестирования указанная в предыдущем посте конструкция начинает давать осмысленный ненулевой результат... :-(

 
Попробуйте вывести значение iBars(Symbol(),PERIOD_M30)

Вполне возможно, что на какую-то дату у Вас просто нет тридцатиминуток. Поэтому и выдаются нули
 
Результат:
iBars(Symbol(),PERIOD_M30)=437


что явно мало для тестирования с начала года. И мы снова возвращаемся к первому вопросу:
КАК МНЕ ДОБИТЬСЯ, ЧТОБЫ ВСЕ НЕОБХОДИМЫЕ КОТИРОВКИ У ТЕСТЕРА БЫЛИ В НАЛИЧИИ?

 
Результат:
iBars(Symbol(),PERIOD_M30)=437


что явно мало для тестирования с начала года. И мы снова возвращаемся к первому вопросу:
КАК МНЕ ДОБИТЬСЯ, ЧТОБЫ ВСЕ НЕОБХОДИМЫЕ КОТИРОВКИ У ТЕСТЕРА БЫЛИ В НАЛИЧИИ?


Вручную пройтись по графикам и докачать сколько можно. Если данных нет, то и результат будет 0.
 
Подгрузил данные M30 на график. Проблема с этим символом пропала.
ЗНАЧИТ ВСЕ-ТАКИ ТЕСТЕР ИСПОЛЬЗУЕТ ФАЙЛЫ *.HST???
 
Подгрузил данные M30 на график. Проблема с этим символом пропала.
ЗНАЧИТ ВСЕ-ТАКИ ТЕСТЕР ИСПОЛЬЗУЕТ ФАЙЛЫ *.HST???

Конечно использует. Но также и моделирует развитие баров внутри других таймфреймов.

То есть, не "строит M30 из М1", а "берет базы М30 из истории, а потом моделирует развитие этих М30 баров синхронно с развитием М1".