Una pregunta para los expertos en MQL - página 15

 

¡Gracias Zhunko y TheXpert!

Sus variantes eliminan este tipo de errores.

 

¡Hola!

Me pueden decir que puede significar la advertencia al compilar un indicador en un mt4 actualizado:

no todas las vías de control devuelven un valor S_E_v.mq4 181
0 error(es), 1 advertencia(s) 1 2

 
Rita:

Me puedes decir que puede significar la advertencia al compilar el indicador en el mt4 actualizado:

Significa que hay un caso en la función que devuelve un valor donde no se devuelve nada y esto es malo.
 

Programadores, ayúdenme: necesito determinar el desplazamiento de la barra para una hora determinada en una TF horaria. El procedimiento estándar (del tutorial) da 0. Indícame la dirección equivocada...

 datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
  Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);
 
Nesradamus:

Programadores, ayúdenme: necesito determinar el desplazamiento de la barra para un momento dado en un marco temporal horario. El procedimiento estándar (del tutorial) da 0. Indícame la dirección equivocada...

"EUROUSD"

¿Existe tal símbolo?

 

Por la tarde.

Después de la última actualización de mt4 y la compilación de EA hay advertencias en tres líneas 101-106-109, ver fig:

Por favor, aconsejar, - cómo arreglar, aquí está el código de esta función :

(¿y hay que corregirlo?)

int init()
{
 ExpertBars = Bars;
//-----------------------------------------------------------
gbNoInit=False; if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit=True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit=True; return;
  }
//------------------
}
 
Rita:

Por la tarde. Después de la última actualización de mt4 y la compilación de EA hay advertencias en tres líneas 101-106-109, ver fig:

Por favor, aconsejar, - cómo arreglar, aquí está el código de esta función :

(¿y hay que corregirlo?)

Su init() es de tipo int, lo que significa que debe devolver un valor. Antes del último paréntesis de cierre escriba

return(INIT_SUCCEEDED);

Hay un lugar en una función donde la función puede no devolver nada. No has mostrado las funciones - busca por ti mismo en aquellas funciones donde es posible dejar en el último paréntesis de cierre.

 
Este es el código
artmedia70:

Antes del último paréntesis de cierre, escriba .....

No has mostrado las funciones - busca por ti mismo en aquellas funciones donde es posible dejar en el último paréntesis de cierre.


Gracias. Corregido return(INIT_SUCCEED);.

Aquí está el código de esta función no mostrada para los otros dos avisos restantes:

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment(m);
  if (StringLen(m)>0) Print(m);}

.

 
Rita:
Este es el código

Gracias. Corregido.

Aquí está el código de esta función en los otros dos avisos:

1. Lo más probable es que tengas deinit() también int y que return(0) no esté escrito en él

2. Esta función es nula y el paréntesis de cierre sirve como return` en ella. Todo está bien en él.

 

deinit() - No lo tengo en absoluto.

Se ha corregido return a return(0) en las dos advertencias restantes y el código se ha compilado sin problemas.

Gracias.