CopyTicks не выдает ошибку - страница 2

 
Ihor Herasko:

Да, проблема. Для чего писать дополнительный код, проверяя то, что должна проверить функция (это ее работа, у нее есть все данные для этого)? Если тиков с запрашиваемым временем не существует, то пусть вернет 0, а не набор тиков, начинающихся с  начала суток и заканчивающихся, где придется. То есть даже если функция такое время определяет как 0, то все равно результат ее выполнения неправильный.

Если Вас реально интересует эта проблема, а не "просто поговорить", то запустите приведенный пример и посмотрите, какие тики возвращает такой запрос.

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

Написать проверку вы называете написанием костылей… жесть.

 
Alexey Viktorov:

Решение простое

Приведите его пожалуйста, если оно такое простое. У меня не получается простого решения.

 
Ihor Herasko:

Приведите его пожалуйста, если оно такое простое. У меня не получается простого решения.

Если CopyTicks() вернула 2000 тиков, прочтите время последнего тика

bool  SymbolInfoTick( 
   string    symbol,     // символ 
   MqlTick&  tick        // ссылка на структуру 
   );
struct MqlTick 
  { 
   datetime     time;          // Время последнего обновления цен 
   double       bid;           // Текущая цена Bid 
   double       ask;           // Текущая цена Ask 
   double       last;          // Текущая цена последней сделки (Last) 
   ulong        volume;        // Объем для текущей цены Last 
   long         time_msc;      // Время последнего обновления цен в миллисекундах 
   uint         flags;         // Флаги тиков 
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью 
  };

Или перед запросом тиков сверьте время последнего тика с временем которое пытаетесь сунуть в CopyTicks()

 
Alexey Viktorov:

Если CopyTicks() вернула 2000 тиков, прочтите время последнего тика

Опять вопросов больше, чем ответов:

  1. А если больше или меньше, то все ОК?
  2. Что с чем сравнивать?

Вы сказали, что есть простое решение. Вставьте его в имеющийся код так, чтобы цикл останавливался естественным образом, без ошибки Ticks error.

 
Ihor Herasko:

Опять вопросов больше, чем ответов:

  1. А если больше или меньше, то все ОК?
  2. Что с чем сравнивать?

Вы сказали, что есть простое решение. Вставьте его в имеющийся код так, чтобы цикл останавливался естественным образом, без ошибки Ticks error.

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

CopyTicks не выдает ошибку

Alexey Viktorov, 2021.05.14 10:30

Если CopyTicks() вернула 2000 тиков, прочтите время последнего тика

bool  SymbolInfoTick( 
   string    symbol,     // символ 
   MqlTick&  tick        // ссылка на структуру 
   );
struct MqlTick 
  { 
   datetime     time;          // Время последнего обновления цен 
   double       bid;           // Текущая цена Bid 
   double       ask;           // Текущая цена Ask 
   double       last;          // Текущая цена последней сделки (Last) 
   ulong        volume;        // Объем для текущей цены Last 
   long         time_msc;      // Время последнего обновления цен в миллисекундах 
   uint         flags;         // Флаги тиков 
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью 
  };

Или перед запросом тиков сверьте время последнего тика с временем которое пытаетесь сунуть в CopyTicks()

Игорь, я не буду ничего писать. Где-то я уже писал это, всё проверено.
 
На кастомном символе может быть история тиков, но не быть последнего (SymbolInfoTick) тика.
 
fxsaber:
На кастомном символе может быть история тиков, но не быть последнего (SymbolInfoTick) тика.

Кастомные символы ни разу не трогал руками. Ничего сказать не могу, но не понимаю как может не быть последнего тика. Думаю он может быть не свежим, но всё равно какой-то будет последним. Последний из имеющихся.

 
Alexey Viktorov:

Думаю он может быть не свежим, но всё равно какой-то будет последним. Последний из имеющихся.

Тика может не быть. В Обзоре рынка пустота.

 
Странный спор.
По факту правы обе стороны, но, всё-таки, если посмотреть с рыночной стороны, то тик - это сделка, которая прошла со стороны Бид или со стороны Аск.
Хочу заметить, что часто бывает так, что функция правильно отрабатывает, но тиков нет в определённые моменты, а потом скачав историю на бирже, смотришь, а там всё есть,
но виноват в этом, кстати, брокер с его серверами и плохо организованной работой.
Я это понял, когда сам создал базу тиковых данных и потом накапливал её с момента старта торгов с перерывами на клиринг.
Так вот, очень часто при старте торгов (биржевых) много тиковых данных просто отсутствовало, но в моей базе они были, то есть события  стакане я сам обрабатывал и накапливал в базе.
Но потом минутные графики отличались от моих. Я много раз проверял и перестал доверять брокеру. Из-за чего пришлось самому писать алгоритмы расчёта индикаторов на основе моей базы.
В результате я получил адекватность для проверки модели (МТС).

Думаю, что надо предъявлять требования не столько к разработчику, сколько к брокеру, 
но это совсем другая история.
 
Ihor Herasko:


Если Вас реально интересует эта проблема, а не "просто поговорить", то запустите приведенный пример и посмотрите, какие тики возвращает такой запрос.

Он то, как раз - человек, которому "просто поговорить".

Причина обращения: