Тиковая история - страница 18

 
Alexander:

Сейчас воспроизводится ?

У нас нет, пробовали по вашему описанию.

После "лечения":

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Тиковая история

Karputov Vladimir, 2015.10.21 09:24

...

 Сейчас испытываю "лекарство" - полностью удалю истории из папок "history" и "ticks" сервера MetaQuotes-Demo.


история глубиной 500 тиков отдаётся практически мгновенно, при этом идёт подкачка общей истории баров. Размер тиковых файлов за 10 месяц 200-400 Кб. 

 

А я в тестере захотел получить тики, что попало выдает :)

void OnTick()
  {
//---
 MqlTick ExTicks[];
 CopyTicks(_Symbol,ExTicks,COPY_TICKS_ALL,D'2015.10.16 23:59',1);

 

 

Посмотрите как работают тики в 1194 билде, где добавлены миллисекунды и флаги.

В тестере тики не отдаются, пока не завершим в следующем релизе полную интеграцию тиков в тестер торговых стратегий.

 
MetaTrader 5 build 1194 started (MetaQuotes Software Corp.)
Windows 10 Home (X86 based PC), IE 11.00, UAC, Intel Atom  Z3740 @ 1.33GHz, RAM: 218 / 1931 Mb, HDD: 20039 / 50235 Mb, GMT+02:00
authorized on MetaQuotes-Demo through Access Point EU (ping: 139.57 ms)

Проверяю подкачку тиков при разрыве соединения с интернетом. Испытуемый индикатор ниже:

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version    "1.1"
#property indicator_chart_window
#property indicator_plots 0
//--- input parameter
input int   InpShowTicks=50;    // клубина истории тиков
//--- parameters
MqlTick     arr_mql_tick[];      // массив структур хранящий тики
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print(__FUNCTION__);
   Comment("");
   ResetLastError();
//--- новый размер массива структур тиков
   if(ArrayResize(arr_mql_tick,InpShowTicks)==-1)
     {
      Print("Error OnInit #1",GetLastError());
      return(INIT_FAILED);
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   static int count;
   string text  =IntegerToString(count)+"; ";
   int copied=CopyTicks(_Symbol,arr_mql_tick,COPY_TICKS_INFO,0,InpShowTicks);
   text+="Запрошено "+IntegerToString(InpShowTicks)+" тиков, скачано "+IntegerToString(copied);
   Comment(text);
   count++;
   return(rates_total);
  }
//+------------------------------------------------------------------+

Алгоритм такой:

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

Отключиться от интернета (терминал должен бибикнуть). При этом:

  1. тест №1, «count» =40,
  2. тест №2, «count» =47,
  3. тест №3, «count» =12.

Включить интернет.

Индикатор пытается скачать тики, при этом запрос на 50, а скачано 21-23. Такое длиться пока «count» не станет больше 100.

 

Повторяемость хорошая, проверял более трёх раз. 

Файлы:
test.mq5  3 kb
 
Karputov Vladimir:

Проверяю подкачку тиков при разрыве соединения с интернетом. Испытуемый индикатор ниже:


Имейте в виду, что запрос тиков в индикаторе работает несколько по-другому, чем запрос тиков в эксперте.

Индикатор не имеет права тормозить, поэтому индикатору на запрос отдаётся сразу имеющееся количество тиков.

Эксперт работает в собственном потоке, поэтому может немного подождать. Для эксперта делается несколько попыток подкачки тиков на один запрос.

 
Slawa:

Имейте в виду, что запрос тиков в индикаторе работает несколько по-другому, чем запрос тиков в эксперте.

Индикатор не имеет права тормозить, поэтому индикатору на запрос отдаётся сразу имеющееся количество тиков.

Эксперт работает в собственном потоке, поэтому может немного подождать. Для эксперта делается несколько попыток подкачки тиков на один запрос.

Это понятно. Но сколько нужно времени для подкачки? В примере выше запрос на 50 тиков и если сразу не подгрузились тики, то времени это занимает секунд 30. 

Дальше хуже. Даю запрос на 500 тиков - подгружаются тики почти мгновенно (думаю только благодаря тому, что я раньше запрашивал такое количество), а затем даю запрос на 5000 - уже четыре минуты прошло, а из 5000 загружено чуть меньше 2000 и это число не растёт.

 
Renat Fatkhullin:

Посмотрите как работают тики в 1194 билде, где добавлены миллисекунды и флаги.

В тестере тики не отдаются, пока не завершим в следующем релизе полную интеграцию тиков в тестер торговых стратегий.

А для MT4 будут аналогичные изменения?
 

Вечером проверил на другом компьютере:

MetaTrader 5 x64 build 1194 started (MetaQuotes Software Corp.)
Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i3-3120M  @ 2.50GHz, RAM: 1129 / 3981 Mb, HDD: 75614 / 234136 Mb, GMT+02:00
authorized on MetaQuotes-Demo through Access Point EU2 (ping: 59.54 ms)

 

Предварительно скриптом закачал 200000000 тиков - тики загрузились примерно за 6 секунд. А дальше всё тоже:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Тиковая история

Karputov Vladimir, 2015.10.22 15:07

... Даю запрос на 500 тиков - подгружаются тики почти мгновенно (думаю только благодаря тому, что я раньше запрашивал такое количество), а затем даю запрос на 5000 - уже четыре минуты прошло, а из 5000 загружено чуть меньше 2000 и это число не растёт.

 
В МТ4 нет, к сожалению.
 
MetaTrader 5 build 1196 started (MetaQuotes Software Corp.)
authorized on MetaQuotes-Demo through Access Point EU1 (ping: 296.87 ms)

В поле flags структуры MqlTicks часто идут значения "24" (режим отображения "все тики"):

 1

- что означает это значение? 

Файлы:
Причина обращения: