[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 368

 

Buenas tardes.

Tengo que determinar la apertura de un nuevo bar. He insertado en mi Asesor Experto una función pura, el ejemplo del tutorial MQL

void Fun_New_Bar() // Función para detectar una nueva barra
{
static datetime New_Time=0; // Hora actual de la barra
bool New_Bar=false; // No hay nueva barra
if(New_Time!=Time[0]) // Compara los tiempos
{
New_Time=Time[0]; // La hora es ahora
New_Bar=true; // Capturó la nueva barra
}
return(New_Bar);
}

Da un único error '(' - definición de función inesperada - lo entiendo como una definición de función inesperada.

Definí la variable "New_Time" antes de la función int como datetime New_Time;- sin ella la compilación dio un error de variable indefinida.

La función se llama en el programa principal como sigue:

Fun_New_Bar(); // Llamar a f-i
if (New_Bar==false) // Si la barra no es nueva...
volver;

¿Quién puede decirme por qué no funciona todo esto?

Y otra observación interesante - cuando arreglas algo, lo copias - sin errores, luego lo vuelves a copiar - de nuevo

'(' - definición de la función inesperada - por eso. ¿Estoy escribiendo tan ofuscado que el compilador no puede entenderme de inmediato?

 
keekkenen >> :
sucede, a veces imprimes lugares torcidos y ves 0.0000 = 0 y no funciona - falso, normaliza los valores por si acaso.

He añadido una nueva condición que duplica la problemática y el problema está resuelto.

Gracias.


PD Es bueno que en mi caso el error con las órdenes reportara el problema - en otros la lógica del EA puede estar completamente rota,

sin ningún mensaje, y será imposible saberlo :(((

 

La función está declarada como void, es decir, no devuelve nada, pero en el código dice return(New_Bar); este es el motivo del error...

debe declararse según el tipo de variable devuelta - bool Fun_New_Bar()

y utilizarlo en consecuencia if ( !Fun_New_Bar() ) return(0);

 
keekkenen писал(а) >>

La función está declarada como void, es decir, no devuelve nada, pero en el código dice return(New_Bar); este es el motivo del error...

debe declararse según el tipo de variable devuelta - bool Fun_New_Bar()

y utilizarlo en consecuencia if ( !Fun_New_Bar() ) return(0);

Lo tenía exactamente como "bool Fun_New_Bar()" en la primera versión, pero el error era el mismo, así que nombré la función como en el manual - void. He puesto en práctica tu consejo y no hay ningún cambio: el error es el mismo.

Pero se ha producido un cambio: el error se encuentra en la línea 279 (es la línea de comentarios), mientras que la función comienza en la 280

Una cuestión relacionada es si es aceptable cargar la función int() con algún bloque de análisis único, por ejemplo, determinar los valores de las dos últimas inversiones en el indicador.

Lo he hecho. ¿Puede causar un cuelgue del Asesor Experto?

 

definición dela función inesperada - probablemente faltan o sobran paréntesis en el código ANTES de la función Fun_New_Bar,

Revisa el código cuidadosamente y probablemente encontrarás el problema.

 
keekkenen писал(а) >>

definición de la función inesperada - probablemente faltan o sobran paréntesis en el código ANTES de la función Fun_New_Bar,

Revisa el código cuidadosamente y verás lo que está mal.

Lo buscaré ahora. Intentaré meter esta función en el lugar desde el que la estoy llamando. Dos funciones con este error ya han sido copiadas sin errores después de ser trasladadas al lugar de la llamada. Es más, si la función "defectuosa" se traslada al lugar de la llamada, el mismo error salta a la otra función, no necesariamente siguiente en orden.

 
alsu >> :

1. Instale QIPInfium si aún no lo ha hecho

2. Crear una cuenta ICQ separada para el terminal

3. Instalar y configurar el plugin MsgBox - instrucciones detalladas

Desde el Asesor Experto (indicador, script), que debe producir señales, escriba los archivos con los mensajes necesarios en la carpeta OutBox, como se explica en las instrucciones en el enlace anterior. Para escribir en el archivo fuera del directorio del terminal, puedes, por ejemplo, utilizar la biblioteca ZI_File_Functions_Full_Lib


Así es como, con un poco de google y algo de creatividad, puedes hacer lo que quieras en cuatro pasos con un mínimo de programación:))))

Gracias, funciona :)

 

Cuando se ejecuta el EA en modo demo, la ventana de confirmación de la orden sigue apareciendo, como en el comercio manual. Esta función ha sido anulada en las opciones, pero sigue atrapada en algún lugar.

¿Hay alguna forma de cancelar la ventana de confirmación?

 
Andrei01 >> :

Cuando se ejecuta el EA en modo demo, la ventana de confirmación de la orden sigue apareciendo, como en el comercio manual. Las opciones han anulado esta función, pero sigue atrapada en alguna parte.

¿Hay alguna forma de cancelar esta ventana de confirmación?


settings_Mt servicio-configuración-asesores


configuración_de_expertos

 

gracias. eso es exactamente lo que no funciona ya que está escrito en alguna parte del perfil y no se podía deshacer. el problema se solucionó volviendo a crear el perfil.