Ошибки, баги, вопросы - страница 382

 
aharata:

Тиков в файле: 1159105, а тиковый объем за этот период: 1161872  

Из-за чего это может быть? Как правильно взять тики тестера?

1 161 872 - 1 159 105 = 2 767 тиков, что равно 0.2% от 1 161 72 тиков.

Погрешность в моделировании тиков в 0.2% допустима и нормальна, так как не имеет смысла в некоторых ситуациях(конфигурациях баров) генерировать дополнительные тики. Тестер всегда генерирует чуть меньшее количество тиков (на уровне показанных 0.2%), чем было в реальности.

Если зеленая полоса качества исходных данных близка к 100%, то можете использовать сгенерированную тиковую последовательность тестера без опаски.

Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
  • 2010.05.21
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 позволяет во встроенном тестере стратегий моделировать автоматическую торговлю с помощью экспертов на языке MQL5. Такое моделирование называется тестированием экспертов, и может проводиться с использованием многопоточной оптимизации и одновременно по множеству инструментов. Для проведения тщательного тестирования требуется генерировать тики на основе имеющейся минутной истории. В статье дается подробное описание алгоритма, по которому генерируются тики для исторического тестирования в клиентском терминале MetaTrader 5.
 
Спасибо, за скорый ответ. Качество истории 100% (классный, кстати, индикатор в тестере). будем разбираться дальше... Так как при виртуальной торговле использую индикаторы, то теперь волнует вопрос синхронизации тиков и данных индикаторов (как бы 2 десятых мне боком не вышли)... Спасибо.
 
Можно какимто образом получить значение даты для бара находящегося в будущем? Мне необходимо построить сетку в перед через определеное кол-во баров.
 
vdv2001:
Можно какимто образом получить значение даты для бара находящегося в будущем? Мне необходимо построить сетку в перед через определеное кол-во баров.

Если только время то так: берем базовый бар; узнаем его время; получаем количество секунд в периоде (ТФ); умножаем секунды на число баров и прибавляем к дате базового бара.

 
Interesting:

Если только время то так: берем базовый бар; узнаем его время; получаем количество секунд в периоде (ТФ); умножаем секунды на число баров и прибавляем к дате базового бара.

Не факт что бар останется под тем же индексом (с учётом сдвига) но в целом да, можно отсчитать нужное количество баров вперёд и выставить объект и он будет именно там где и надо. С прошлым сложнее, там сказываются пропуски баров. Так что объекты которые ушли с нулевой точки на первую нужно наверно будет контролировать на правильность.

Тут главное выяснить что важнее регулярность барная или регулярность по времени?

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Interesting:

Если только время то так: берем базовый бар; узнаем его время; получаем количество секунд в периоде (ТФ); умножаем секунды на число баров и прибавляем к дате базового бара.

 

Я сейчас таки делаю, думал может можно както проще типа функции BarToTime().  :) 

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Urain:

Не факт что бар останется под тем же индексом (с учётом сдвига) но в целом да, можно отсчитать нужное количество баров вперёд и выставить объект и он будет именно там где и надо. С прошлым сложнее, там сказываются пропуски баров. Так что объекты которые ушли с нулевой точки на первую нужно наверно будет контролировать на правильность.

Тут главное выяснить что важнее регулярность барная или регулярность по времени?

Важна регулярнасть барная, иначе углы получаются кривые :((

Пытаюсь строить квадрат гана. 

 
vdv2001:

Важна регулярнасть барная, иначе углы получаются кривые :((

Пытаюсь строить квадрат гана. 

Считайте как прибавление секунд, но на каждом новом баре просто перерисовывайте картинку (можно даже функцию необходимости написать) и всё....

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
vdv2001:

Важна регулярнасть барная, иначе углы получаются кривые :((

Пытаюсь строить квадрат гана. 

А вам не важно что бары идут с пропусками?
 
Urain:
А вам не важно что бары идут с пропусками?

Нет Ган учитывал только рабочие бары!!!

Пропущеные периоды мне и нужно было убрать.

Спасибо всем за подсказки сделал, через формирование масива времени.

Может кому понадобится:

//   int bars - количество расчетных баров
//   datetime time1 - время нулевого бара

   datetime iTime[];
   int rates_time;
   rates_time=CopyTime(NULL,m_period,time1,TimeCurrent(),iTime);
   if(rates_time==-1) return(false);
   ArrayResize(iTime,bars+1);
   if(rates_time<=bars)
     {
      int shift=rates_time-1;
      for(int i=1;i<=ArraySize(iTime)-rates_time;i++)
        {
         iTime[shift+i]=iTime[shift]+PeriodSeconds(m_period)*i;
        }
     }
   datetime shifttime=time1-iTime[0]; // смещение времени для корекции массива
   for(int i=0;i<=bars;i++) iTime[i]=iTime[i]+shifttime; // корректируем массив
   time2=iTime[bars];

 Правда необходимо пересчитывать при появлении нового бара.