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

 

Да еще. Пытаясь получить историю с начала сегодняшнего дня, получается странный результат. Вот скрипт:

         MqlTick array[];
         MqlDateTime sTime;
         TimeToStruct( TimeCurrent(), sTime );
         sTime.hour = 0;
         sTime.min = 0;
         sTime.sec = 0;
         datetime start = StructToTime( sTime );
         Print( "Начало текущего дня: ",start );
         int num = CopyTicks( _Symbol, array, COPY_TICKS_ALL, start, 1000000 );
         
         int size = ArraySize( array );
         Print( __FUNCTION__,": num = ",num,", arraySize = ",size );
         for( int i = 0; i < size; i++ )
                {
                 if( i == 0 )
                        {
                         Print( __FUNCTION__,": Время прихода первого доступного тика: ",array[ i ].time );
                        }
                 else if( i == size-1 )
                        {
                         Print( __FUNCTION__,": Время прихода последнего доступного тика: ",array[ i ].time );
                        }
                }

 Вот результат:

HQ 0 18:38:20.974 test_CopyTicks_1178 (EURUSD,M1) Начало текущего дня: 2015.10.15 00:00:00

JM 0 18:38:22.202 test_CopyTicks_1178 (EURUSD,M1) OnStart: num = 1000000, arraySize = 1000000

CF 0 18:38:22.202 test_CopyTicks_1178 (EURUSD,M1) OnStart: Время прихода первого доступного тика: 2011.12.19 00:00:08

RD 0 18:38:22.204 test_CopyTicks_1178 (EURUSD,M1) OnStart: Время прихода последнего доступного тика: 2012.01.06 18:41:26 

Видимо, так написать нельзя:  CopyTicks( _Symbol, array, COPY_TICKS_ALL, start, 1000000 );

 
Tapochun:

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

Сам массив MqlTick на 20 000 000 элементов занимает около 800 мб памяти. Плюс хранение такого же исходного массива в терминале, где накапливается и выдается информация.

Так что, если хотите работать с массивными данными, то выход только один - 64 битные версии и память от 8 гб. Благо, сейчас это стоит смешных денег.

 
Karputov Vladimir:
Теперь не нужны сборщики тиков - тиковая история доступна в терминале.

Ее доступность будет зависеть от доброй воли ДЦ или сохранение тиков жестко заложено в серверной части?

 
Renat Fatkhullin:

Сам массив MqlTick на 20 000 000 элементов занимает около 800 мб памяти. Плюс хранение такого же исходного массива в терминале, где накапливается и выдается информация.

Так что, если хотите работать с массивными данными, то выход только один - 64 битные версии и память от 8 гб. Благо, сейчас это стоит смешных денег.

А если запрашивать маленькими порциями? Скажем по 1 млн. тиков? Проблем ведь не должно быть? В смысле, запрос - обработка - след. запрос.

Или данные будут накапливаться и оператива закончится? 

 
Alexey Volchanskiy:

Ее доступность будет зависеть от доброй воли ДЦ или сохранение тиков жестко заложено в серверной части?

МТ5 серверы всегда с самого начала накапливали и хранили тиковую историю.

Отдачу ее в клиентские терминалы нельзя отключить.

 

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

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

Tapochun, 2015.10.15 15:08

Да, хорошо бы добавить перегрузку CopyTicks() так же, как и остальных Copy.. функций. Чтобы можно было получать с даты по дату. Сейчас, например, нельзя получить тики с начала текущего дня до текущего момента.
Можно это реализовать?
 
Tapochun:
Можно это реализовать?
Можно
 
Renat Fatkhullin:
Можно
Спасибо, очень поможет. Сейчас тяжеловато с "навигацией" получения тиков.
 

Тики складываются в файлы помесячно, правильно? Вот скриншт:

Тиковые файлы

А читать эти файлы как? Или только через тестер стратегий?

 
Karputov Vladimir:

Тики складываются в файлы помесячно, правильно? Вот скриншт:

А читать эти файлы как? Или только через тестер стратегий?

В лоб через блокнот не получилось.
Причина обращения: