Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 71

 
Alain Verleyen:
Build 1959. Подпапки расположены в обратном алфавитном порядке. Пожалуйста, проверьте.


Подтверждаю

 
Renat Fatkhullin:

Визуальный тестер будем апгрейдить вместе с тестером.


Сегодня выпустили бету 1959, доступна по Help -> Check updates

@Renat Fatkhullin

О применении шаблонов в тестере с визуализацией:

В стратегии используются два индикатора MovingAverages с разными параметрами. Для удобства был написан пользовательский индикатор с типом DRAW_FILLING по значениям этих iMA, но в советнике этот индикатор не используется. Советник использует два индикатора iMA. Затем был создан шаблон Debug.tpl с графика на котором установлен этот пользовательский индикатор. В момент запуска отладки на исторических данных этот шаблон игнорируется.

Затем был создан шаблон с именем Tester.tpl и вновь запущена отладка на исторических данных. Шаблон Tester.tpl был удачно применён, НО... поверх этого шаблона были подключены два индикатора iMA используемые в советнике.

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

Но всё-же основной посыл этого сообщения в том, что при запуске отладки на исторических данных применяется шаблон не Debug.tpl, а Tester.tpl.

 
Когда профилирование на истории почините?
 
Renat Fatkhullin:
В новой версии в связи с добавлением SocketXXX функций мы вообще игнорируем имя протокола. http и https становятся незначащими.

Билд 1940 возвращает ошибку 1001 на WebRequest. Как искать ошибку и как с ней бороться?

 

Работая над проектом, связанным с большим количеством объектов графиков, я заметил эту проблему: при удалении большого количества объектов вручную MT5 зависает.

Я использовал Ctrl + A, чтобы выбрать все, затем нажмите кнопку Удалить. Наконец, понадобилось 3 минуты, чтобы удалить все объекты .

По коду проблем нет:

         int objects= ObjectsDeleteAll ( 0 ,CHART_OBJ_PATTERN);
         printf ( "DEBUG: %s %i objects deleted with pattern %s" , __FUNCTION__ ,objects,CHART_OBJ_PATTERN);

2018.12.10 11:02: 49.212 XYZ DEBUG: индикатор удален с графика.
2018.12.10 11:02: 49.941 Отладка по XYZ: объекты OnDeinit 402902 удалены с шаблоном TS_131726726208823083

Заняло всего 0,7 секунды.

 
Renat Fatkhullin :

Постараемся.

Это искуственное ограничение по всей видимости.

Хорошо работает в Build 1959.


Спасибо

 
Renat Fatkhullin:

У вас несколько погрешностей:

  1. Нельзя тестировать CopyXXX функции из индикаторов, так как в индикаторах отдается только то, что есть без контроля полноты данных
  2. Не проверяются результаты операций
  3. Месячные данные на многих инструментах в МТ4 в урезанном виде, так что не всегда можно получить запрошенные 500 MN баров

Я переписал пример в виде скрипта, уменьшил MN до 250 баров, добавил проверки и вывод информации об окружении.

Вот результаты на последних бетах MT4 1150 (доступно на MetaQuotes-Demo) и MT5 1959: данные в микросекундах


Новые результаты после сегодняшних оптимизаций, которые будут доступны в следующей бета-версии на днях:

 MT4
MT5
Холодный запуск
5 symbols, 100000 max bars:
    EURUSD
    USDCHF
    USDCAD
    GBPUSD
    USDJPY
Iteration 1: took 36085 msc for 5 symbols
Iteration 2: took 155 msc for 5 symbols
...
Iteration 100: took 138 msc for 5 symbols
Total: 51442 msc

5 symbols, 100000 max bars:
    EURUSD
    USDCHF
    USDCAD
    GBPUSD
    USDJPY
Iteration 1: took 552687 msc for 5 symbols
Iteration 2: took 307995 msc for 5 symbols
...
Iteration 100: took 125 msc for 5 symbols
Total: 874137 msc  (было 1434053 msc)

Горячий запуск
Iteration 1: took 235 msc for 5 symbols
Iteration 2: took 138 msc for 5 symbols
...
Iteration 100: took 136 msc for 5 symbols
Total: 15524 msc

Iteration 1: took 273 msc for 5 symbols
Iteration 2: took 128 msc for 5 symbols
...
Iteration 100: took 123 msc for 5 symbols
Total: 13772 msc (было 21456 msc)

По горячему в CopyRates MT5 обогнал MT4 на 2 мс. оптимизация удалась.

Я забыл сразу объяснить важную особенность хранения данных баров в МТ5. В МТ5 бары хранятся в виде отдельных массивов Open, High, Low, Close, Volume. Это означает, что для создания MqlRates бара в функции CopyRates нам нужно собирать структуру ценового бара из множества массивов.

Это заведомо дороже, чем просто выдать готовый бар, как это доступно в MT4. Но и это мы сделали быстрее.


Почему у нас разделены массивы данных в МТ5? Потому что так эффективнее работать и особенно для отдельных функций CopyClose, CopyHigh, High[], Low[] и тд. Очень много мест, где используются конкретные показатели без необходимости обращений ко всему бару.

Давайте сравним скорость доступа CopyHigh в обоих системах. Сразу будем проверять горячие кеши:

 МТ4
МТ5
Горячий запуск CopyHigh
10 230 msc
2 862 msc

Вот тут явно видно преимущество Метатрейдер 5: в 3.5 раза быстрее выдает данные отдельных таймсерий.

Совет: не копируйте бары в пятерке, если нужно иметь только один показатель. Не переводите один в один код из четверки.

Файлы:
 
Renat Fatkhullin :
...
Действительно мило
 

Небольшая ошибка в цветах индикатора. Об этом сообщается на английском форуме. Я подтверждаю это, проверено в Build 1959, цвета теряются при смене аккаунта. Этого не происходит в Build 1940.

Форум по торговле, автоматизированным торговым системам и тестированию торговых стратегий

поддержка mt5, выпуски новостей об ошибках mt5 (1940+)

Земо , 2018.12.10 19:22

ошибка цвета все еще существует ...

mt5 Протестированная сборка 1959

- открыть новый пустой график

примечание: я использовал BB из "примеров", потому что я могу изменить цвета верхних / нижних / средних полос

Ошибка с использованием "примеров \ BB"
1) в индикаторах перейдите в «примеры» и добавьте «BB» на график
2) теперь меняем цвета "ББ" на разные цвета
3) Если я снова подключусь к своей учетной записи, «BB» перейдет к цветам по умолчанию ...


Ошибка с использованием "examples \ Custom Moving Average"
1) в индикаторах перейдите в «примеры» и добавьте «пользовательскую скользящую среднюю» на график
2) Теперь измените цвета «Пользовательского скользящего среднего» на разные цвета.
3) Если я повторно подключусь к своей учетной записи, «Пользовательское скользящее среднее» перейдет в ЦВЕТА ПО УМОЛЧАНИЮ ...


 
Renat Fatkhullin:

В МТ5 бары хранятся в виде отдельных массивов Open, High, Low, Close, Volume. Это означает, что для создания MqlRates бара в функции CopyRates нам нужно собирать структуру ценового бара из множества массивов.

Такое бы в Документацию.

Получается, что баровый чарт строится медленнее, чем, например, данные только по High и Low.