Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 84

 
lobo:

Pregunta: ¿Cómo configuro qué y dónde para que no entren las señales? No me he suscrito a ninguna de las señales.


+ y desactivar la pestaña de señales en el terminal.

 
sergeev:

+ y desactivar la pestaña de señales en el terminal.


El menú contextual de la pestaña "alertas" no está activo, sólo se puede "crear" allí. En la pestaña "señales" sólo puede ver las señales entrantes, no puede darse de baja ni eliminarlas.
 

¡¡¡Buenas tardes!!!

Estoy tratando de entender mql5 y reescribir EA desde la versión 4, y me he encontrado con algunos problemas:

1. El compilador escribe 'cH' - identificador no declarado en la líneaif(fcorH==1) countH=cH; aunque la variable está asignada. ¿Cuál es la trampa?

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

2. la misma historia con otra variable 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);        // отрисовка ближайшего сопротивления

Pero aparte de eso en el segundo ejemplo hay una advertencia"posible pérdida de datos debido a la conversión de tipo" en la línea dedatetime TimeRes=SupRes[y2][1];

Un array a nivel global se combina de esta forma - double SupRes[][2];

Por favor, dígame qué debo hacer para corregir estos errores y advertencias.

 
WindSW:

¡¡¡Buenas tardes!!!

Estoy tratando de entender mql5 y reescribir EA desde la versión 4, y me he encontrado con algunos problemas:

1. El compilador escribe 'cH' - identificador no declarado en elif(fcorH==1) countH=cH; aunque la variable está asignada. ¿Cuál es la trampa?

2. la misma historia con la otra variable TimeRes:

En ambos casos estás declarando una variable dentro de una condición/ciclo, es decir, si la condición no se cumple, la variable no está definida.

Poner la definición de las variables al principio de la función o hacerlas globales.

Pero además, el segundo ejemplo provoca el aviso de"posible pérdida de datos debido a la conversión de tipo" en la línea dedatetime TimeRes=SupRes[y2][1];

Un array a nivel global se combina de esta forma - double SupRes[][2];

Por favor, aconséjeme qué hacer para solucionar estos errores y advertencias.

O convertirlo en un tipo

datetime TimeRes=(datetime)SupRes[y2][1];
O bien, definir inicialmente la matriz y la variable como el mismo tipo.
 
fyords:

En ambos casos estás declarando una variable dentro de una condición/ciclo, es decir, si la condición no se cumple, la variable no está definida.

Ponga la definición de la variable al principio de la función o hágala global.

Puse la definición de la variable al principio de la función, pero generó advertencias de "posible uso de variable no inicializada" para las variables cH y TimeRes.

¿Qué hacer con él y qué hacer con la advertencia"posible pérdida de datos debido a la conversión de tipo" en la línea datetime TimeRes=SupRes[y2][1]; ???

 
WindSW:

Has definido las variables y has obtenido una advertencia "posible uso de una variable no inicializada 'cH'".

Esto está bien, pero ¿le has dado un valor de inicialización?

int cH=0;
Al fin y al cabo, está leyendo el valor por el código y si no hay nada ahí, qué se puede leer. Aquí es una advertencia.
 
fyords:

Bueno, o bien reducirlo al mismo tipo de

o definir inicialmente la matriz y la variable como el mismo tipo.
¿Y cómo se puede definir el array y la variable por un tipo, si el array debe contener niveles como double y el tiempo de estos niveles como datetime?
 
fyords:

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

Gracias, tus consejos me han ayudado. ¿Dónde puedo leer sobre definiciones como (datetime)SupRes[y2][1];?
 
WindSW:
¿Y cómo se puede definir un array y una variable del mismo tipo, si el array debe contener niveles como double y el tiempo de estos niveles como datetime?

En este caso necesitarás 2 arrays: double y datetime.

Y una vez encontrado el nivel y escrito en el primer array, necesitamos obtener la hora y escribirla en el segundo array.

 
WindSW:
Gracias, tus consejos me han ayudado. ¿Dónde puedo leer sobre las definiciones de tipo (datetime)SupRes[y2][1];?

La introducción de los tipos

Razón de la queja: