CopyTicksRange () в MQL5 некорректно работает.a - страница 2

 
Alexey Viktorov #:

Я выделил ключевые слова.

НЕ запрашивайте тики которых ещё нет по определению. Если запросить тики хоть на одну миллисекунду дальше текущего времени в миллисекундах, то получите тот самый г………й в виде вами перечисленных проблем.


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

Придумайте мне способ проверки а были ли в существующем баре тики с второй секудны до третьей, чтоб эта функция не сглючила


Выше я написал пример кода, где все есть, но ответ все равно неправильный.

 
RusPro #:


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


Выше я написал пример кода, где все есть, но ответ все равно неправильный.

SymbolInfoTick

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

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 повышенной точностью
  };

Не надо запрашивать тики дальше time_msc

 

1)В моем примере выше запрашиваемый диапазон существует.

2) а что мешает в самой CopyTicksRange сделать эту проверку? а заодно и отразить это в документации? прочему разработчики предлагают мне делать костыли, вместо простейших исправлений своих ошибок?  


кстати о SymbolInfoTick - она тоже неправильно работает, как минимум на  синтетических символах :) 

На сколько я помню она всегда возвращает время самого первого тика, вместо последнего

 
RusPro #:

1)В моем примере выше запрашиваемый диапазон существует.

2) а что мешает в самой CopyTicksRange сделать эту проверку? а заодно и отразить это в документации? прочему разработчики предлагают мне делать костыли, вместо простейших исправлений своих ошибок?  


кстати о SymbolInfoTick - она тоже неправильно работает, как минимум на  синтетических символах :) 

На сколько я помню она всегда возвращает время самого первого тика, вместо последнего

Я больше в этом диалоге не участвую.

 
Alexey Viktorov #:

Я больше в этом диалоге не участвую.

Да Вы и не разработчик Метатрейдера, зачем вы взяли на себя роль их адвоката?

По существу поднятые вопросы правильные, функция должна работать корректно.
 
Sergey Gridnev #:
Да Вы и не разработчик Метатрейдера, зачем вы взяли на себя роль их адвоката?

По существу поднятые вопросы правильные, функция должна работать корректно.

На одну реплику возвращаюсь к диалогу:

Функция должна работать так как задумали разработчики, а не так как хотят пользователи. Один хочет одно, другой другое, а третий хочет ахинею.

Вот по этой причине вам разработчики не отвечают. А я не адвокатом выступаю, а вам пытаюсь донести простую истину, не грузи других если не можешь сделать сам. Вы-же в ответ включили «ус………ться не поддаться…» и сочиняете мифы о костылях.

На этом действительно ВСЁ¡¡¡ Разработчики вам не ответят… не надейтесь.

 
RusPro #:

А вот косяк:

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

Это, действительно, ошибка. Предоставьте полные данные для воспроизведения. Если подтвердится, разработчики внесут исправление в ближайших билдах.

Возможно, проблема в статическом массиве MqlTick.
 

Alexey Viktorov #:

Не надо запрашивать тики дальше time_msc

Последний исторический тик может быть более свежим, чем SymbolInfoTick (вызванный после CopyTicks). Сталкиваюсь с этим ежедневно.

Встречается и обратная ситуация. Не синхронизированные потоки.
 
fxsaber #:

Это, действительно, ошибка. Предоставьте полные данные для воспроизведения. Если подтвердится, разработчики внесут исправление в ближайших билдах.

Возможно, проблема в статическом массиве MqlTick.

 Ок, я постараюсь уменьшить код до минимального и выложу. CopyTicks также содержит подобные глюки, причем там они вылазят менее прогнозируемым способом и по этому костыли я делал только для  CopyTicksRange. Вероятно это ошибка какой-то общей внутренней функции.

 По поводу SymbolInfoTick  тоже пример нарисую.

 
RusPro #:

используемая тысячами программистов функция

Единицами.