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

 
Alexey Viktorov #:

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

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

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

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

Я знаю, что прочтешь, по этому напишу. Функция должна работать как описано в документации и никак иначе. Есть нюансы - пиши их в документации и не будет проблем.

Мне в чем то вас убеждать никакого смысла нет. Простые истины лучше доносите до разработчиков. Я уверен, что Вы никогда не работали в команде программистов - вы типичный самоучка, не имеющий за плечами серьезной базы знаний. А я работал и в дальнейшем руководил серьезными проектами.  У нас за общение прописными истинами не подкрепленными опытом и знаниями, просто увольняли.  Вы как посредник для общения с разработчиками мне не нужны. Ответ я от них получил еще года два назад - "делайте костыли, у нас все работает". Надеюсь автора фразы уже уволили, т.к. программист не бог и часто ошибается. 

У нас была должность тестера - вы даже примерно не представляете, сколько можно нарыть багов в паре страниц кода излишне самоуверенного и неопытного программера. 

 
RusPro #:

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

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

А работа с динамическими массивами гораздо медленнее и приходится учитывать возможную фрагментацию памяти.

А Вы доки до конца читаете?

Примечание

Функция CopyTicksRange() предназначена для запроса тиков из строго указанного диапазона, например, за конкретный день истории.

И все быстро работает с динамическими массивами.

Сравните свой пинг и забудьте про скорость работы с дин. массивами :)

Это не выделенный канал ММВБ

Добавлено

Если Вам нужна скорость, то зачем "сели" на БКС, эти у--ы сознательно ограничивают скорость стандартного логина ФОРТС

с 30 транзакций в сек. до 10 тр. в сек.!

Добавлено

И лучше писать в раздел "Биржевой трейдинг"

 
RusPro #:

На форексе те же ошибки. Брокер Альпари, тестовый счет. Символ EURUSD

Кастомный символ сделан на базе EURUSD, просто название оставил тоже 

Если речь идет о работе CopyTicks в Тестере, то я некомпетентен, т.к. никогда в Тестере историю тиков не запрашивал.

Могу говорить только за боевый режим.

 
prostotrader #:

А Вы доки до конца читаете?

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

Пинг тут не при чем, после первой закачки тики отдаются уже из базы, в теории конечно :)   Меня так учили - программу надо ускорять оптимизацией, а не аппаратной базой - это уже на автомате. Да и какая разница, какой коннект - сегодня один, завтра другой - это ж от алгоритма не зависит.

Кроме БКС у меня еще Открытие, Альпари и т.д.   везде есть нюансы. У меня задача сейчас обкатка математики на тиках, а не торговля или фриланс.

 
RusPro #:

А работа с динамическими массивами гораздо медленнее и приходится учитывать возможную фрагментацию памяти.

Просьба предоставить замеры по этому утверждению. Вопросам производительности в боевых советниках уделяю большую роль.

 
fxsaber #:

Если речь идет о работе CopyTicks в Тестере, то я не компетентен, т.к. никогда в Тестере историю тиков не запрашивал.

Могу говорить только за боевый режим.

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

 
RusPro #:

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

Да, если запросить тики в интервале, где их не было, то выдает не ноль, а за все сутки.

Такое ощущение, что это намеренно сделано. Но не знаю, для чего.


Расследование показало, что проблема возникает, когда From попадает на время после последнего тика торговой недели. По-моему, это баг.

На реальных и кастомных символах ведет себя идентично.


Очевидно, что если запрашивать тики с последнего тика предыдущего запроса, то проблема возникать не будет. Но вот если делать запрос с SymbolInfoTick_time_msc, то баг может проявиться. Поэтому лучше этого не делать пока.

 

fxsaber #:

Но вот если делать запрос с SymbolInfoTick_time_msc, то баг может проявиться. Поэтому лучше этого не делать пока.

Это уже проверено сколько раз?

Не нравится SymbolInfoTick используйте

int  CopyTicks( 
   string           symbol_name,           // имя символа 
   MqlTick&         ticks_array[],         // массив для приёма тиков 
   uint             flags=COPY_TICKS_ALL,  // флаг, определяющий тип получаемых тиков 
   ulong            from=0,                // дата, начиная с которой запрашиваются тики 
   uint             count=0                // количество тиков, поставьте 1
   );
CopyTicks

from

[in]  Дата, начиная с которой запрашиваются тики. Указывается в миллисекундах с 01.01.1970. Если параметр from=0, то отдаются последние count тиков.

 
Alexey Viktorov #:

Это уже проверено сколько раз?

Не нравится SymbolInfoTick используйте

Спасибо, отлично умею работать с тиками. Это не отменяет наличие бага.

 
Alexey Viktorov #:

Это уже проверено сколько раз?

Не нравится SymbolInfoTick используйте

это проверено уже два года!

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

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