Поведение индикатор в тестере и оптимизаторе в контексте OnInit.

 

Есть эксперт, он вызывает индикатор. В индикаторе в OnInit идет контроль входных параметров. Для плохих параметров возвращается INIT_FAILED.

При возврате INIT_FAILED из индикатора тестер стратегий почему то не останавливается и продолжает упорно вызывать индикатор с теми жепараметрами.

Как бы поправить такое поведение, чтобы при тестировании или оптимизации эксперта и вызове индикатора из эксперта при возврате INIT_FAILED из индикатора тестер стратегий или оптимизатор останавливался?

Или подскажите - как программно остановить тестер или оптимизатор?

 
RickD:

Есть эксперт, он вызывает индикатор. В индикаторе в OnInit идет контроль входных параметров. Для плохих параметров возвращается INIT_FAILED.

При возврате INIT_FAILED из индикатора тестер стратегий почему то не останавливается и продолжает упорно вызывать индикатор с теми жепараметрами.

Как бы поправить такое поведение, чтобы при тестировании или оптимизации эксперта и вызове индикатора из эксперта при возврате INIT_FAILED из индикатора тестер стратегий или оптимизатор останавливался?

Или подскажите - как программно остановить тестер или оптимизатор?

Сделать аналогичную проверку параметров в советнике. Раз советник использует индикатор, значит, создателю советника должна быть известна суть индикатора (что он отображает и вычисляет) и, тем более, известны интервалы допустимых значений для настроечных параметров этого индикатора.
 
Scriptong:
Сделать аналогичную проверку параметров в советнике. Раз советник использует индикатор, значит, создателю советника должна быть известна суть индикатора (что он отображает и вычисляет) и, тем более, известны интервалы допустимых значений для настроечных параметров этого индикатора.

А нет такой возможности. Индикатор передается пользователям и его внутренняя логика не будет являться публичной информацией.

Например индикатор при инициализации обрабатывает какой то массив данных из внешнего источника и при его несоответствии ругается.

По логике - красиво и удобно останавливать тестер и делать перескок к следующей итерации в оптимизаторе - если индикатор вернул INIT_FAILED.

 
RickD:

А нет такой возможности. Индикатор передается пользователям и его внутренняя логика не будет являться публичной информацией.

Все равно не понимаю. Если автор индикатора Вы, и Вы передаете его другим пользователям, то почему нельзя описать пределы допустимых значений настроечных параметров? Это нормально.

Если же автор не Вы (и не имеете возможности заглянуть в код), но пишите советник, который использует данный индикатор, то должны представлять себе, каким образом работает этот индикатор хотя бы на уровне корректности исходных данных, подаваемых на вход этого индикатора.

Если же работа ведется с "черным ящиком", то это очень странное времяпрепровождение ))

 

1. В эксперте анализируйте код последней ошибки после того, как получили нулевое значение iCustom

2. Первый вызов iCustom сделайте в OnInit эксперта. При ошибке после iCustom возвращайтесь из OnInit с кодом INIT_FAILED. Тогда тестирование эксперта производиться не будет

3. Не забывайте использовать #property strict в своих программах (экспертах и индикаторах)

 
Scriptong:

Все равно не понимаю. Если автор индикатора Вы, и Вы передаете его другим пользователям, то почему нельзя описать пределы допустимых значений настроечных параметров? Это нормально.

Если же автор не Вы (и не имеете возможности заглянуть в код), но пишите советник, который использует данный индикатор, то должны представлять себе, каким образом работает этот индикатор хотя бы на уровне корректности исходных данных, подаваемых на вход этого индикатора.

Если же работа ведется с "черным ящиком", то это очень странное времяпрепровождение ))


Один из примеров. Индикатор при инициализации открывает файл и обрабатывает некоторые динамические данные. Если данные не отвечают некоторым динамическим критериям - индикатор ругается и прекращает тестирование эксперта.

 
stringo:

1. В эксперте анализируйте код последней ошибки после того, как получили нулевое значение iCustom

2. Первый вызов iCustom сделайте в OnInit эксперта. При ошибке после iCustom возвращайтесь из OnInit с кодом INIT_FAILED. Тогда тестирование эксперта производиться не будет

3. Не забывайте использовать #property strict в своих программах (экспертах и индикаторах)

Не очень простое решение. Например у меня купят 100 индикаторов. Потом закажут разработку эксперта сторонним разработчикам. И тут начнутся сложности. Скажут - индикатор не работает.
Причина обращения: