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

 
Karputov Vladimir:

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

 

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

У каждого тика всегда заполняются все параметры, независимо от того, изменились ли данные по сравнению с предыдущим тиком. Это позволяет всегда иметь актуальное состояние цен на любой момент времени без поиска предыдущих значений по тиковой истории. Например, с тиком могла измениться только цена бид, но в структуре помимо новой цены будут указаны и остальные параметры: предыдущая цена аск, объем и т.д. Чтобы узнать, какие именно данные изменились с текущим тиком, анализируйте его флаги:

  • TICK_FLAG_BID - тик изменил цену бид
  • TICK_FLAG_ASK  - тик изменил цену аск
  • TICK_FLAG_LAST - тик изменил цену последней сделки
  • TICK_FLAG_VOLUME - тик изменил объем
  • TICK_FLAG_BUY - тик возник в результате сделки на покупку
  • TICK_FLAG_SELL - тик возник в результате сделки на продажу
Список изменений в билдах MetaTrader 5 Client Terminal
Список изменений в билдах MetaTrader 5 Client Terminal
  • www.mql5.com
Автоматическое обновление доступно через систему LiveUpdate:. - Страница 18 - Категория: общее обсуждение
 
Andrey Khatimlianskii:

Я советника приложил, который в OnInit() распечатывает эти коды:

   Print(TICK_FLAG_BID," - тик изменил цену бид");
   Print(TICK_FLAG_ASK,"  - тик изменил цену аск");
   Print(TICK_FLAG_LAST," - тик изменил цену последней сделки");
   Print(TICK_FLAG_VOLUME," - тик изменил объем");
   Print(TICK_FLAG_BUY," - тик возник в результате сделки на покупку");
   Print(TICK_FLAG_SELL," - тик возник в результате сделки на продажу")

и результат:

2015.10.23 15:12:33.274 CopyTicks_1_5_0 (USDCAD,M5)     2 - тик изменил цену бид
2015.10.23 15:12:33.274 CopyTicks_1_5_0 (USDCAD,M5)     4  - тик изменил цену аск
2015.10.23 15:12:33.274 CopyTicks_1_5_0 (USDCAD,M5)     8 - тик изменил цену последней сделки
2015.10.23 15:12:33.274 CopyTicks_1_5_0 (USDCAD,M5)     16 - тик изменил объем
2015.10.23 15:12:33.274 CopyTicks_1_5_0 (USDCAD,M5)     32 - тик возник в результате сделки на покупку
2015.10.23 15:12:33.274 CopyTicks_1_5_0 (USDCAD,M5)     64 - тик возник в результате сделки на продажу

Среди результатов нет значения "24". 

 
Karputov Vladimir:

Среди результатов нет значения "24". 

8 || 16 = 24

 
Karputov Vladimir:

Я советника приложил, который в OnInit() распечатывает эти коды:

и результат:

Среди результатов нет значения "24". 

Побитовая операция ИЛИ

Документация по MQL5: Основы языка / Операции и выражения / Побитовые операции
Документация по MQL5: Основы языка / Операции и выражения / Побитовые операции
  • www.mql5.com
Основы языка / Операции и выражения / Побитовые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ясно - параметры могут суммироваться, в зависимости от того, какие параметры структуры MqlTick были изменены с приходом тика.
 

Может ещё, кто-либо потестировать индикатор из сообщения по методике:

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

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

Karputov Vladimir, 2015.10.22 15:07

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

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


 
Renat Fatkhullin:

... 

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

Вышел билд 1200. В тестере тики не скачиваются, но зато в тестере в "Обзоре рынка" тики похожи на настоящие:

Тестер. Обзор рынка. 

 

Разобрался, как получать тики с определённой даты. Всё просто: время нужно указывать в миллисекундах.

//+------------------------------------------------------------------+
//|                                                CopyTicks_1_03.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.03"
#property description "Получение тиков с определённой даты"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
input int  ticks=200;  // количество запрашиваемых тиков
input datetime start=D'2015.10.16 23:59'; // с какой даты запрашивать тики
//---
MqlTick ExTicks[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- запросим тики, время должно быть в миллисекундах!
   int copied=CopyTicks(_Symbol,ExTicks,COPY_TICKS_ALL,(ulong)start*1000,ticks);
//--- если тики получены, то выведем на график значения Bid и Ask  
   Print("Получено тиков: ",copied," код ошибки: ",GetLastError());
   if(copied>1)
     {
      Print("Из заказанных ",ticks," самый старый тик: ",ExTicks[0].time," bid: ",
            ExTicks[0].bid," ask: ",ExTicks[0].ask," last: ",ExTicks[0].last," [0]");
      Print("Из заказанных ",ticks," самый молодой тик: ",ExTicks[copied-1].time," bid: ",
            ExTicks[copied-1].bid," ask: ",ExTicks[copied-1].ask," last: ",ExTicks[copied-1].last," [",copied-1,"]");
     }
   Print("Size ",((long)copied*sizeof(MqlTick))>>20," Mb");
  }
//+------------------------------------------------------------------+
Файлы:
 

Билд 1200. На графике прикреплён индикатор, который вызывает CopyTicks. Всё работает. Но после разрыва соединения:

2015.10.26 09:58:06.721 Network '1783501': connection to MetaQuotes-Demo lost

а затем при восстановлении соединения, CopyTicks упорно не желает отдавать тики. Причём хоть 50 тиков запрашивать, хоть 500.

 
Karputov Vladimir:

Билд 1200. На графике прикреплён индикатор, который вызывает CopyTicks. Всё работает. Но после разрыва соединения:

а затем при восстановлении соединения, CopyTicks упорно не желает отдавать тики. Причём хоть 50 тиков запрашивать, хоть 500.

А если потом приконнектиться к другому серверу? Или пересканировать сеть и приконнектиться к тому же? Ошибка остается?
Причина обращения: