Анализ результатов тестов и оптимизации в тестере стратегий MetaTrader 5 - страница 11

 

Подскажите, что вот это за ошибка


 
Ilya Malev #:

видел и такую и такую ситуацию в тестере

Видел только одну - ордер исполняется по цене тика.
[Удален]  
Ilya Malev # Странно, я только загрузил тики из источника в пользовательский инструмент, и сразу открыл на нем графики, они все сгенерировались автоматически. Я загружал тики через стандартное меню Ctrl+U.

Мое объяснение относилось к загрузке тиков через MQL5-код, а не через пользовательский интерфейс (т.е. Ctrl-U). Впрочем, я могу ошибаться, так как не тестировал это на более новых сборках MetaTrader.

[Удален]  
Ilya Malev # Подскажите, пожалуйста, что это за ошибка?

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

 
Fernando Carreiro #:

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

В противном случае вы не сможете использовать Custom Symbol для генерации "Renko", "Constant Range Bars", "Constant Volume Bars" или любого другого типа пользовательских графиков.

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

Фернандо Каррейро #:

Мое объяснение относилось к загрузке тиков через MQL5-код, а не через пользовательский интерфейс (т.е. Ctrl-U). Однако я могу ошибаться, поскольку не тестировал это на более новых сборках MetaTrader.

Добавление тиков к пользовательскому символу всегда должно правильно обновлять или создавать соответствующие бары. Обычно не нужно генерировать курсы в дополнение к тикам. Но вы правы, что может потребоваться исправление специальных баров, таких как renko (поскольку они не являются стандартными барами).

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

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

NB: читайте оригинальный пост на английском языке.

[Удален]  
Stanislav Korotky # Добавление тиков к пользовательскому символу должно всегда правильно обновлять или создавать соответствующие бары. ... Если вы видите, что в некоторых случаях это не так, сообщите об ошибке. К сожалению, пользовательские символы в MT5 подвержены ошибкам.

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

В те разы, когда я генерировал пользовательские символы из тиков, я никогда не замечал, чтобы бары генерировались автоматически. Возможно, я был не слишком внимателен, поэтому в следующий раз я сделаю это, чтобы убедиться. Спасибо за исправление!

Оригинальный текст на английском языке!

 
Fernando Carreiro #:

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

Оригинальный текст на английском языке!

Вы можете проверить этот вопрос, например, с помощью скрипта CustomSymbolFilterTicks.mq5 из книги по алготрейдингу. Скрипт генерирует пользовательский символ с отфильтрованным подмножеством тиков (с помощью вызовов CustomTicks* ), а API CustomRates* при генерации не задействован.
MQL5 Book: Advanced language tools / Custom symbols / Adding, replacing, and removing ticks
MQL5 Book: Advanced language tools / Custom symbols / Adding, replacing, and removing ticks
  • www.mql5.com
The MQL5 API allows you to generate the history of a custom symbol not only at the bar level but also at the tick level. Thus, it is possible to...
 
fxsaber #:
Уже не помню.
Проверил, совпадает: достаточно использования только одной CustomTicksReplace.
Библиотеки: TicksShort
Библиотеки: TicksShort
  • 2025.09.26
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: TicksShort
 

На сервере с 12 потоками и 128 Гб оперативки, при оптимизации в режиме "Каждый тик на основе реальных тиков", с 2019 года по сейчас, прогоны стали сыпаться из-за недостатка оперативки. Тестер правда загружает на каждом ядре всю историю реальных тиков в память одним куском? При том, что она гарантированно одинаковая для всех потоков, и используется только локальные агенты, сеть и облако не используется. Т.е. необходимо и достаточно один раз в память загрузить эти котировки и далее к ним обращаться из всех потоков в режиме чтения. Но нет, похоже это так не работает. 

Отключил 7 потоков из 12, все пошло нормально

 
Ilya Malev #:

Тестер правда загружает на каждом ядре всю историю реальных тиков в память одним куском?

Недавно описывал работу с памятью в режиме оптимизации. Возможно, там несколько вариантов.

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

В частности, для этого сделан EAToMath. Там при любом размере истории (только для одного символа) и количестве ядер памяти будет всегда хватать на все.

Работа MT5-тестера с RAM/Disk.
Работа MT5-тестера с RAM/Disk.
  • 2025.09.01
  • www.mql5.com
Многоядерный MT5-тестер имеет свои особенности работы с памятью и диском, знание которых дает понимание его ограничений на запускаемых конфигурациях и объясняет некоторые возникающие ошибки во время