не подкачивает тиковую историю В тестере

 

Вот такой код работает нормально на чарте. А в Тестере - перестал несколько часов назад. Почему ? 


string sym1 = "EURAUD";
string sym2 = "AUDCAD";
int OnInit(void)
  {
   MqlTick HistoryTicks1[];
   MqlTick HistoryTicks2[];

   datetime dx = TimeCurrent() - 24 * 60 * 60 * 3;
   ulong from = dx * 1000;

   for(int i = 0; i < 20; i++)
     {

      int size1 = CopyTicksRange(sym1, HistoryTicks1, COPY_TICKS_ALL, from);
      int size2 = CopyTicksRange(sym2, HistoryTicks2, COPY_TICKS_ALL, from);

   if(size1 > 0)
     {
      Print("Скопировано тиков - ", size1, "  ", size2);
      break;
     }
   else
     {
      Print("<---  ",__LINE__,"   ", _LastError);
      Print(size1, "  ", size2,"   ");
      return(INIT_FAILED);
     }
    }

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnTick(void)
  {
   
  }


Логи при запуске на чарте. Видим , что все ок ! 

логи при запуске на чарте


Логи при запуске в тестере. БЕДА ! 

логи с тестера

 
Сомневаюсь, что в начале интервала тестирования должна быть ненулевая тиковая история. Особенно, не по родным символам.
 
Dmitiry Ananiev:

Вот такой код работает нормально на чарте. А в Тестере - перестал несколько часов назад. Почему ? 



Логи при запуске на чарте. Видим , что все ок ! 


Логи при запуске в тестере. БЕДА ! 


Та же самая беда - тики закачены, а тестер их не видит. Раньше видел. Счет у Meta Quotes? Может только у них проблема и нужно попробовать у ДЦ? Я еще пока не пробовал... 

 
Ihor Herasko:

Та же самая беда - тики закачены, а тестер их не видит. Раньше видел. Счет у Meta Quotes? Может только у них проблема и нужно попробовать у ДЦ? Я еще пока не пробовал... 

может в связи с последним релизом ? что то поменяли.

А пробовали в тестере делать холостой пробег до точки , где тики будут заливаться нормально, и алгоритм начнет работать. 

Допустим мне нужно протестить 01.12.2020 - 27.12.2020

Стартую скажем с 10.11.2020 , и в тестере работает код как положено, но точка с которой начнутся операции определена как 01.12.2020 , таким образом вы "накормите тестер"  предварительными данными, а дальше пойдет нормально.

Что то подобное у меня было, просто вставлял к код дату.

 
Yuriy Zaytsev:

может в связи с последним релизом ? что то поменяли.

А пробовали в тестере делать холостой пробег до точки , где тики будут заливаться нормально, и алгоритм начнет работать. 

Допустим мне нужно протестить 01.12.2020 - 27.12.2020

Стартую скажем с 10.11.2020 , и в тестере работает код как положено, но точка с которой начнутся операции определена как 01.12.2020 , таким образом вы "накормите тестер"  предварительными данными, а дальше пойдет нормально.

Что то подобное у меня было, просто вставлял к код дату.

Чудеса, да и только!

Запустил тестер с холостым проходом до определенной даты. По ее достижении он стал видеть тиковую историю, хотя реально этой истории нет. Ну это ладно, рецепт подействовал, спасибо.

Самое интересное началось после этого этапа теста: теперь холостые проходы не нужны, тестер видит эту реальную тиковую историю, которую в реале не видно...

 
на "чужом" символе проблема так и осталась. 
Если тестировать на символе указанном в советнике то подтянется история тиков только для этого символа. 
Сервер значения не имеет. 
 
Тестер подтягивает историю только из интервала тестирования. Если дёргаются апи запроса истории мимо интервала, он подхватит её только если она уже есть. Если её нет, то вернёт пусто. Поэтому можно разок прогнать с более широким интервалом, чтоб он подтянул её.
 
traveller00:
Тестер подтягивает историю только из интервала тестирования. Если дёргаются апи запроса истории мимо интервала, он подхватит её только если она уже есть. Если её нет, то вернёт пусто. Поэтому можно разок прогнать с более широким интервалом, чтоб он подтянул её.

вы пробовали код что я приложил ? 

 
Dmitiry Ananiev:

вы пробовали код что я приложил ? 

Именно этот код нет. Но в моих советниках тоже есть обращение к истории и тоже была аналогичная ситуация. Я для себя отметил, что надо подтянуть по всем символам историю сначала. Хотя и не тестировал это на символе отличном от того, на котором идёт тест.

 

тут случайно обнаружил, чтоб запустить в тестере такой код . надо вызвать индикатор любой по нужному символу. и считывать историю в OnTick() или в OnTimer()


//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2020, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+

string sym1 = "EURAUD";
bool FirstRun = true;

int handle ;
int OnInit(void)
  {
   
    handle = iCCI(sym1,PERIOD_CURRENT,14,PRICE_CLOSE);
   return(INIT_SUCCEEDED);
  }
  
  
//+------------------------------------------------------------------+
void OnTick(void)
  {

   if (FirstRun) 
   {
   
      FirstRun= false;
      MqlTick HistoryTicks1[];

      SymbolSelect(sym1,true);

      datetime dx = TimeCurrent() - 24 * 60 * 60 * 3;
      ulong from = dx * 1000;


      int size1 = CopyTicksRange(sym1, HistoryTicks1, COPY_TICKS_ALL, from);

      if(size1 > 0)
         Print("Скопировано тиков - ", size1);
      else
         Print("<---  ",__LINE__,"   ", _LastError);
   }
  }
//+------------------------------------------------------------------+

Вот такой код работает и в Тестере. 
Кто нибудь пояснит - почему ? 

 
Dmitiry Ananiev:

тут случайно обнаружил, чтоб запустить в тестере такой код . надо вызвать индикатор любой по нужному символу. и считывать историю в OnTick() или в OnTimer()

Вот такой код работает и в Тестере.

Не работает.

2021.01.08 12:59:16.868 Core 1  2021.01.04 00:15:00   <---  530   4014


Попробовал брать (тики не сразу) таким образом.

int FirstRun = 0;
//....
   if (FirstRun++ == 3000) 


Результат тот же.

2021.01.08 13:02:08.259 Core 1  2021.01.04 20:05:20   <---  530   4014
2021.01.08 13:02:08.259 Core 1  2021.01.05 18:46:00   <---  530   4014


ЗЫ

Константа

Значение

Описание

ERR_FUNCTION_NOT_ALLOWED

4014

Системная функция не разрешена для вызова

Причина понятна - запрет. Поэтому даже по своему символу ничего не получите.

Ищите билд, где запрет еще не утвердили.