Возможно ли добавить аналог ExpertRemove(), вызывающий немедленное завершение работы советника?

 
ExpertRemove() вызывает установку флага завершения работы советника и полностью завершает работу текущего цикла. Однако, например, при возникновении критической ошибки, необходимо немедленно прервать работу советника, по скольку в случае не предусмотренной ошибки, дальнейшее выполнение может оказаться опасным. На данный момент, приходится это делать через:
CObject* interrupt;
interrupt = NULL;
interrupt.Load(NULL);

То есть, вызывать обращение к nullptr и намерено вызывать краш советника. Однако, данный вариант - лютый костыль и не вызывает функции OnDeinit или OnTesterDeinit. Возможно ли в будущих версиях, добавление аналога этой функции с немедленным завершением работы советника и вызовом деинициализирущющих функций или специальной функции обработчика подобного вылета? Про исключительные ситуации молчу.

 

Вы такое и в тестер запускаете?

Это не костыль, а отключка мозга. Учтите, что крешашийся эксперт ловит штрафы, отменяет результаты прогонов и вообще все портит.

Завершайте расчеты и прописывайте полноценный правильный выход, а не бросайте эксперта с полными ресурсами без очистки.

 
DrSky:
ExpertRemove() вызывает установку флага завершения работы советника и полностью завершает работу текущего цикла. Однако, например, при возникновении критической ошибки, необходимо немедленно прервать работу советника, по скольку в случае не предусмотренной ошибки, дальнейшее выполнение может оказаться опасным. На данный момент, приходится это делать через:

То есть, вызывать обращение к nullptr и намерено вызывать краш советника. Однако, данный вариант - лютый костыль и не вызывает функции OnDeinit или OnTesterDeinit. Возможно ли в будущих версиях, добавление аналога этой функции с немедленным завершением работы советника и вызовом деинициализирущющих функций или специальной функции обработчика подобного вылета? Про исключительные ситуации молчу.

А TesterStop?

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