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

 
Artyom Trishkin #:
Это был серьëзно заданный вопрос. Возможно, из-за моего недопонимания.

Почему нет тиков раньше определенной даты? Ответ на поверхности.

 
fxsaber #:

Почему нет тиков раньше определенной даты? Ответ на поверхности.

Как узнать и быть уверенным, что их нет на сервере? 
И, получается, с 2011 по 2016 закачаны 100 000 000 тиков. А, значит, утверждение из справки о гарантированной загрузке всей истории тиков не верно. Так? 
 
Artyom Trishkin #:
Как узнать и быть уверенным, что их нет на сервере? 

Отсутствие _LastError. Гарантированная закачка БД тиков.

 
fxsaber #:

Отсутствие _LastError. Гарантированная закачка БД тиков.

Получается, с 2011 по 2016 закачаны 100 000 000 тиков. А, значит, утверждение из справки о гарантированной загрузке всей истории тиков не верно. Так? 
 
Artyom Trishkin #:
Получается, с 2011 по 2016 закачаны 100 000 000 тиков. А, значит, утверждение из справки о гарантированной загрузке всей истории тиков не верно. Так? 

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

На барах посчитайте суммарный тиковый объем, чтобы оценить порядок количества тиков на нужном интервале.


ЗЫ  Пусть средняя частота прихода тиков равна 1 Гц. Тогда в году их должно быть > 20 миллионов.

 
fxsaber #:

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

На барах посчитайте суммарный тиковый объем, чтобы оценить порядок количества тиков на нужном интервале.

Спасибо
 

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

Тестируем 'CopyTicks'

fxsaber, 2020.04.12 20:20

Прошу сообщить, какие данные нужно предоставить, чтобы скорее решить эту проблему?

void OnStart()
{
  MqlTick Ticks[];

  Print(CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (ulong)D'2020.04.09 10:40:29' * 1000, (ulong)D'2020.04.11' * 1000)); // 8192
  Print(_LastError); // 4407

  ResetLastError();

  MqlTick Ticks2[];

  Print(CopyTicksRange(_Symbol, Ticks2, COPY_TICKS_INFO, (ulong)D'2020.04.09 10:40:30' * 1000)); // 131066
  Print(_LastError); // 0
}


Тики не копирует, выдавая ошибку.

Константа

Значение

Описание

ERR_HISTORY_SMALL_BUFFER

4407

Принимающий массив слишком мал чтобы вместить все запрошенные данные


Невозможно нормально работать с такими сюрпризами!


Через GUI (CTRL+U) тики берутся без проблем.


Первый раз после исправления этой ошибки нарвался на нее на реальном символе.

void OnStart()
{
  MqlTick Ticks[];
  
  Print(CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (ulong)D'2024.08.26' * 1000)); // 648701
  Print(_LastError); // 4407
  Print(TerminalInfoInteger(TERMINAL_BUILD)); // 4410
}

Тики берутся нормально, но 4407-ошибка возникает по одному из символов (не на всех). Вылечилась после перезагрузки Терминала.

Просьба посмотреть еще раз эту ошибку, спасибо.

 
fxsaber #:
Тики берутся нормально, но 4407-ошибка возникает по одному из символов (не на всех).

а в Ticks[] при этом есть данные?

ошибка проявляется когда рынок открыт?
 
Nikolay Kuznetsov #:

а в Ticks[] при этом есть данные?

Да.

ошибка проявляется когда рынок открыт?

Да.

 
fxsaber #:

Да.

Да.

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