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

 
Taras Slobodyanik:

справка МТ4 

TimeLocal
А код можете?
 
Tabazhan_Dajhiov:
Код можете писать?..  я новичок в этой теме

Получить время нулевой свечи:

iTime(<имя символа>, PERIOD_CURRENT, 0)

Чтобы имя символа не совпадало с именем текущего графика, нужно пройтись по символам из обзора рынка:

string GetAnotherSymbol()
{
   for (int i = SymbolsTotal() - 1; i >= 0; --i)
      if (Symbol() != SymbolName(i))
         return SymbolName(i); 

   return "";
}
Документация по MQL5: Предопределенные переменные / _Symbol
Документация по MQL5: Предопределенные переменные / _Symbol
  • www.mql5.com
_Symbol - Предопределенные переменные - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Tabazhan_Dajhiov:

Доброго времени суток. КАКОЙ КОД НУЖНО ДОБАВИТЬ ЧТОБЫ ИНДИКАТОР ПЕРЕСТАЛ РАБОТАТЬ В ТЕСТЕРЕ ЧЕРЕЗ МЕСЯЦ и болще никак сработал ? ТОЕСТЬ Я НАПИСАЛ ВСЁ ОК! НО КОГДА УЖЕ ДЕЛАЮ БЭКТЕСТ СНОВА РАБОТАЕТ. (мгл4)

( Да для этого есть отделная ветка но там не смог получить ответ--- https://www.mql5.com/ru/forum/160683 )

подтверждение работы тестера:

if(MQLInfoInteger(MQL_TESTER)==true)

тогда

int STOP;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
    STOP=1;
    datetime data=D'2020.09.16 20:07';  // Time Block
    if(TimeCurrent()>=data || MQLInfoInteger (MQL_TESTER )==true)  
    {
       Print("Демонстрационный период закончился, покупайте индикатор :)");
       Alert("Демонстрационный период закончился, покупайте индикатор :)");
       STOP=0;
       return(INIT_FAILED);
    } 
int start()
{
        if(STOP==0)return(0);
.....
}
 
Renat Akhtyamov:

подтверждение работы тестера:

тогда

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

 
Ihor Herasko:

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

при старте - создать файл, считать дату создания.

 
Ihor Herasko:

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

а это кому?

MQLInfoInteger (MQL_TESTER )==true

 
Renat Akhtyamov:

а это кому?

MQLInfoInteger (MQL_TESTER )==true

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

 
Maxim Kuznetsov:

при старте - создать файл, считать дату создания.

Нет защиты от смены TimeLocal().

 
Ihor Herasko:

Нет защиты от смены TimeLocal().

прочесть все элементы каталогов Files, Common, найти максимальную дату. И при этом она должна быть больше чем прошитое в индикатор время компиляции

 
Maxim Kuznetsov:

прочесть все элементы каталогов Files, Common, найти максимальную дату. И при этом она должна быть больше чем прошитое в индикатор время компиляции

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