Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Артем, так у меня голый файл из статьи https://www.mql5.com/ru/articles/1334#summary не компилируется под МТ4, под МТ5 все ок.
Зашибись! По какому-то наитию решил попробовать скомпилировать код из предыдущего поста под редактором из МТ5.
'TestUnion.mq4' TestUnion.mq4 1 1
0 error(s), 0 warning(s), compile time: 401 msec 1 1
!!!!!!!! И после этого они говорят, что компилятор МТ4 одинаковый в МТ4 и МТ5!!
Сейчас попробую и остальное там скомпилить
CDictionary в режиме MQL4 компилируется без ошибок и варнингов.
И тест тоже работает. Пипец, это значит, метаквоты вообще забили на МТ4, даже такие грубейшие ошибки не правят и не тестируют...Печально. Пишу в СД.
CDictionary в режиме MQL4 компилируется без ошибок и варнингов.
И тест тоже работает. Пипец, это значит, метаквоты вообще забили на МТ4, даже такие грубейшие ошибки не правят и не тестируют...Печально. Пишу в СД.
Мой прошлый пост видел?
CDictionary в режиме MQL4 компилируется без ошибок и варнингов.
И тест тоже работает. Пипец, это значит, метаквоты вообще забили на МТ4, даже такие грубейшие ошибки не правят и не тестируют...Печально. Пишу в СД.
Это же так просто - посмотреть номер билда и сопоставить с датой релиза, где была добавлена поддержка union - Новая версия платформы MetaTrader 5 build 1640: создание и тестирование собственных финансовых инструментов
Это же так просто - посмотреть номер билда и сопоставить с датой релиза, где была добавлена поддержка union - Новая версия платформы MetaTrader 5 build 1640: создание и тестирование собственных финансовых инструментов
Рашид, у меня почему-то МТ4 обновил терминал до последнего билда 1090, а вот редактор остался на 1061, который не понимает union. Я уже это нашел, просто написать не успел. Заменил на 1601, теперь все компилирует нормально.
И проверяем напоследок замечание Василия, что надо задавать емкость хеш-таблицы. Замечание верное, сильно влияет на скорость заполнения, что и понятно.
Без инициализации емкости
2018.02.22 23:08:01.702 TestHashTable (EURUSD,M5) Время добавления 10000000 элементов = 3.0796 сек, 0.3080 мкс/объект
2018.02.22 23:08:02.509 TestHashTable (EURUSD,M5) Время поиска 10000000 элементов = 0.8074 сек, 0.0807 мкс/объект
2018.02.22 23:08:03.061 TestHashTable (EURUSD,M5) Время удаления 10000000 элементов = 0.5512 сек, 0.0551 мкс/объект
2018.02.22 23:08:03.184 TestHashTable (EURUSD,M5) CheckDictVS()
2018.02.22 23:08:17.076 TestHashTable (EURUSD,M5) Время добавления 10000000 элементов = 13.8917 сек, 1.3892 мкс/объект
2018.02.22 23:08:21.074 TestHashTable (EURUSD,M5) Время поиска 10000000 элементов = 3.9984 сек, 0.3998 мкс/объект
2018.02.22 23:08:32.831 TestHashTable (EURUSD,M5) Время удаления 10000000 элементов = 11.7564 сек, 1.1756 мкс/объект
С инициализацией емкости
2018.02.22 23:09:46.894 TestHashTable (EURUSD,M5) CheckHashMap()
2018.02.22 23:09:47.617 TestHashTable (EURUSD,M5) Время добавления 10000000 элементов = 0.4631 сек, 0.0463 мкс/объект
2018.02.22 23:09:48.421 TestHashTable (EURUSD,M5) Время поиска 10000000 элементов = 0.8038 сек, 0.0804 мкс/объект
2018.02.22 23:09:48.996 TestHashTable (EURUSD,M5) Время удаления 10000000 элементов = 0.5754 сек, 0.0575 мкс/объект
2018.02.22 23:09:49.097 TestHashTable (EURUSD,M5) CheckDictVS()
2018.02.22 23:09:56.863 TestHashTable (EURUSD,M5) Время добавления 10000000 элементов = 7.6860 сек, 0.7686 мкс/объект
2018.02.22 23:10:01.175 TestHashTable (EURUSD,M5) Время поиска 10000000 элементов = 4.3118 сек, 0.4312 мкс/объект
2018.02.22 23:10:12.864 TestHashTable (EURUSD,M5) Время удаления 10000000 элементов = 11.6895 сек, 1.1690 мкс/объект
Да, все равно моя реализация в разы медленней как не крути. Нужно разбираться что там происходит профилировщике.
Да, посмотри конечно. Но пока буду твой класс использовать, так как нужен перебор. Сейчас вообще CList использую для хранения ордеров, надо что-то пошустрее и удобнее.
Покопаюсь в CHashMap, может там можно вынуть перебор наружу.
Да, посмотри конечно. Но пока буду твой класс использовать, так как нужен перебор. Сейчас вообще CList использую для хранения ордеров, надо что-то пошустрее и удобнее.
Просьба поделиться потом своими изысканиями в этой области. Пример, как делал
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
fxsaber, 2017.12.08 22:46
Решил посмотреть скоростные характеристики предложенного решения. Советник для тестера
Советник открывает 100 000 сделок, затем ищет суммарный профит случайных сделок разными методами (см. комментарии). Результат
Ну вот сравниваем два выделенных показателя. Получается, что HashMap-доступ в 4 раза быстрее того, что у разработчиков. Но у разработчиков он уже включает историю...
В 4 раза - много это или мало для данной ситуации? Ну здесь это 24 миллсекунды. Если очень много раз обращаться к истории, то, наверное, получится заметно сэкономить. Но не уверен.
Для более реального тестерного случая (2000 сделок и 1 000 000 единичных обращений к истории) результат выглядит так
Почти 100 мс экономии на проход! Если, допустим, делаем Оптимизацию на 10 000 полноценных проходов, то Hash-вариант закончится на 15 минут быстрее.
Разработчикам за реализацию работы с Историей твердую пятерку ставить пока рано. Видно, что могут ускорить, раз даже MQL-решение уделывает.
Результат
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
Renat Fatkhullin, 2017.12.08 23:19
Я посмотрел наш код - есть возможность оптимизировать вызовы к базе торговых операций. Попробуем к релизу на следующей неделе реализовать.
Очень хорошо будет, если сформируется оптимальное решение по скорости для Тестера.
Подскажите, пожалуйста, как реализовать хэш классов?
вот этот код не работает:
выдает ошибку: