Publi

Publi

Resultados 1 al 10 de 10


  1. #1

    antecessor


    Reputación:
    Poder de reputación: 8

    Venezuela
    Mensajes: 597
    Créditos: 2,154

    ¿Cómo utilizar la Libreria/ Función Call (mql4)?


    Publi
    Saludos compañeros.

    Estoy aprendiendo a utilizar la función Call, y la guía que tengo no lo explica muy bién. Lo que tengo entendido es que se hace un código cualquiera en libreria (MetaEditor), y para llamar a este código simplemente pongo su nombre en un EA, y coloco dentro del paréntesis valores de algunos parámetros.

    Intenté hacerlo y dice que hay un error (no se si está en el código o es porque estoy apenas aprendiedo cómo usar la librería). Lo que hice colocar el indicador Moving Average, con el fin de llamarla después en un EA. Coloqué esto:

    Librería:
    Código:
    int timefrime, periodo;
    timefrime=PERIOD_CURRENT;
    periodo=20; 
    double SMA=iMA(NULL, timefrime, periodo, 0, MODE_SMA, PRICE_CLOSE, 1);
    Pero al compilar este código me dice que no fue declarado el tipo de variable de "timefrime" ni de "periodo". Pensé que el error era que estos 2 parámetros no fueran tipo int, pero según esta página de la Web mql4 ambos son int. También probé colocando este mismo código en cuerpo de EA, y no me marcó ningún error, así que supongo que tiene que ver con la estructura del código y no con el tipo de variable.

    ¿A qué se debe el error? ¿Alguien sabe?

    Muchas gracias de antemano.
    Foro de Forex Trading United
    Última edición por trader201; 13-09-2014 a las 18:36 Razón: agregar que lo probé también en EA

     

  2.                         
    Publi
  3. #2
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 903
    Créditos: 15,841

    Re: ¿Cómo utilizar la Libreria/ Función Call (mql4)?

    Has llamado a la librería desde el EA con una orden de este formato??? :

    #include <Mi_Libreria.mqh>

    Y, tienes esa librería en la carpeta MQL4\include de la carpeta de usuario vinculada a tu MT4?

    Por otra parte, si solo es para hacer comprobaciones y aprender, vale, pero para qué quieres declarar una variable de timeframe si solo le vas a asignar el valor del timeframe actual???, En la función iMA basta con que pongas valor 0 en ese parámetro.

    Espero que te sirva.

    Un abrazo.
    Foro de Forex Trading United

     

  4. #3

    antecessor


    Reputación:
    Poder de reputación: 8

    Venezuela
    Mensajes: 597
    Créditos: 2,154

    Re: ¿Cómo utilizar la Libreria/ Función Call (mql4)?

    Cita Iniciado por robertomar Ver mensaje
    Has llamado a la librería desde el EA con una orden de este formato??? :

    #include <Mi_Libreria.mqh>

    Y, tienes esa librería en la carpeta MQL4\include de la carpeta de usuario vinculada a tu MT4?

    Por otra parte, si solo es para hacer comprobaciones y aprender, vale, pero para qué quieres declarar una variable de timeframe si solo le vas a asignar el valor del timeframe actual???, En la función iMA basta con que pongas valor 0 en ese parámetro.

    Espero que te sirva.

    Un abrazo.
    Gracias robertomar. Como sospechas, lo de timefrime y período es con el fin de tener una excusa para aprender como llamar funciones y llenar los paréntesis (TF y perído es buscando algo para llenar en el paréntesis).

    Tengo dudas respecto a lo que me comentaste:

    Una vez escribo código en librería, debo confirmar que el código esté guardado (y si no está, guardarlo) en la carpeta include. Supongo que fuera de las carpetas que aparecen alli, que son: Arrays, Canvas, ChartObjects, Charts, Control. Files, Indicators, Strings. ¿Así?

    Una vez ya guardado el código en dicha carpeta, para llamarlo y poder utilizarlo en un EA, le coloco:
    #include <Mi_Libreria.mqh>

    ¿Esta parte de "#include..." es una declaración fuera de bucles (en la cabecera del programa) solo para decir que en algún momento, durante la ejecución del programa, llamaré dicha función, y luego, cuando necesite llamarla, le coloco el nombre con que guardé el código con los valores en paréntesis? ¿Es así?

    Saludos, y gracias por responder.
    Foro de Forex Trading United

     

  5. #4
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 903
    Créditos: 15,841

    Re: ¿Cómo utilizar la Libreria/ Función Call (mql4)?

    Cita Iniciado por trader201 Ver mensaje
    Gracias robertomar. Como sospechas, lo de timefrime y período es con el fin de tener una excusa para aprender como llamar funciones y llenar los paréntesis (TF y perído es buscando algo para llenar en el paréntesis).

    Tengo dudas respecto a lo que me comentaste:

    Una vez escribo código en librería, debo confirmar que el código esté guardado (y si no está, guardarlo) en la carpeta include. Supongo que fuera de las carpetas que aparecen alli, que son: Arrays, Canvas, ChartObjects, Charts, Control. Files, Indicators, Strings. ¿Así?
    Yes, compi.

    Cita Iniciado por trader201 Ver mensaje
    Una vez ya guardado el código en dicha carpeta, para llamarlo y poder utilizarlo en un EA, le coloco:
    #include <Mi_Libreria.mqh>

    ¿Esta parte de "#include..." es una declaración fuera de bucles (en la cabecera del programa) solo para decir que en algún momento, durante la ejecución del programa, llamaré dicha función
    Así es.

    Cita Iniciado por trader201 Ver mensaje
    , y luego, cuando necesite llamarla, le coloco el nombre con que guardé el código con los valores en paréntesis? ¿Es así?
    Luego puedes usar cualquier parte de código que tengas definida en ese archivo de tipo include. Puedes tener un montón de funciones definidas allí, y a lo largo de todo el transcurso del EA puedes llamar a una en algún momento, a otra u otras en otro, etc, con el nombre de cada una de esas funciones, tal como estén definidas en ese archivo externo.


    De todas formas, lo de las librerías externas es una ventaja para el programador, porque con un solo archivo luego puedes llamarlo desde muchos EAs etc etc y te facilita por tanto la programación y no tener que definir todo eso cada vez que lo vayas a incluir en un código, pero lo que es para el usuario o cliente, en mi opinión no es ventajoso, ya que siempre al llamar a archivos externos al EA que estás corriendo va un poquito más lento el mismo y a esa persona le da igual como tú lo hayas programado, si te ha costado más o menos, o si has tenido que copiar todas esas funciones dentro del EA o no. De todas maneras, en algunos casos se hace necesario su uso.

    Saludos y un abrazo compañero.
    Foro de Forex Trading United

     

  6. #5

    antecessor


    Reputación:
    Poder de reputación: 8

    Venezuela
    Mensajes: 597
    Créditos: 2,154

    Re: ¿Cómo utilizar la Libreria/ Función Call (mql4)?

    Cita Iniciado por robertomar Ver mensaje
    Has llamado a la librería desde el EA con una orden de este formato??? :

    #include <Mi_Libreria.mqh>

    Y, tienes esa librería en la carpeta MQL4\include de la carpeta de usuario vinculada a tu MT4?

    Por otra parte, si solo es para hacer comprobaciones y aprender, vale, pero para qué quieres declarar una variable de timeframe si solo le vas a asignar el valor del timeframe actual???, En la función iMA basta con que pongas valor 0 en ese parámetro.

    Espero que te sirva.

    Un abrazo.
    Cita Iniciado por robertomar Ver mensaje
    Yes, compi.



    Así es.



    Luego puedes usar cualquier parte de código que tengas definida en ese archivo de tipo include. Puedes tener un montón de funciones definidas allí, y a lo largo de todo el transcurso del EA puedes llamar a una en algún momento, a otra u otras en otro, etc, con el nombre de cada una de esas funciones, tal como estén definidas en ese archivo externo.


    De todas formas, lo de las librerías externas es una ventaja para el programador, porque con un solo archivo luego puedes llamarlo desde muchos EAs etc etc y te facilita por tanto la programación y no tener que definir todo eso cada vez que lo vayas a incluir en un código, pero lo que es para el usuario o cliente, en mi opinión no es ventajoso, ya que siempre al llamar a archivos externos al EA que estás corriendo va un poquito más lento el mismo y a esa persona le da igual como tú lo hayas programado, si te ha costado más o menos, o si has tenido que copiar todas esas funciones dentro del EA o no. De todas maneras, en algunos casos se hace necesario su uso.

    Saludos y un abrazo compañero.
    Gracias por todo robertomar. Dice que debo darle reputación a otros antes de dartela. Te la debo.
    Saludos.
    Foro de Forex Trading United

     

  7. #6
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 903
    Créditos: 15,841

    Re: ¿Cómo utilizar la Libreria/ Función Call (mql4)?

    Eso es porque me habrías dado hace poco, y no le has dado a algunos otros después, jajaja.

    No te preocupes trader201, eso da igual, lo importante es poder echar una mano si se tiene un rato y un compañero necesita algo que tú puedas conocer.

    Saludos y un abrazo.
    Foro de Forex Trading United

     

  8. #7

    antecessor


    Reputación:
    Poder de reputación: 8

    Venezuela
    Mensajes: 597
    Créditos: 2,154

    Re: ¿Cómo utilizar la Libreria/ Función Call (mql4)?

    Cita Iniciado por robertomar Ver mensaje
    Has llamado a la librería desde el EA con una orden de este formato??? :

    #include <Mi_Libreria.mqh>

    Y, tienes esa librería en la carpeta MQL4\include de la carpeta de usuario vinculada a tu MT4?...
    Saludos. Me está indicando un error cuando coloco, en la cabecera del programa:

    Código:
    #include<SMA20.mqh>
    Me dice que no puede abrir el archivo. Aquí algunos datos:

    El archivo está guardado en la carpeta libreria (ya que no tengo carpeta "include"), en mi terminal de usuario (se guardó solo allí, supongo al compilar. Probé pegando este mismo archivo en libreria de C:MT4/MQL4/Libreria, pero sigue diciendo el mismo error.

    El archivo tiene terminación, no mqh, sino mq4. (No se si tenga que ver con esto. Tampoco como colocarle terminacion mqh, si es este el problema).

    Saludos. Y gracias de antemano.
    Foro de Forex Trading United

     

  9. #8
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 903
    Créditos: 15,841

    Re: ¿Cómo utilizar la Libreria/ Función Call (mql4)?

    Hombre, trader201, ya te echaba yo de menos, jajajajaja.

    Cómo que no tienes carpeta Include en tu plataforma???, Eso es porque no has entrado a la carpeta de datos de tu plataforma correctamente. Esta si tienes el acceso a la misma como "Portable" sería la carpeta de instalación de tu MT4, pero esto casi nadie lo tiene así, y lo más habitual es que esté en las carpetas de usuario : C:\Usuarios\(Tu usuario)\AppData\Roaming\Metaquotes\(Numero largo con la ID de tu MT4)\MQL4\Include.

    Para acceder de un modo rápido a la misma tienes la opción de abrirla desde dentro de tu MT4. Te lo muestro en unas capturas:

    ¿Cómo utilizar la Libreria/ Función Call (mql4)?-carpeta-datos.png

    Una vez ahí, le das a MQL4:

    ¿Cómo utilizar la Libreria/ Función Call (mql4)?-carpeta-datos-mql4.png

    Y luego ahí dentro (aparte de Experts, Indicators y tal, también tienen que estar Incude y Libraries):

    ¿Cómo utilizar la Libreria/ Función Call (mql4)?-carpeta-datos-include.png


    Todo lo que no esté en esas carpetas, si quieres llamarlo desde cualquier programa MQL4 tendrías que especificar la ruta donde se encuentra.

    Pon ahí tus archivos include y verás como no te da problemas de que no los encuentra.

    Saludos y un abrazo.
    Foro de Forex Trading United

     

  10. #9

    antecessor


    Reputación:
    Poder de reputación: 8

    Venezuela
    Mensajes: 597
    Créditos: 2,154

    Re: ¿Cómo utilizar la Libreria/ Función Call (mql4)?

    Cita Iniciado por robertomar Ver mensaje
    Hombre, trader201, ya te echaba yo de menos, jajajajaja.

    Cómo que no tienes carpeta Include en tu plataforma???, Eso es porque no has entrado a la carpeta de datos de tu plataforma correctamente. Esta si tienes el acceso a la misma como "Portable" sería la carpeta de instalación de tu MT4, pero esto casi nadie lo tiene así, y lo más habitual es que esté en las carpetas de usuario : C:\Usuarios\(Tu usuario)\AppData\Roaming\Metaquotes\(Numero largo con la ID de tu MT4)\MQL4\Include.

    Para acceder de un modo rápido a la misma tienes la opción de abrirla desde dentro de tu MT4. Te lo muestro en unas capturas:

    ¿Cómo utilizar la Libreria/ Función Call (mql4)?-carpeta-datos.png

    Una vez ahí, le das a MQL4:

    ¿Cómo utilizar la Libreria/ Función Call (mql4)?-carpeta-datos-mql4.png

    Y luego ahí dentro (aparte de Experts, Indicators y tal, también tienen que estar Incude y Libraries):

    ¿Cómo utilizar la Libreria/ Función Call (mql4)?-carpeta-datos-include.png


    Todo lo que no esté en esas carpetas, si quieres llamarlo desde cualquier programa MQL4 tendrías que especificar la ruta donde se encuentra.

    Pon ahí tus archivos include y verás como no te da problemas de que no los encuentra.

    Saludos y un abrazo.

    Gracias robertomar. Sin embargo sigo teniendo el mismo problema. El error me sigue saliendo aunque ya haya copiado el archivo en carpeta include y lo llame en la cabecera del programa. Supongo algo de la terminación del archivo? ¿Podrás contarme paso a paso que es lo que debo hacer? Esto es lo que he hecho:

    Primero creé el código, seleccionado "library". Una vez que le doy a "compilar", aunque dice el error, queda grabado en MT4, en la carpeta "libreria". Cuando le doy a "propiedades" de este archivo con el segundo botón del mouse, me sale que es un archivo mq4 (recordando que está en libreria).

    ¿Ahora qué toca hacer? Copio este archivo y lo pego en carpeta include y me sigue saliendo lo mismo. ¿Debo cambiar la terminación de .mq4 a .mqh? ¿cómo lo hago? Claro tengo otras dudas, como por ejemplo, tengo entendido que una vez compilado mq4 cambia a ex4 (archivo ejecutable) Pero la pregunta principal o mas útil para mi en este momento es: ¿qué debo hacer exactamente en cada paso posterior a lo que he hecho (solo compilar el código)?

    Recibe un abrazo, y muchas gracias por la ayuda (por todas la anteriores también).
    Foro de Forex Trading United
    Última edición por trader201; 15-11-2014 a las 18:44 Razón: agregar algo

     

  11. #10
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 903
    Créditos: 15,841

    Re: ¿Cómo utilizar la Libreria/ Función Call (mql4)?


    Publi
    Hola compi, después del fin de semana por aquí andamos, jaja.

    A ver, si la librería te da error al compilar y no te compila es que en ese código hay algo mal y por tanto no vas a poderla usar. Si lo haces como librería y lo metes a la carpeta libraries, entonces tienes que tener el ejecutable compilado (el .ex4) y luego cuando llames a funciones de esa librería desde otro indicador o EA tendrías que usar el comando #import y pasarle los parámetros a las funciones correspondientes, y no con el comando #include. Para usar esto ya te digo que tienen que ser archivos compilados, que es como suelen ir las librerías (bien .ex4 o bien .dll). Pero en tu caso no vas a poder porque ya de entrada la librería no te compila por algún error que tienes en el código, así que mientras no soluciones ese error nunca vas a tener el ejecutable de esa librería.

    Y si lo que quieres es un include, entonces no lo crees como librería, sino que lo creas como include, y lo metes en la carpeta include, y luego lo llamas con el comando #include.

    Cada cosa para lo que es.

    Espero que te sirva.

    Saludos y un abrazo.
    Foro de Forex Trading United

     

Publi
Publi


Aviso Legal
Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal