При тестировании советника M5 M15 M30 в чём разница

 

Добрый день.

Пишу советника, так что он затачивается под период M15.

При тестировании в тестере MT4 выбираю M15, отлавливаю даты и вывожу

TimeToStr(TimeCurrent(), TIME_DATE | TIME_SECONDS) дак вот какая-то белеберда, то даты выводятся каждую минуту, то скачками по несколько часов.

С чем это может быть связано? 

 

Вероятно есть условия препятствующие выполнению данного участка.

Нужно видеть код для анализа ошибки.

 

Ок, тут нашёл у себя ошибку.

Вопрос, всё одно и тоже меняем только Период тестирования в тестере, правильно ли понимаю, что iXXX буду идти по разным барам, а ask,bid по возможности по минимальному таймфрейму (При тестировании модель = все тики).

 
int init()  
  {   
   Print(" DATETIME BEGIN:[",TimeToStr(TimeCurrent(), TIME_DATE | TIME_SECONDS),"]");
   return(0);
  }

int deinit()
  {
   Print(" modelBarCount = [",modelBarCount,"]");
   Print(" DATETIME FINISH:[",TimeToStr(TimeCurrent(), TIME_DATE | TIME_SECONDS),"]");
   return(0); 
  }

int start()  
  {   
   modelBarCount = Bars;
   return(0);
  }

===============

Тестирую данный советник, меняю только период (M15,M30,H1)

Модель - все тики.

Период постоянный 2012.12.11 - 2012.12.15 

=============== 

Результат:  

M15:

2012.12.18 14:30:35 2012.12.14 23:59  CoreAlexGru EURUSD,M15:  DATETIME FINISH:[2012.12.14 23:59:55]

2012.12.18 14:30:35 2012.12.14 23:59  CoreAlexGru EURUSD,M15:  modelBarCount = [1384]

2012.12.18 14:30:35 2012.12.11 00:00  CoreAlexGru EURUSD,M15:  DATETIME BEGIN:[2012.12.11 00:00:00] 

M30:

 2012.12.18 14:31:16 2012.12.14 23:59  CoreAlexGru EURUSD,M30:  DATETIME FINISH:[2012.12.14 23:59:55]

2012.12.18 14:31:16 2012.12.14 23:59  CoreAlexGru EURUSD,M30:  modelBarCount = [1192]

2012.12.18 14:31:15 2012.12.11 00:00  CoreAlexGru EURUSD,M30:  DATETIME BEGIN:[2012.12.11 00:00:00]

H1:

 2012.12.18 14:31:45 2012.12.14 23:59  CoreAlexGru EURUSD,H1:  DATETIME FINISH:[2012.12.14 23:59:55]

2012.12.18 14:31:45 2012.12.14 23:59  CoreAlexGru EURUSD,H1:  modelBarCount = [1096]

2012.12.18 14:31:45 2012.12.11 00:00  CoreAlexGru EURUSD,H1:  DATETIME BEGIN:[2012.12.11 00:00:00]

=========

Откуда такие количества что-то не понимаю.

Дальше считаю количества тиков при тестировании, всё так же, опять меняем только период.  

 М15

2012.12.18 14:33:41 2012.12.14 23:59  CoreAlexGru EURUSD,M15: tickCnt= [165777]

2012.12.18 14:33:41 2012.12.14 23:59  CoreAlexGru EURUSD,M15:  DATETIME FINISH:[2012.12.14 23:59:55]

2012.12.18 14:33:41 2012.12.14 23:59  CoreAlexGru EURUSD,M15:  modelBarCount = [1384]

2012.12.18 14:33:40 2012.12.11 00:00  CoreAlexGru EURUSD,M15:  DATETIME BEGIN:[2012.12.11 00:00:00]

М30

2012.12.18 14:34:16 2012.12.14 23:59  CoreAlexGru EURUSD,M30: tickCnt= [165748]

2012.12.18 14:34:16 2012.12.14 23:59  CoreAlexGru EURUSD,M30:  DATETIME FINISH:[2012.12.14 23:59:55]

2012.12.18 14:34:16 2012.12.14 23:59  CoreAlexGru EURUSD,M30:  modelBarCount = [1192]

2012.12.18 14:34:16 2012.12.11 00:00  CoreAlexGru EURUSD,M30:  DATETIME BEGIN:[2012.12.11 00:00:00]

Н1

2012.12.18 14:34:48 2012.12.14 23:59  CoreAlexGru EURUSD,H1: tickCnt= [165731]

2012.12.18 14:34:48 2012.12.14 23:59  CoreAlexGru EURUSD,H1:  DATETIME FINISH:[2012.12.14 23:59:55]

2012.12.18 14:34:48 2012.12.14 23:59  CoreAlexGru EURUSD,H1:  modelBarCount = [1096]

2012.12.18 14:34:47 2012.12.11 00:00  CoreAlexGru EURUSD,H1:  DATETIME BEGIN:[2012.12.11 00:00:00]

Т.е. вот тут лучше, при изменении периодов количества тиков одинаковые. 


 
int Bars

Number of bars in the current chart.

на графике наверно еще до начала тестирования бары есть.

как-то так можно попробовать: 

 

int start()

  {

    if (LastBarTime!=Time[0]){ //дождёмся окончания текущего бара 

      modelBarCount++ ; 

      LastBarTime!=Time[0];

   } 

  return(0); 

Причина обращения: