Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 84

 
lobo:

Вопрос: как настроить, что и где, чтобы сигналы не поступали? Ни на один из сигналов я не подписывался.


+ и отключить вкладку сигналов в терминале.

 
sergeev:

+ и отключить вкладку сигналов в терминале.


Контекстное меню вкладки "алерты" не активно, там можно только "создать". Во вкладке "сигналы" можно только просматривать поступающие сигналы, от них нельзя не отписаться,ни удалить???
 

Добрый день!

Я пытаюсь разобраться с mql5 и переписать эксперт с 4 версии, и столкнулся с несколькими вопросами:

1.  Компилятор пишет 'cH' - undeclared identifier в строке if(fcorH==1) countH=cH;, хотя переменная назначена. В чем подвох?

             if(fdelH==0)                                   // проверить на близость при отсутствии уровня в массиве удаленных
               {
                int cH=countH-1;                            // предыдущее значение счетчика
                ...
                fcorH=1;                                    // перезапись уровня в массиве
               }
             if(f1==0)                                      // если занесение хая в массив разрешено
               {
                if(fcorH==1) countH=cH;                     // если разрешена перезапись уровня, то счетчик отматывается на один назад
                ...
               }

2. Такая же история с другой переменной TimeRes:

   for(int y2=0;y2<finish;y2++)                          // поиск ближайших уровней
      {
       double Level=SupRes[y2][0];                       // выбор проверяемого уровня
       double rL=Level-Bid;                              // разность цены и уровня
       if((rL<dPlus && rL>0) || (rL>0 && dPlus==0))      // при наличии положительной разницы
         {
          dPlus=rL;                                      // фиксировать ее
          Res=NormalizeDouble(SupRes[y2][0],_Digits);    // уровень сопротивления
          datetime TimeRes=SupRes[y2][1];                // время сопротивления
         }
      }
   ObjectSetInteger(0,oRes,OBJPROP_TIME,TimeRes);        // отрисовка ближайшего сопротивления

Но кроме этого во втором примере возникает предупреждение "possible loss of data due to type conversion" в строке datetime TimeRes=SupRes[y2][1];

Массив на глобальном уровне объевлен в таком виде - double SupRes[][2]; 

Пожалуйста, подскажите, что надо сделать, чтобы исправить эти ошибки и предупреждения? 

 
WindSW:

Добрый день!

Я пытаюсь разобраться с mql5 и переписать эксперт с 4 версии, и столкнулся с несколькими вопросами:

1.  Компилятор пишет 'cH' - undeclared identifier в строке if(fcorH==1) countH=cH;, хотя переменная назначена. В чем подвох?

2. Такая же история с другой переменной TimeRes:

В обоих случаях Вы объявляете переменную внутри условия/цикла, т.е. если условие не выполняется, то переменная не определяется.

Вынесите определение переменных в начало функции или сделайте их глобальными.

Но кроме этого во втором примере возникает предупреждение "possible loss of data due to type conversion" в строке datetime TimeRes=SupRes[y2][1];

Массив на глобальном уровне объевлен в таком виде - double SupRes[][2]; 

Пожалуйста, подскажите, что надо сделать, чтобы исправить эти ошибки и предупреждения? 

Ну либо приводите к одному типу 

datetime TimeRes=(datetime)SupRes[y2][1];
или изначально определяйте массив и переменную одним типом.
 
fyords:

В обоих случаях Вы объявляете переменную внутри условия/цикла, т.е. если условие не выполняется, то переменная не определяется.

Вынесите определение переменных в начало функции или сделайте их глобальными.

Вынес определение переменных, при этом возникли предупреждения "possible use of uninitialized variable" для переменных cH и TimeRes.

Что с ним делать и что делать с предупреждением "possible loss of data due to type conversion" в строке datetime TimeRes=SupRes[y2][1]; ???

 
WindSW:

Вынес определение переменных, при этом возникло предупреждение "possible use of uninitialized variable 'cH' ".

Вынесли это хорошо, а задали ей значение инициализации?

int cH=0;
Ведь по коду идет чтение значение, а если там ничего нет, то что можно читать. Вот и предупреждение.
 
fyords:

Ну либо приводите к одному типу 

или изначально определяйте массив и переменную одним типом.
А как можно определить массив и переменную один типом, если массив должен содержать уровни в виде double и время этих уровней в виде datetime?
 
fyords:

datetime TimeRes=(datetime)SupRes[y2][1];

Спасибо, ваши советы помогли. А про такое опредления типа (datetime)SupRes[y2][1]; где можно почитать?
 
WindSW:
А как можно определить массив и переменную один типом, если массив должен содержать уровни в виде double и время этих уровней в виде datetime?

В этом случае понадобится 2а массива: double и datetime.

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

 
WindSW:
Спасибо, ваши советы помогли. А про такое опредления типа (datetime)SupRes[y2][1]; где можно почитать?

Приведение типов

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