Ошибки, баги, вопросы - страница 2611

 
RickD:

В тестере нет папок и для экспертов. Но в случае тестирования эксперта MQLInfoString(MQL_PROGRAM_NAME) возвращает одинаковое значение.

А нужно мне одинаковое значение, чтобы связать тестируемую версию и версию на чарте с помощью именованных каналов.

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

В режиме отладки запускаю советник. Нужно сделать точку останова ровно в тот момент, когда руками сниму с чарта советник. Как это сделать?


Дело в том, что при снятии советника намертво вешается Терминал. Нужно понять, в каком месте это происходит.

 
fxsaber:

В режиме отладки запускаю советник. Нужно сделать точку останова ровно в тот момент, когда руками сниму с чарта советник. Как это сделать?

написал такой код:

int OnInit()
  {
     if(IsStopped()) DeInitEA(1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(IsStopped()) DeInitEA(2);

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsStopped()) DeInitEA(3);
  }
//+------------------------------------------------------------------+

void DeInitEA(const int callfunc)
{
   string s = "";
   switch (callfunc)
   {
      case 1: s = "OnInit"; break;
      case 2: s = "OnDeinit"; break;
      case 3: s = "OnTick"; break;
   }
   Print(s + " , остановка работы советника");
   
}

установил точку останова на string s = ""; - без проблем вернулся в МЕ, появились окна отладки, ну все как обычно

 

Вначале статистику порезали, а щас вообще убили?


 
Igor Makanu:

написал такой код:

установил точку останова на string s = ""; - без проблем вернулся в МЕ, появились окна отладки, ну все как обычно

При таком подходе нужно после каждого оператора ставить проверку на остановку. Не подходит.

 
TheXpert:

Вначале статистику порезали, а щас вообще убили?

заработало

 
fxsaber:

При таком подходе нужно после каждого оператора ставить проверку на остановку. Не подходит.

после каждого оператора не нужно, ставьте проверку методом половинного деления - в начале, в конце и в середине кода, затем найдя нужную половину кода повторите опять деление кода на 2 части, по моему это быстро

 
Igor Makanu:

после каждого оператора не нужно, ставьте проверку методом половинного деления - в начале, в конце и в середине кода, затем найдя нужную половину кода повторите опять деление кода на 2 части, по моему это быстро

Большая прога. Для воспроизведения зависания требуется около 30 секунд каждый раз.

 
fxsaber:

В режиме отладки запускаю советник. Нужно сделать точку останова ровно в тот момент, когда руками сниму с чарта советник. Как это сделать?


Дело в том, что при снятии советника намертво вешается Терминал. Нужно понять, в каком месте это происходит.

Совсем намертво или все-таки через некоторое время выгрузка советника происходит? Если второе, то ищи цикл.
Причина обращения: