[¡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 291
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Estás confundiendo la noción de "biblioteca" (de la que se extraen las funciones mediante #import) y la de "archivo de cabecera incluido" (#include).
Las librerías se encuentran en la carpeta de librerías, sus fuentes tienen la extensión *.mq4, al igual que los indicadores y los Asesores Expertos. Se compilan en el archivo *.ex4 (desde el cual se importan las funciones listas en otros programas, así
Para compilar la biblioteca correctamente, por regla general, debe escribir primero la directiva de biblioteca #property.
Los archivos de cabecera Include se utilizan para incluir trozos de código ya preparados en diversos programas. Se almacenan en la carpeta includes, tienen la extensión *.mqh y se incluyen en el texto (es decir, en el texto) del programa utilizando la directiva #include <...>; no es necesario compilarlos por separado, ya que se compilan junto con el programa principal.
Por cierto, antes la librería se generaba con una plantilla con #property library, y ahora no. ¿Alguien sabe por qué han cambiado la plantilla o simplemente se han olvidado de incluirla?
PD Si no fuera por alsu, no habría entendido lo que quería saber el que preguntaba, me estoy haciendo viejo.
Por cierto, antes la librería se generaba usando una plantilla con #property library, pero ahora no, ¿quién sabe por qué cambiaron la plantilla o simplemente se olvidaron de incluirla?
PS si no tuviera alsu no entendería lo que quiere saber.
puede ajustar manualmente la plantilla:)
puede ajustar manualmente la plantilla:)
Sí, sí, lo sé, pero en mi tiempo maté 2 días para encontrar el error, y es un gran problema en la nueva construcción de una plantilla diferente.
>> ...si no fuera por alsu, no sabría lo que quiere saber el que pregunta, me estoy haciendo viejo.
Experimentados veteranos, mirad el código de la biblioteca del "preguntante" y explicadme qué quiso decir el autor cuando lo escribió...
Lo siento.
Se ha escrito mucho, pero sigo sin entender la respuesta a mi pregunta. Intentaré una vez más explicar lo que no puedo hacer.
Supongamos que he hecho un EA en el que he insertado la directiva #include<...> y luego he hecho un archivo de cabecera include con un trozo de código.
He recopilado el Asesor Experto y lo he incluido en una operación. Todo funciona. Basado en la cita de Sergei Kovalev:
"...Otra cosa que se puede añadir es que el archivo ex4 es autosuficiente - para que funcione,no necesita incluir los códigos fuente de las funciones del usuario.
Puedes copiar el archivo ex4, pasarlo a otros operadores y utilizarlo allí.
"Es completa independientemente de su tecnología.
Cogí mi EA y lo copié y lo transferí a otro ordenador, a otro trader. Después de eso, el Asesor Experto no quiere trabajar y escribe que no existe la función a la que me refiero #include<...>, es decir, no ve el archivo de cabecera include y no puede compilar.
Aquí hay un ejemplo del Asesor Experto y del archivo de cabecera incluido. Vea cuál es exactamente el error en la pregunta.
//+------------------------------------------------------------------+//| Kibliot.mq4 ||
//| Copyright © 2009, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp.
#enlace de propiedad "http://www.metaquotes.net"
#include <PointZigZag.mqh>
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int inicio()
{PointZigZag();
Comentario("Prod.-y21 = ",y21," ", "Pok.-x21 = ",x21);
return(0);
}
//+------------------------------------------------------------------+
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
//+------------------------------------------------------------------+//| PointZigZag.mqh |
//| Copyright © 2009, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp.
#enlace de propiedad "http://www.metaquotes.net"
extern int intDepth = 12; //------- variables ZigZag
extern inttern ExtDeviation = 5; //------- variables ZigZag.
extern intBackstep = 3; //------- variables ZigZag
extern inttern ShiftBars = 2; //------- variables ZigZag
//------- variables ZigZag ------------------------------------------
double y3, y2, y1, zz;//
int x3, x2, x1, sh;//
double x31, x21, x11; // Punto de inflexión en zigzag
double y31, y21, y11; // Punto de inflexión en zigzag
doble TimeZZ, TimeOO;
//------------------------------------------------------------------------------
double PuntoZigZag()
{y3=0;y2=0;y1=0;
sh=Barras de desplazamiento;
while (y3==0)
{zz=iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, sh);
if (zz!=0 && zz!=EMPTY_VALUE)
{si (y1==0) { x1=sh; y1=zz; }
else if (y2==0) { x2=sh; y2=zz; }
else if (y3==0) { x3=sh; y3=zz; }}sh++;
}
si (Alto[x1]>Alto[x2])
{x11=Alto[x1]; x21=Bajo[x2]; x31=Alto[x3];
y11=0;y21=0;y31=0;TimeZZ=Time[x2];
}sin embargo
{y11=Bajo[x1]; y21=Alto[x2]; y31=Bajo[x3];
x11=0;x21=0;x31=0;TimeZZ=Time[x2];}
}
//+------------------------------------------------------------------+
Lo siento.
Se ha escrito mucho, pero sigo sin entender la respuesta a mi pregunta. Intentaré una vez más explicar lo que no puedo hacer.
Supongamos que he hecho un EA en el que he insertado la directiva #include<...> y luego he hecho un archivo de cabecera include con un trozo de código.
He recopilado el Asesor Experto y lo he incluido en una operación. Todo está funcionando. Basado en la cita de Sergei Kovalev:
"...También puedo añadir que el archivo ex4 es autosuficiente - para que funcione,no requiere incluir los códigos fuente de las funciones del usuario.
El archivo ex4 puede copiarse, compartirse con otros operadores y utilizarse allí.
"Es completa independientemente de su tecnología.
Cogí mi EA y lo copié y lo transferí a otro ordenador, a otro trader. Después de eso, el Asesor Experto no quiere trabajar y escribe que no hay ninguna función a la que haga referencia #include<...>, es decir, no ve el archivo de cabecera de inclusión y no puede compilar.
Aquí hay un ejemplo del Asesor Experto y del archivo de cabecera incluido. Mira cuál es exactamente el error en la pregunta.
El archivo a incluir también debe estar ubicado en otro ordenador en el directorio include, y en general, no te molestes, escribe todo en una hoja, asigna un trozo de código como función, ponlo al final de la hoja para que no se quede colgado y nada de encender y apagar, para qué te complicas la vida. Las directivas #include e #import son necesarias (en mi opinión) para escribir un programa complejo con más de 1000 líneas y compuesto por varias docenas de programas separados, de lo contrario son más confusas que útiles.
Por favor, arregle la línea de error que genera el compilador
El compilador escribe la siguiente línea
PointZigZag.mqh' - no se puede abrir el archivo de programa D:\N-Archivos de programa\N-MetaTrader2\perts\Kibliot.mq4 (10, 1)
El compilador escribe la siguiente línea
PointZigZag.mqh' - no se puede abrir el archivo de programa D:\N-Archivos de programa\N-MetaTrader2\perts\Kibliot.mq4 (10, 1)
ver respuesta anterior - poner el archivo de inclusión PointZigZag.mqh en la carpeta de inclusión
ver respuesta anterior - poner el archivo de inclusión PointZigZag.mqh en la carpeta de inclusión
En todos los ordenadores en los que se supone que se compila el archivo Kibliot.mq4.