初学者的问题 MQL5 MT5 MetaTrader 5 - 页 84

 
lobo:

问题:我如何设置什么和什么地方,使信号不进来?我没有订阅过任何信号。


+并禁用终端中的信号 标签。

 
sergeev:

+并禁用终端中的信号 标签。


警报 "标签的上下文菜单没有激活,你只能在那里 "创建"。在 "信号 "选项卡中,你只能查看收到的信号,你不能取消订阅或删除它们。
 

下午好!!!。

我正试图弄清楚mql5,并从第四版重写EA,我遇到了一些问题。

1.编译器在if(fcorH==1)countH=cH这一行写下了'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);        // отрисовка ближайшего сопротивления

但除此之外,在第二个例子中,在日期 行TimeRes=SupRes[y2][1]中出现了" 由于类型转换可能导致数据丢失"的警告。

全局层面的数组以这种形式组合 - 双重SupRes[][2]。

请告诉我,我应该怎样做才能纠正这些错误和警告。

 
WindSW:

下午好!!!。

我正试图弄清楚mql5,并从第四版重写EA,我遇到了一些问题。

1.编译器在if(fcorH==1)countH=cH;中写了'cH'--未声明的标识符,尽管该变量已被分配。有什么好处呢?

2.另一个变量TimeRes的情况也一样。

在这两种情况下,你都是在一个条件/周期内声明一个变量,也就是说,如果条件没有得到满足,这个变量就没有被定义。

将变量的定义放在函数的开头,或使其成为全局变量。

但除此之外,第二个例子中的数据 行TimeRes=SupRes[y2][1]会出现" 由于类型转换可能导致数据丢失"的警告。

全局层面的数组是以这种形式组合的--Double SupRes[][2]。

请告知如何解决这些错误和警告?

或将其转换为一种类型

datetime TimeRes=(datetime)SupRes[y2][1];
或者最初将数组和变量定义为同一类型。
 
fyords:

在这两种情况下,你都是在一个条件/周期内声明一个变量,也就是说,如果条件没有得到满足,这个变量就没有被定义。

将变量定义放在函数的开头,或使其成为全局变量。

把变量定义放在函数的开头,但它对cH和TimeRes变量产生了 "可能使用未初始化的变量 "的警告。

如何处理它,如何处理数据时间行中的" 由于类型转换可能导致的数据丢失"警告? TimeRes=SupRes[y2][1]; ?

 
WindSW:

你已经定义了变量,但得到一个警告 "可能使用了未初始化的变量'cH'"。

这很好,但你有没有给它一个初始化值?

int cH=0;
毕竟,它是通过代码来读取数值的,如果那里什么都没有,又能读取什么呢。这里是一个警告。
 
fyords:

那么,要么把它减少到同一类型的

或最初将数组和变量定义为同一类型。
如果数组必须包含double级别,并且这些级别的时间是datetime,那么你怎么能用一种类型定义数组和变量呢?
 
fyords:

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

谢谢你,你的提示很有帮助。我在哪里可以看到像(datetime)SupRes[y2][1];这样的定义?
 
WindSW:
如果数组中的级别是双数,而这些级别的时间是数据时间,那么你如何定义数组和同一类型的变量?

在这种情况下,你将需要两个数组:double和datetime。

而一旦找到级别并写入第一个数组,我们需要得到时间 并写入第二个数组。

 
WindSW:
谢谢你,你的提示很有帮助。我在哪里可以看到关于(datetime)SupRes[y2][1]; 类型的定义?

带来的类型

原因: