Новая версия платформы MetaTrader 5 build 1595: доступ к ценовой истории - страница 7

 
MetaQuotes Software Corp.:

Обновитесь до 1596 билда с сервера MetaQuotes-Demo, пожалуйста.

Эти ошибки уже исправлены.
Этот советник теперь проходит одиночный прогон.
EURUSD,M1: 7751877 ticks, 57434 bars generated. Test passed in 0:05:30.192 (including ticks preprocessing 0:00:00.936).

Но за 5.5 минут! А теперь, внимание, фокус! Комментируем HistorySelect

//      HistorySelect(TimeCurrent()-60*60,TimeCurrent());

И прогон выполняется

EURUSD,M1: 7751877 ticks, 57434 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:13.167 (including ticks preprocessing 0:00:00.936).

в 25 раз быстрее!

Тестер и HistorySelect не совместимы. Нужно статью писать разработчикам, как историю кэшировать. Но на самом деле требуется менять подходы работы с историей.

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

Ошибки, баги, вопросы

fxsaber, 2017.04.20 09:11

если в терминале и так есть история, то почему к ней обязываете обращаться через HistorySelect, а не по принципу MT4 - SELECT_BY_POS? И что совсем непонятно, зачем HistoryDealGet* реализован через тикет с соответствующей O(N), когда логично опять же через SELECT_BY_POS?


Очень интересные записи

HistoryDealGetInteger(DealTicket, DEAL_TICKET);
HistoryOrderGetInteger(OrderTicket, ORDER_TICKET);

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

Ошибки, баги, вопросы

fxsaber, 2017.04.21 07:51

Просто для того, чтобы узнать количество совершенных сделок (терминал всегда знает это число), необходимо зачем-то вызывать дорогую HistorySelect. Возможно ли несколько улучшить работу с историей?
 
fxsaber:
Этот советник теперь проходит одиночный прогон.

Но за 5.5 минут! А теперь, внимание, фокус! Комментируем HistorySelect

И прогон выполняется

в 25 раз быстрее!

Тестер и HistorySelect не совместимы. Нужно статью писать разработчикам, как историю кэшировать. Но на самом деле требуется менять подходы работы с историей.


А чего у вас так не оптимально, что каждый раз 60 на 60 умножается, если можно вписать сразу 3600?
 
Yury Golyakov:

А чего у вас так не оптимально, что каждый раз 60 на 60 умножается, если можно вписать сразу 3600?
Без разницы. Константные выражения вычисляются на этапе компиляции
 
Renat Fatkhullin:

Извините, пожалуйста.

Сегодня будет новый билд с исправлениями.

Билд 1596. Тест по "Все тики" за 4 месяца. Двойной клик во вкладке "Бектест" при открытом чарте не приводит к перемещению к соответсвующей сделке. Перемотал историю сделок ближе к середине - начинает работать двойной клик на сделке.

Раньше такого не было.

 

видно, не всё поправили - у меня эксперт так и не стал тестироваться на 1596 :(

придётся копать тысячу строк

 
fxsaber:
Этот советник теперь проходит одиночный прогон.

Спасибо, всё работает, и оригинальный советник из которого был выдран код тоже работает. 


Yury Golyakov:

А чего у вас так не оптимально, что каждый раз 60 на 60 умножается, если можно вписать сразу 3600?
Это наследие другого кода - там было 24*60*60. Потому что так сразу понятно что это 24 часа. А если написать вместо этого 86400, то я в будущем не сразу пойму что это было за число. Забота.
 
Dr.Trader:

Спасибо, всё работает, и оригинальный советник из которого был выдран код тоже работает. 


Это наследие другого кода - там было 24*60*60. Потому что так сразу понятно что это 24 часа. А если написать вместо этого 86400, то я в будущем не сразу пойму что это было за число. Забота.
))) А что мешает написать PeriodSeconds(PERIOD_D1);
 
vito333:

видно, не всё поправили - у меня эксперт так и не стал тестироваться на 1596 :(

придётся копать тысячу строк

Логи тестирования посмотрите\приложите.

Какую ошибку или сообщение в логах получаете?

Каким билдом скомпилирован советник?

 

В 1596 та же петрушка.

Ребят, алгоритмической частью терминала - а именно это его отличает от остальных - нельзя пользоваться. Откатите все изменения до предыдущей рабочей версии, так будет проще всего.

 
SeriousRacoon:

В 1596 та же петрушка.

Ребят, алгоритмической частью терминала - а именно это его отличает от остальных - нельзя пользоваться. Откатите все изменения до предыдущей рабочей версии, так будет проще всего.

Что именно у вас не работает?

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

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