Архив версий МТ. - страница 5

 
Roman:

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

По этому пришла мысль, если эта функция корректно завершает выполнение программы, то почему бы её не использовать для TesterStop().
Жаль что она не срабатывает для TesterStop(), будем теперь знать об этом.
Хотя справедливо бы задать вопрос разработчикам, должна ли функция IsStopped() срабатывать для функции TesterStop() ?
Может это баг?

Но главное нашлось решение проблемы.

Я не говорил что она не срабатывает. Я говорил, что TesterStop() требует чтобы тест уже некоторое время отработал. )))

Возможно, после этого тоже будет срабатывать...
 
Сергей Таболин:

Я не говорил что она не срабатывает. Я говорил, что TesterStop() требует чтобы тест уже некоторое время отработал. )))

Возможно, после этого тоже будет срабатывать...

Теперь понял

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

Я всё понимаю  и костыли мне без надобности. А костыль пришлось искать вот тут почитайте для чего

Возможно. Но я что-то не припомню, чтобы на это кто-то жаловался. 

Можно пояснения

//+------------------------------------------------------------------+
double OnTester()
{
   if(tester_stop) return(нужное вам значение);

   остальной код
}

остальной код, это что? Что в этом коде выполняется?

 
Alexey Viktorov:

Можно пояснения

остальной код, это что? Что в этом коде выполняется?

Лично у меня там идёт расчёт стабильности роста баланса. ))) Как я уже говорил, собираюсь открыть обсуждение по этой теме.

А вообще, там можно считать что угодно.

 
Roman:

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

По этому пришла мысль, если эта функция проверяет факт принудительного завершения программы, то почему бы её не использовать для TesterStop().
Жаль что она не срабатывает для TesterStop(), будем теперь знать об этом.
Хотя справедливо бы задать вопрос разработчикам, должна ли функция IsStopped() срабатывать для функции TesterStop() ?
Может это баг?

Но главное нашлось решение проблемы.

Эта функция и предназначена для завершения таких циклов. Принудительное завершение программы это закрытие окна с экспертом или закрытие самого терминала. И если вы запустите бесконечный цикл без проверки функции IsStopped() то оставшийся в памяти цикл будет продолжать работать. Значение возвращаемое функцией IsStopped() позволяет прервать цикл в момент закрытия терминала. В остальных случаях она бесполезна, на сколько я понимаю.

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

Лично у меня там идёт расчёт стабильности роста баланса. ))) Как я уже говорил, собираюсь открыть обсуждение по этой теме.

А вообще, там можно считать что угодно.

Но ведь значение которое возвращает OnTester где-то обрабатывается?

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

 
Alexey Viktorov:

Но ведь значение которое возвращает OnTester где-то обрабатывается?

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

Это используется как результат оптимизации...


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

Это используется как результат оптимизации...


Это не использование, это отображение результата оптимизации.

 
Alexey Viktorov:

Это не использование, это отображение результата оптимизации.

Так в OnTester() как раз и рассчитывается этот самый результат. А использование... Я использую для оценки оптимизации...

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

Так в OnTester() как раз и рассчитывается этот самый результат. А использование... Я использую для оценки оптимизации...

Но ведь судя по этому куску кода

//+------------------------------------------------------------------+
double OnTester()
{
   if(tester_stop) return(нужное вам значение);

   остальной код
}
значение возвращённое из этой функции как-то должно обрабатываться. Какой прок от возврата "минус много девяток" если никакой реакции в дальнейшем коде на это не предусмотрено?