Недокументированные... (ошибки, возможности...) МТ5

 

1. Возникла "какая-то" ошибка при оптимизации ("some error after pass finished") о которой на форуме есть упоминания, но решения нет:

2019.05.13 09:21:29.070 Core 1  genetic pass (26, 282) tested with error "some error after pass finished" in 0:00:00.387
2019.05.13 09:21:29.079 Tester  Best result 344.8808 produced at generation 22. Next generation 27
2019.05.13 09:21:35.731 Core 8  genetic pass (27, 489) tested with error "some error after pass finished" in 0:00:00.528
2019.05.13 09:21:35.731 Core 8  genetic pass (27, 493) tested with error "some error after pass finished" in 0:00:00.012
2019.05.13 09:21:35.732 Core 8  genetic pass (27, 498) tested with error "some error after pass finished" in 0:00:00.535
2019.05.13 09:21:36.237 Core 2  genetic pass (27, 290) tested with error "some error after pass finished" in 0:00:00.532
2019.05.13 09:21:36.237 Core 2  genetic pass (27, 299) tested with error "some error after pass finished" in 0:00:00.534
2019.05.13 09:21:36.840 Core 4  genetic pass (27, 344) tested with error "some error after pass finished" in 0:00:00.534
2019.05.13 09:21:37.217 Core 7  genetic pass (27, 440) tested with error "some error after pass finished" in 0:00:00.529
2019.05.13 09:21:37.695 Core 3  genetic pass (27, 310) tested with error "some error after pass finished" in 0:00:00.536
2019.05.13 09:21:37.695 Core 3  genetic pass (27, 317) tested with error "some error after pass finished" in 0:00:00.537
2019.05.13 09:21:37.706 Tester  Best result 344.8808 produced at generation 22. Next generation 28
2019.05.13 09:21:43.756 Core 3  genetic pass (28, 350) tested with error "some error after pass finished" in 0:00:00.012
2019.05.13 09:21:44.327 Core 8  genetic pass (28, 511) tested with error "some error after pass finished" in 0:00:00.548

Ответ - надо искать критическую ошибку (например, деление на 0) в OnTester() 

================

2. Как программно отловить конечную дату оптимизации?

 
А что мешает запустить код в отладчике и выполнение остановится ровно в том месте где произошла такая критическая ошибка, например деление на 0 точно останавливает с сообщением. И есть возможность посмотреть откуда получается 0 в делителе.
 
Сергей Таболин:

1. Возникла "какая-то" ошибка при оптимизации ("some error after pass finished") о которой на форуме есть упоминания, но решения нет:

Ответ - надо искать критическую ошибку (например, деление на 0) в OnTester() 

Скорее в деструкторах Ваших классов.

Это - ошибка глобальной деинициализации после OnTester и после OnDeinit

В том случае, который Вы предполагаете, была бы запись "critical error in OnTester function"

 
Slava:

Скорее в деструкторах Ваших классов.

Это - ошибка глобальной деинициализации после OnTester и после OnDeinit

В том случае, который Вы предполагаете, была бы запись "critical error in OnTester function"

К сожалению, такой записи нет, а есть именно та, которую я привёл. Ошибка в OnTester() возникала при делении прибыльных трейдов на убыточные. Само собой, если убыточных нет, то получалось деление на 0.

При компиляции такую ошибку определить невозможно, а при выполнении "critical error in OnTester function" почему то не прописывается.

 
Alexey Viktorov:
А что мешает запустить код в отладчике и выполнение остановится ровно в том месте где произошла такая критическая ошибка, например деление на 0 точно останавливает с сообщением. И есть возможность посмотреть откуда получается 0 в делителе.

А как оно остановится, если этот 0 не появится? )))

 
Сергей Таболин:

К сожалению, такой записи нет, а есть именно та, которую я привёл. Ошибка в OnTester() возникала при делении прибыльных трейдов на убыточные. Само собой, если убыточных нет, то получалось деление на 0.

При компиляции такую ошибку определить невозможно, а при выполнении "critical error in OnTester function" почему то не прописывается.

Проверим это поведение

 
Slava:

Проверим это поведение

Спасибо.

А по второму вопросу ничего не подскажете?

 
2019.05.13 09:21:29.070 Core 1  genetic pass (26, 282) tested with error "some error after pass finished" in 0:00:00.387

Общаясь с кем-то/чем-то всегда хочется его понимать. Что означает: 1. "Core 1"; 2. "282"; 3. "in 0:00:00.387" ? 

 
Алексей Тарабанов:

Общаясь с кем-то/чем-то всегда хочется его понимать. Что означает: 1. "Core 1"; 2. "282"; 3. "in 0:00:00.387" ? 

Я не спец, но

  1. Агент 1
  2. Потомок (?)
  3. Время прохода

 
Сергей Таболин:

Я не спец, но

  1. Агент 1
  2. Потомок (?)
  3. Время прохода

Допустим. Агент и потомок могут быть полезны разработчикам; а время прохода кому нужно? Может, на номер оператора в коде заменить? 

Сергей, это, конечно, не Вам. Может, разработчики изменят... 

 

Вот ещё одна непонятка...

Прогнал оптимизацию. Экспортировал кэш-файл оптимизации. Подправил советник, точнее кое что в OnTester. Опять прогнал оптимизацию. Всё хорошо. И тут я решил вернуть предыдущий кэш. Импортировал его. Запускаю оптимизацию и получаю это:


Это не критично, но ошибка очевидна. Выбранная оптимизация НЕ была выполнена на неттинговом счёте! Более того, на этом сервере вообще нет неттинга. 

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