Функция TesterStop()

 

описание данной функции можно почитать тут

Вопрос - предназначена ли данная функция для оптимизации советника?

Краткая история возникновения вопроса:

Итак придумал как то я советника , и всё было в нём хорошо. И работал он как в нём закодировано было , да вот беда - не был он оптимизирован под валютные пары всякие разные. Но как говорится хвала "тестеру оптимизации творящему" данную беду казалось бы можно было бы поправить... и вроде бы всё должно работать после оптимизации чудесненько , но не тут то было дело - результаты форвард тестирований оказались совсем печальными и не интересными, да ещё и по времени много забиралось. Решено было воспользоваться OnTester() и попробовать улучшить результаты. Сказано - сделано... оптимизируемся , радуемся.... шли часы... дни... и стало понятно что не всё так быстро как хотелось бы и на до бы оптимизировать работу советника. Но ничего положительного без ущерба функционалу советника сделать не получалось и тут на глаза попалась функция TesterStop(). Недолго покумекав стало понятно что теоретически эта функция поможет мне подрезать время тестирования исходя из тех пользовательских критериев что использовались в OnTester()(например если текущая просадка ниже определённого значения - то можно завершить тестирование). И вроде бы всё хорошо , но появилось одно громадное НО. Тестер перестал работать, на первый взгляд... На второй взгляд он тоже не работал.. но после изучения журнала тестирования стало ясно что он зациклился т.к. пытался снова и снова запустить сет на котором результат не устраивает меня.

 Цикличность TesterStop()

Печаль постигла меня и пыталась одолеть меня , но т.к. страничка с описанием TesterStop() не была закрыта там была найдена другая функция - ExpertRemove(). И использовав её я получил то что и хотел. Тестер не циклился на бесполезных результатах и пропускал полное тестирование на неугодных результатах. Зачем тогда было писать "Поэтому для досрочного штатного завершения тестирования использование TesterStop() является наиболее предпочтительным вариантом." если он некорректно работает непонятно. Но в ExpertRemove() есть недостаток - если данную функцию использовать на рабочем счёте , то при наступлении события советник естественно выгрузится , что не является хорошо.

Всё это было замечено на терминале билда 1940 за 2 ноября 2018 года от рождества Христова.

Условие использования:

if(OrderCheck(trdreq,trdres))
        {
         if(trdres.margin_free>0)
           {
            posopened=true;
            trade.Buy(lot,currsymbol,SymbolInfoDouble(currsymbol,SYMBOL_ASK),NULL,NULL,"spamer");
            Result=trade.ResultRetcode();
            ResetLastError();
           }
         else
           {
            Print("668.No money for open BUY position");
            if(!stat_noMoneyForIncrease) stat_noMoneyForIncrease=true;
            if(exit_if_nomoney) TesterStop();//ExpertRemove();
           }
        }

где exit_if_nomoney - булевая инпут переменная для включения отключения выхода без перекомпиляции.

 

можно добавить впереди

bool IsTester()
  {
   return((bool)MQLInfoInteger(MQL_TESTER));
  }
 
Oleg Peiko:

Я бы вас забанил за кричащее неуважение на техническом форуме - сказочным языком размусоливать проблему, которая уместится в одно предложение. Прикольно? - Нет, противно!

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

 
fxsaber:

1940

это вроде последний релизный билд

 
fxsaber:

Я бы вас забанил за кричащее неуважение на техническом форуме - сказочным языком размусоливать проблему, которая уместится в одно предложение. Прикольно? - Нет, противно!

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

Обожаю таких серьёзных голословов:

1. Пункт правил для бана в студию !!!

2. Результат поиска по TesterStop()!!!

3. Версию последнего билда в студию!!!

4. А сам то чем лучше ? Пусть даже в моей новогодней сказке 10% полезной информации. Но в вашей 0% , а за это было бы хорошо пробанить как за флуд.

 
Fast528:

это вроде последний релизный билд

Релиз от беты ничем не отличается, когда речь заходит о новых функциях.

 
Fast528:

можно добавить впереди

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

 
Oleg Peiko:

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

поиск говорит, что в этой ветке обсуждался этот или подобный баг с этой функцией

https://www.mql5.com/ru/forum/285631/page56#comment_9778708

подключись к серверу MQ DEMO загрузится последняя бета версия

или Справка-проверить обновление ( не помню с какого билда появилась фишка)
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
  • 2018.12.05
  • www.mql5.com
26 октября 2018 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Oleg Peiko:

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

Вам уже подсказали, что Вы пользуетесь не тем билдом.

В официальном билде 1940 Вы не сможете в полной мере воспользоваться функцией TesterStop из-за ошибки, которая тут уже обсуждалась, но Вы почему-то не нашли

 
Slava:

Вам уже подсказали, что Вы пользуетесь не тем билдом.

В официальном билде 1940 Вы не сможете в полной мере воспользоваться функцией TesterStop из-за ошибки, которая тут уже обсуждалась, но Вы почему-то не нашли

А вы находите что очень здорово и логично обсуждать в теме "Новая версия платформы MetaTrader 5 build 1930" , билд который выше версией? Может быть правильнее было бы сделать changelog или более живые релизноты в которых до сих пор последняя версия 1930. Я не кашпировский что бы угадывать что нового в ОФИЦИАЛЬНОМ БИЛДЕ и что есть ещё бета версии в которой что то правится или уже исправилось. Кто то тут меня отчитывал за размусоленность описаний и то что гадко всё что я делаю, однако ОФИЦИАЛЬНОЙ информации НЕТ(!!!) всё на уровне пользователей. Даже сервисдеск и тот похерили и свели всё к 4 строчкам которые касаются оплаты сервисов. И ничего типа багтрекера или хоть чего то куда можно обратиться по багам, а искать по форумам.... ну это уже перебор.

Что нового в MetaTrader 5?
Что нового в MetaTrader 5?
  • www.metatrader5.com
MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 Terminal Теперь вы можете выносить графики финансовых инструментов за пределы окна торгового терминала. Это удобно при работе с несколькими мониторами. Например, на одном можно расположить основное окно платформы и следить за состоянием счета, а на другом — графики для...
Файлы:
 
Oleg Peiko:

А вы находите что очень здорово и логично обсуждать в теме "Новая версия платформы MetaTrader 5 build 1930" , билд который выше версией? Может быть правильнее было бы сделать changelog или более живые релизноты в которых до сих пор последняя версия 1930. Я не кашпировский что бы угадывать что нового в ОФИЦИАЛЬНОМ БИЛДЕ и что есть ещё бета версии в которой что то правится или уже исправилось. Кто то тут меня отчитывал за размусоленность описаний и то что гадко всё что я делаю, однако ОФИЦИАЛЬНОЙ информации НЕТ(!!!) всё на уровне пользователей. Даже сервисдеск и тот похерили и свели всё к 4 строчкам которые касаются оплаты сервисов. И ничего типа багтрекера или хоть чего то куда можно обратиться по багам, а искать по форумам.... ну это уже перебор.

у меня на поиск ушло 20 сек, а ты текст сколько времени вбиваешь в каждый пост? Энергию нужно направлять нужное русло) это признак хорошей взвешенности

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