Ограничение срока работы индикатора в тестере (помогите) - страница 3

 
Ihor Herasko:

То есть это проще (а главное - быстрее; ведь дисковые операции самые быстрые в ПК), чем перебрать символы из обзора рынка, найти всего один отличающийся и обратиться к его нулевой свече? ))

раз уж злыдень начал  переводить часы на компьютере, лишь-бы улицезреть индикатор в тестере, то что его остановит удалить лишние символы из обзора рынка и даже удалить всю историю ? :-)

PS/ чтение оглавления каталога - штука почти моментальная. Оно кешируется ОС. А для рассматриваемого индикатора скорость вообще роли не играет - проверку времени достаточно делать 1 раз, только при запуске. 

 
Maxim Kuznetsov:

раз уж злыдень начал  переводить часы на компьютере, лишь-бы улицезреть индикатор в тестере, то что его остановит удалить лишние символы из обзора рынка и даже удалить всю историю ? :-)

PS/ чтение оглавления каталога - штука почти моментальная. Оно кешируется ОС. А для рассматриваемого индикатора скорость вообще роли не играет - проверку времени достаточно делать 1 раз, только при запуске. 

Символы можно добавить и программно (SymbolsSelect()). Ну а историю удалить не получится - терминал ее подкачает. Разве что интернет отрубить. Но тогда тестер не получит правильное рыночное окружение.

Насчет файлов вопрос простоты кода все равно остается. Ну и раз уже пошла такая пьянка (пользователь знает о всех защитах), то он может и файлы поудалять, оставив только старые.

 
Ihor Herasko:

Да вот никому, в том то и дело. Попробуйте запустить этот код в тестере сейчас. Он запустится, если дата начала  тестирования меньше, чем 16 сентября.

тогда это противоречит

Ihor Herasko:

Будет запускаться и после 16 сентября с. г.,если начало тестируемого периода будет хотя бы 15 сентября. ))  Это ведь тестер. В нем TimeCurrent() эмулируется.

 
Ihor Herasko:

Символы можно добавить и программно (SymbolsSelect()). Ну а историю удалить не получится - терминал ее подкачает. Разве что интернет отрубить. Но тогда тестер не получит правильное рыночное окружение.

Насчет файлов вопрос простоты кода все равно остается. Ну и раз уже пошла такая пьянка (пользователь знает о всех защитах), то он может и файлы поудалять, оставив только старые.

если пользователь удалит файлы включая верхние каталоги, то MetaTrader развернёт из своих глубин требуемую иерархию. От способа развёртывания зависит, но где-нить да звякнет дата-текущего-релиза :-)

предвижу следующий аргумент: супер-злодей может рекурсивно поменять даты во всех файлах. Или даже перед этим установить ОС в виртуалке, задав время 1970г и отключив сеть.. 

за такое упорство упомянутый индикатор можно подарить бесплатно: Доктор-зло будет сильно удивлён результатом своих усилий :-)

 
Maxim Kuznetsov:

если пользователь удалит файлы включая верхние каталоги, то MetaTrader развернёт из своих глубин требуемую иерархию. От способа развёртывания зависит, но где-нить да звякнет дата-текущего-релиза :-)

предвижу следующий аргумент: супер-злодей может рекурсивно поменять даты во всех файлах. Или даже перед этим установить ОС в виртуалке, задав время 1970г и отключив сеть.. 

за такое упорство упомянутый индикатор можно подарить бесплатно: Доктор-зло будет сильно удивлён результатом своих усилий :-)

Действительно, можно и подарить )) Было бы что дарить...

 
Renat Akhtyamov:

тогда это противоречит

Ihor Herasko:

Будет запускаться и после 16 сентября с. г.,если начало тестируемого периода будет хотя бы 15 сентября. ))  Это ведь тестер. В нем TimeCurrent() эмулируется.

Не понял, в чем противоречие? ТС хочет, чтобы при наступлении некой реальной даты индикатор не запускался даже в тестере, каким бы ни был период тестирования. Очевидно, что ни TimeCurrent(), ни TimeLocal() в этом деле не помогут, т. к. время эмулируется в тестере. Выше уже обсудили этот момент, но Вы в итоге приводите точно такое же решение, которое для ТС и так известно.

 
Ihor Herasko:

Не понял, в чем противоречие? ТС хочет, чтобы при наступлении некой реальной даты индикатор не запускался даже в тестере, каким бы ни был период тестирования. Очевидно, что ни TimeCurrent(), ни TimeLocal() в этом деле не помогут, т. к. время эмулируется в тестере. Выше уже обсудили этот момент, но Вы в итоге приводите точно такое же решение, которое для ТС и так известно.

может так можно: если тайм куррент доходить до определонному дату например 12,12,2020  автоматически сработает алгоритм и не дает работать тестеру.

например if Timecurrent > 12.12.2020   IsTesting and IsOptimization and IsVisualMode Просто не сработала. Чтобы даже тестер не смог получит  какую то дату

 
Ihor Herasko:

Не понял, в чем противоречие? ТС хочет, чтобы при наступлении некой реальной даты индикатор не запускался даже в тестере, каким бы ни был период тестирования. Очевидно, что ни TimeCurrent(), ни TimeLocal() в этом деле не помогут, т. к. время эмулируется в тестере. Выше уже обсудили этот момент, но Вы в итоге приводите точно такое же решение, которое для ТС и так известно.

if( (TimeCurrent() > Time    RunningStrategyTester = false;

НАПРИМЕР

 
Tabazhan_Dajhiov:

может так можно: если тайм куррент доходить до определонному дату например 12,12,2020  автоматически сработает алгоритм и не дает работать тестеру.

например if Timecurrent > 12.12.2020   IsTesting and IsOptimization and IsVisualMode Просто не сработала. Чтобы даже тестер не смог получит  какую то дату

Пока не понял, что спрашиваете.

Вот то, что я предлагал:

int OnCalculate(...)
{
   if (IsTesting())
   {
      string sAnotherSymbol = GetAnotherSymbol();
      if (sAnotherSymbol != "" && iTime(sAnotherSymbol, PERIOD_CURRENT, 0) > дата окончания)
         return 0; 
   }

// код индикатора


}

 
Если инет отрубить, и символ кастомный задачу не решить. Если в нормальном режиме, то действительно вопрос, а как получить реальное время тестирования, если все эмулируется. В журнале оно слева будет, Вот как его получить? Со свечами понятно, и красиво. А штатного метода нет, например для записи в файл?
Причина обращения: