Тестируем 'CopyTicks' - страница 6

 
Karputov Vladimir:
Это они у Вас разные на MetaQuotes-Demo - так как, повторюсь ещё раз, пример должен максимально простым. У меня за сегодня на MetaQuotes-Demo флаги одинаковые.

 

Результат работы вашего индикатора сегодня, сервер Meta-Quotes demo. Флаги через SymbolInfoTick приходят нулевые. 

 
zimbabve15:

 

Результат работы вашего индикатора сегодня, сервер Meta-Quotes demo. Флаги через SymbolInfoTick приходят нулевые. 

Прошло 10 минут - а я на MetaQoutes-Demo, на EURUSD ни разу не увидел несовпадения флагов у тиков полученных через CopyTicks и через SymbolInfoTick.
 
Karputov Vladimir:
Прошло 10 минут - а я на MetaQoutes-Demo, на EURUSD ни разу не увидел несовпадения флагов у тиков полученных через CopyTicks и через SymbolInfoTick.

 

в 16.53 закончились несовпадения когда пик активности прошел  

 
Karputov Vladimir:
Прошло 10 минут - а я на MetaQoutes-Demo, на EURUSD ни разу не увидел несовпадения флагов у тиков полученных через CopyTicks и через SymbolInfoTick.

 

На сильном движении снова то же самое 

 
Karputov Vladimir:
Прошло 10 минут - а я на MetaQoutes-Demo, на EURUSD ни разу не увидел несовпадения флагов у тиков полученных через CopyTicks и через SymbolInfoTick.

Для тестирования предлагаю такой код: 

#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.44"
#property description "Indicator for comparing the three modes of receiving ticks"
#property description "Индикатор для сравнения трёх режимов получения тиков"
#property indicator_plots 0
#property indicator_chart_window
int count=1; //считаем пришедшие тики в OnCalculate
int depth_save_tick=10; // количество тиков для записи
//с приходом каждого тика в OnCalculate будем писать в массив структуру тика через функцию SymbolInfoTick depth_save_tick раз
MqlTick SymbolInfoTick_array_depth_save_tick[10]; 
//с приходом каждого тика в OnCalculate будем получать в массив структуру последнего тика через функцию CopyTicks 
MqlTick CopyTick_array_one_tick[];
//с приходом каждого тика в OnCalculate будем писать в массив структуру тика через функцию CopyTicks depth_save_tick раз
MqlTick  CopyTick_array_depth_save_tick[10]; 
//когда придет depth_save_tick тиков  запишем их одним запросом через CopyTicks
MqlTick CopyTick_array[]; 

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   MqlTick last_tick;
   SymbolInfoTick(Symbol(),last_tick);
   if(count%depth_save_tick==0)
     {
      int copied=CopyTicks(_Symbol,CopyTick_array,COPY_TICKS_ALL,0,depth_save_tick);
      Comment("");
     }
   else
     {
      SymbolInfoTick_array_depth_save_tick[count-1]=last_tick;
      CopyTicks(_Symbol,CopyTick_array_one_tick,COPY_TICKS_ALL,0,1);
      CopyTick_array_depth_save_tick[count-1]=CopyTick_array_one_tick[0];
     }
   count++;
   return(rates_total);
  }

 Идея такая: ваш индикатор сравнивал значения, полученные через SymbolInfoTick и CopyTicks с глубиной 1 тик, то есть последние значения, что приходят с сервера. В индикаторе в процедуре OnCalculate с каждым приходом нового тика будем сохранять в массивы как первое, так и второе значение. На выходе получим два массива тиков, полученных разными способами. Зададим глубину записи 10. По достижении этой глубины сделаем запрос CopyTicks   на те же 10 тиков и сравним эти три массива, тем самым проверим работу и вашей идеи с наипростейшим примером, и посмотрим как работает CopyTicks с глубиной истории более 1 тика. 

 

Как видно, ваша идея, заложенная в "простейшем примере одним файлом" работает и индикатор показывает правильно значения тика через SymbolInfoTick и CopyTicks с глубиной 1 тик  (я пока не рассматриваю сильные движения, о чем писал вчера, где вообще приходили флаги 0, дождемся сегодняшнего открытия америки). Но как только мы начнем сравнивать данные истории, то картина как с флагами, так и другими значениями в структуре тика становится непонятной. На картинке указано что именно. Причем время в тиках полученных тремя способами совпадает, то есть тики именно одни и те же, но наполнение их разное. Сервер MetaQuotes-Demo

И америки ждать не пришлось, опять на сильном движении:

 

 Удалось записать на движении тиковые данные, они во вложении, приходят нули через SymbolInfoTick видно явно, могу принты экрана дать сравните время алармов вашего индикатора и нулевых значений в файле. Сервер MetaQuotes-Demo 

Файлы:
 

а чем закончился данный триллер,

прочитал все  - а концовки нету.

 
Nemoys:

а чем закончился данный триллер,

прочитал все  - а концовки нету.

Сервисдеск ответил:

Добрый день. Ваши заявки в работе. Ответим в каждой из них, когда проблема будет решена.

Обновление вроде бы было обещано на начало марта, поэтому ждем. 

 

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

Например, может ли быть такое, что определенный бид на бирже родился на 100-й милисекунде и умер на 101-й, а в истории метатрейдер этот бид либо отсутствует, либо со временем рождения/смерти не равному 100/101?

 
Anton Zverev:

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

Например, может ли быть такое, что определенный бид на бирже родился на 100-й милисекунде и умер на 101-й, а в истории метатрейдер этот бид либо отсутствует, либо со временем рождения/смерти не равному 100/101?

Все тики абсолютно точные, без пропусков и других ошибок.

Тиковая база единая для всех процессов в MetaTrader 5: серверов, терминалов, тестеров и тд.

 
MetaQuotes Software Corp.:

Все тики абсолютно точные, без пропусков и других ошибок.

Тиковая база единая для всех процессов в MetaTrader 5: серверов, терминалов, тестеров и тд.

Получается, что если я закачаю с биржевого сайта историю тиков и с пятерки, то будет полное совпадение с точностью до мс?

На демо-ФОРТС в тестере тики с реала или с демо?