Тестер, поддерживающий МГ4-скрипты и советников - страница 11

 
Renat:

У CopyXXX такая же скорость как и у iClose/iOpen/iXXXX функций. Только iXXX возвращает по одному элементу, а CopyXXX - множество и тем самым более эффективная и производительная.

Вероятно, вы не учитываете, что в МТ4 работает принудительное копирование _всей_ истории локального чарта в локальное(кеш) рыночное окружение эксперта перед каждым запуском обработчика тиков. А это очень дорого, хотя у нас есть метод экономного обновления этой информации. Специальная функция RefreshRates из MQL4 как раз и вызывает принудительное обновление кешей и истории локального чарта.

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

Если сравнивать старые методы "прямого" (на самом деле там не прямой доступ) доступа Open/High/Low/Close и работу с локальным массивом double local[xxxx], то последний в разы быстрее. Поэтому лучше копировать к себе локально, а потом иметь быстрый локальный доступ к многократно  запрашиваемым данным.

Что понимается под "обработчиком тиков" - пользовательские функции типа OnTick? Почему требуется копировать всю историю а не лишь появившиеся данные?
 
Vinin:
Это не индикатор
Здесь давал ссылку на ООП-индикатор.
 
C-4:
Что понимается под "обработчиком тиков" - пользовательские функции типа OnTick? Почему требуется копировать всю историю а не лишь появившиеся данные?

Да, OnTick/OnStart.

Я так понимаю, для многих стало откровением, что прямой доступ к локальному чарту в МТ4 не совсем прямой. Там двойной расход памяти и потери на синхронизации.

К счастью, у нас экономное обновление кеша, но это все равно дает системные расходы. В МТ5 мы полностью избавились от локального кеша и системный оверхед перед вызовом OnTick/OnStart меньше.

 
Renat:

Да, OnTick/OnStart.

Я так понимаю, для многих стало откровением, что прямой доступ к локальному чарту в МТ4 не совсем прямой. Там двойной расход памяти и потери на синхронизации.

К счастью, у нас экономное обновление кеша, но это все равно дает системные расходы. В МТ5 мы полностью избавились от локального кеша и системный оверхед перед вызовом OnTick/OnStart меньше.

Год назад обсуждали производительность тестеров МТ4/MT5. Стандартный советник "MovingAverage" в МТ4 при аналогичных условиях тестирования отработал единичный прогон за минуту, тогда как в МТ5 за 2:34. Из-за чего можете объяснить такую разницу во времени? Первое, что приходит на ум "модульность" МТ5 и большой объем торгового окружения который приходится тянуть МТ5 при прогоне.
 
C-4:
Год назад обсуждали производительность тестеров МТ4/MT5. Стандартный советник "MovingAverage" в МТ4 при аналогичных условиях тестирования отработал единичный прогон за минуту, тогда как в МТ5 за 2:34. Из-за чего можете объяснить такую разницу во времени? Первое, что приходит на ум "модульность" МТ5 и большой объем торгового окружения который приходится тянуть МТ5 при прогоне.

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