А когда новая версия MT5 и где узнать что в ней ожидается - страница 26

 

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

Попробовал так:

void OnStart()
  {
MqlTick ExTicks[];  
datetime tm=StringToTime("1971.01.01 00:00:00");
//--- вывод результата
ulong m=tm*1000; 
int copied=CopyTicks(_Symbol,ExTicks,COPY_TICKS_ALL,m);
Print("Получено тиков: ",copied," код ошибки: ",GetLastError());
 
  }

 все время получается 2000 тиков.  В справке пишется, если время не указано, то передается не более 2000 тиков. Время указал в миллисекундах умножил секунды на 1000.

Еще в справке указывается, что это тики за текущую сессию. То есть получается к историческим данным нельзя обратиться? 

 
forexman77:

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

Попробовал так:

 все время получается 2000 тиков.  В справке пишется, если время не указано, то передается не более 2000 тиков. Время указал в миллисекундах умножил секунды на 1000.

Еще в справке указывается, что это тики за текущую сессию. То есть получается к историческим данным нельзя обратиться? 

Вы хотите получить все тики? :)

Для начала проверьте, а потянет ил Ваш компьютер столько тиков (если Ваш компьютер сгорит, я не виноват):

//+------------------------------------------------------------------+
//|                                                CopyTicks_1_02.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.031"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
input int  ticks=200000000000;  // количество запрашиваемых тиков
input datetime start=D'1971.01.01 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("Тик: ",ExTicks[0].time," bid: ",ExTicks[0].bid," ask: ",ExTicks[0].ask," last: ",ExTicks[0].last," [0]");
      Print("Тик: ",ExTicks[copied-1].time," bid: ",ExTicks[copied-1].bid," ask: ",ExTicks[copied-1].ask," last: ",ExTicks[copied-1].last," [",copied-1,"]");

      //datetime Start =D'2015.10.16 23:59';   // время наступления 2015 года
      //datetime End   =D'2015.10.19 00:02';   // время наступления 2015 года
      //for(int i=0;i<copied-1;i++)
      //   if(ExTicks[i].time>Start && ExTicks[i].time<End)
      //      Print("Тик: ",ExTicks[i].time," bid: ",ExTicks[i].bid," ask: ",ExTicks[i].ask," last: ",ExTicks[i].last," [i]");
     }
   Print("Size ",((long)copied*sizeof(MqlTick))>>20," Mb");
  }
//+------------------------------------------------------------------+
Файлы:
 
Karputov Vladimir:

Вы хотите получить все тики? :)

Для начала проверьте, а потянет ил Ваш компьютер столько тиков (если Ваш компьютер сгорит, я не виноват):

Да мне нужно знать с какой даты есть данные(то есть с какой даты можно запустить тест на реальных тиках).

А сколько не проблематично для компьютера запросить? Сгореть это Вы преувеличили наверное, скорее зависнет?

 
forexman77:

Да мне нужно знать с какой даты есть данные(то есть с какой даты можно запустить тест на реальных тиках).

А сколько не проблематично для компьютера запросить? Сгореть это Вы преувеличили наверное, скорее зависнет?

Вместо "200000000000" поставьте "20000" и дату, любую дату 1971 года. При этом, очень вероятно, что нужно будет запустить скрипт не один раз. Дело в том, что при первом запросе инициализируется закачка всей истории (ведь заказали историю с 1971 года) и если скрипт долго не отвечает, ему отдадутся данные которые есть в наличии, но скачивание пойдёт дальше. Поэтому второй запрос может показать более глубокую историю.
 
forexman77:

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

Попробовал так:

 все время получается 2000 тиков.  В справке пишется, если время не указано, то передается не более 2000 тиков. Время указал в миллисекундах умножил секунды на 1000.

Еще в справке указывается, что это тики за текущую сессию. То есть получается к историческим данным нельзя обратиться? 

Вы не сможете получить все тики по символу, если их больше INT_MAX, потому что возвращаемое значение

функции CopyTicks -  integer. Поэтому нужно получать их частями.

 
prostotrader:

Вы не сможете получить все тики по символу, если их больше INT_MAX, потому что возвращаемое значение

функции CopyTicks -  integer. Поэтому нужно получать их частями.

Тем не менее, начальную дату тиков узнать можно запрашивая всего 20000 (двадцать тысяч) тиков - главное указать начальную дату, которая гарантирует, что на эту дату тиков ещё не было и для этого 1971 год подходи как нельзя лучше.
 
Karputov Vladimir:
Тем не менее, начальную дату тиков узнать можно запрашивая всего 20000 (двадцать тысяч) тиков - главное указать начальную дату, которая гарантирует, что на эту дату тиков ещё не было и для этого 1971 год подходи как нельзя лучше.

Запросил много данных, действительно сильное торможение началось:

2016.08.21 22:24:03.918 CopyTicks (EURUSD,H1)   Size 2826 Mb
2016.08.21 22:24:03.918 CopyTicks (EURUSD,H1)   Тик: 2016.05.25 16:54:25 bid: 1.11497 ask: 1.11505 last: 0.0 [56999999]
2016.08.21 22:24:03.918 CopyTicks (EURUSD,H1)   Тик: 2016.01.13 09:45:44 bid: 1.08206 ask: 1.08236 last: 0.0 [0]
2016.08.21 22:24:03.903 CopyTicks (EURUSD,H1)   Получено тиков: 57000000 код ошибки: 0

 Для моей задачи и 100 тиков хватит. Вообщем спасибо!

2016.08.21 22:36:42.234 CopyTicks (EURUSD,H1)   Size 0 Mb
2016.08.21 22:36:42.234 CopyTicks (EURUSD,H1)   Тик: 2016.01.13 09:46:01 bid: 1.08206 ask: 1.08236 last: 1.08215 [99]
2016.08.21 22:36:42.234 CopyTicks (EURUSD,H1)   Тик: 2016.01.13 09:45:44 bid: 1.08206 ask: 1.08236 last: 0.0 [0]
2016.08.21 22:36:42.234 CopyTicks (EURUSD,H1)   Получено тиков: 100 код ошибки: 0
 
Renat Fatkhullin:
Yes, custom charts and own datafeeds will be available soon.

Hi Renat, any update about these features ? (sorry if it's somewhere else I didn't find it).

Привет Ренат, есть какие-либо новости об этих функциях? (Извините, если это где-то уже есть, я не нашел).