Publi

Publi

Página 3 de 7 PrimerPrimer 1234567 ÚltimoÚltimo
Resultados 21 al 30 de 63


  1. #21
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 905
    Créditos: 15.929

    Re: Mi primer aporte: Template EA en blanco


    Publi
    Muchísimas gracias por la iniciativa MRCSoft. Me parece un buen punto de partida para muchas personas que son traders pero no se han adentrado en el mundo del trading automático, y hasta les da casi miedo abrir el código y las entrañas del EA.


    Mi humilde opinión es que, como bien dice Hermo, yo prefiero programar directamente las condiciones de mi estrategia y, dependiende de qué cosas vaya a usar o meterle a la misma (BreakEven, TrailingStop, Money Management, etc etc etc) entonces le voy añadiendo lo necesario, pero solo y exclusivamente lo necesario. Pienso que tener una plantilla con todo es posible que le pueda facilitar el trabajo a quien no ha abierto nunca el código de un EA y que, por tanto, pueda meter en la parte correspondiente el bloque de su estrategia y tirar para adelante, pero como bien sabes en el propio código, en la propia estrategia, y en los propios indicadores que ésta pueda usar hay 1000 matices y cada una requerirá unos procesos y una codificación diferente.

    Por ejemplo, es posible que por necesidades de la propia estrategia y de cómo y cuándo compruebe sus señales, o cúando vaya modificando su SL o su Trailing, etc, sea necesario usar otras funciones adicionales al OnTick(), como por ejemplo en ciertas estrategias puede ser necesario usar el OnTimer(), el OnCalculate, o el OnChartEvent(). Por lo que no veo tan sencillo ni tan óptimo en cuanto a resultado final codificado, meterle unas señales de entrada o salida exclusivamente ahí a una plantilla con todos los bloques. Yo más bien veo estas plantillas muy útiles para, por ejemplo, si yo no se como hacer un Trailing, pues cojo y en mi EA donde ya tengo programada la estrategia, sus señales, tengo externalizadas las variables de mis indicadores, etc etc y todo optimizado en base a sus necesidades, entonces le meto sólo el bloque del Trailing que lleva la plantilla. Veo más óptimo el proceso de esta forma como dice Hermo.

    También estas plantillas nos pueden valer para darnos ideas si hay algunas cosas que no sabemos cómo hacerlas y llevan el módulo correspondiente que nos podemos copiar en nuestros EAs.

    Igualmente hay programas que te generan código sin tener que saber programar, tú solo le pones las condiciones de tu estrategia en un entorno gráfico y ellos ya te generan todo el código, pero para mí tienen el mismo problema, y es que usan el mismo concepto este , con una plantilla digamos "global" donde van todas, absolutamente todas las funciones posibles que puedes pedirle al EA, por si acaso luego las vas a usar, pero a lo mejor de 100 funciones tú y tu estrategia al final solo usas 6 u 8, con lo cual tienes miles de líneas de código inútilmente. Te pongo el ejemplo de un EA generado por este sistema, que tardaba 35 minutos en realizar un backtest por el método del 99% con datos de tick (un simple backtest y no una optimización), y encima nos generaba un archivo de log hipermegasuper detallado que nos ocupaba 4,5 GB (si Gigabytes, habeis leíddo bien, jeje). Pues bien, empecé a eliminar todas las funciones que no se usaban (cientos), y a recolocar aquellas que, por ejemplo no era necesario que me comprobase en cada tick, sino que era suficiente que lo hiciese a apertura de vela, además de añadirle otra opción para que no me generase log detallado y, el mismo backtest, con los mismos históricos ahora me tarda menos de 5 minutos. Sin embargo, tardé varias horas en ver cómo estaba todo el código e ir viendo qué podía eliminar y qué no, y cómo podía recolocarlo todo.

    Conclusión: tardo mucho más en eliminar partes que no voy a usar, y en depurar el código que en hacerlo desde 0, o si no desde 0, al menos cogiendo código hecho, pero solo de lo que mi EA va a necesitar y usar. (No es el caso de tu plantilla, porque aún no lleva todas las funciones, pero imagina que se empieza a trabajar, la gente empieza a aportar ideas, y se le van añadiendo 1000 opciones más para cubrir las necesidades de todo el mundo). En ese caso ya estaríamos en las mismas, y mi humilde opinión es que es muy de agradecer y que nos sería muy válida, pero para cuando queramos meter un módulo de lo que sea y no sepamos cómo hacerlo o nos de pereza programarlo desde 0, entonces cogerlo de la plantilla y pegarlo directamente en nuestro EA, pero hacerlo al revés no lo veo óptimo, por los motivos comentados.

    Por otra parte, viendo el código de la plantilla, yo algunas de las variables que metes con input, las metería como extern, (sobre todo SL, TP, etc etc), ya que como input sí que puedes modificarlas en las propiedades del EA a la hora de hacer el backtest, pero no puedes incluírlas en los procesos de optimización.

    Lo dicho, muchísimas gracias por la iniciativa. También llevas mi reputación.

    Saludos y abrazos a todos.
    Foro de Forex Trading United

     

  2.                         
    Publi
  3. #22




    Reputación:
    Poder de reputación: 3

    Mensajes: 26
    Créditos: 1.634

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por robertomar Ver mensaje
    Muchísimas gracias por la iniciativa MRCSoft. Me parece un buen punto de partida para muchas personas que son traders pero no se han adentrado en el mundo del trading automático, y hasta les da casi miedo abrir el código y las entrañas del EA.


    Mi humilde opinión es que, como bien dice Hermo, yo prefiero programar directamente las condiciones de mi estrategia y, dependiende de qué cosas vaya a usar o meterle a la misma (BreakEven, TrailingStop, Money Management, etc etc etc) entonces le voy añadiendo lo necesario, pero solo y exclusivamente lo necesario. Pienso que tener una plantilla con todo es posible que le pueda facilitar el trabajo a quien no ha abierto nunca el código de un EA y que, por tanto, pueda meter en la parte correspondiente el bloque de su estrategia y tirar para adelante, pero como bien sabes en el propio código, en la propia estrategia, y en los propios indicadores que ésta pueda usar hay 1000 matices y cada una requerirá unos procesos y una codificación diferente.

    Por ejemplo, es posible que por necesidades de la propia estrategia y de cómo y cuándo compruebe sus señales, o cúando vaya modificando su SL o su Trailing, etc, sea necesario usar otras funciones adicionales al OnTick(), como por ejemplo en ciertas estrategias puede ser necesario usar el OnTimer(), el OnCalculate, o el OnChartEvent(). Por lo que no veo tan sencillo ni tan óptimo en cuanto a resultado final codificado, meterle unas señales de entrada o salida exclusivamente ahí a una plantilla con todos los bloques. Yo más bien veo estas plantillas muy útiles para, por ejemplo, si yo no se como hacer un Trailing, pues cojo y en mi EA donde ya tengo programada la estrategia, sus señales, tengo externalizadas las variables de mis indicadores, etc etc y todo optimizado en base a sus necesidades, entonces le meto sólo el bloque del Trailing que lleva la plantilla. Veo más óptimo el proceso de esta forma como dice Hermo.

    También estas plantillas nos pueden valer para darnos ideas si hay algunas cosas que no sabemos cómo hacerlas y llevan el módulo correspondiente que nos podemos copiar en nuestros EAs.

    Igualmente hay programas que te generan código sin tener que saber programar, tú solo le pones las condiciones de tu estrategia en un entorno gráfico y ellos ya te generan todo el código, pero para mí tienen el mismo problema, y es que usan el mismo concepto este , con una plantilla digamos "global" donde van todas, absolutamente todas las funciones posibles que puedes pedirle al EA, por si acaso luego las vas a usar, pero a lo mejor de 100 funciones tú y tu estrategia al final solo usas 6 u 8, con lo cual tienes miles de líneas de código inútilmente. Te pongo el ejemplo de un EA generado por este sistema, que tardaba 35 minutos en realizar un backtest por el método del 99% con datos de tick (un simple backtest y no una optimización), y encima nos generaba un archivo de log hipermegasuper detallado que nos ocupaba 4,5 GB (si Gigabytes, habeis leíddo bien, jeje). Pues bien, empecé a eliminar todas las funciones que no se usaban (cientos), y a recolocar aquellas que, por ejemplo no era necesario que me comprobase en cada tick, sino que era suficiente que lo hiciese a apertura de vela, además de añadirle otra opción para que no me generase log detallado y, el mismo backtest, con los mismos históricos ahora me tarda menos de 5 minutos. Sin embargo, tardé varias horas en ver cómo estaba todo el código e ir viendo qué podía eliminar y qué no, y cómo podía recolocarlo todo.

    Conclusión: tardo mucho más en eliminar partes que no voy a usar, y en depurar el código que en hacerlo desde 0, o si no desde 0, al menos cogiendo código hecho, pero solo de lo que mi EA va a necesitar y usar. (No es el caso de tu plantilla, porque aún no lleva todas las funciones, pero imagina que se empieza a trabajar, la gente empieza a aportar ideas, y se le van añadiendo 1000 opciones más para cubrir las necesidades de todo el mundo). En ese caso ya estaríamos en las mismas, y mi humilde opinión es que es muy de agradecer y que nos sería muy válida, pero para cuando queramos meter un módulo de lo que sea y no sepamos cómo hacerlo o nos de pereza programarlo desde 0, entonces cogerlo de la plantilla y pegarlo directamente en nuestro EA, pero hacerlo al revés no lo veo óptimo, por los motivos comentados.

    Por otra parte, viendo el código de la plantilla, yo algunas de las variables que metes con input, las metería como extern, (sobre todo SL, TP, etc etc), ya que como input sí que puedes modificarlas en las propiedades del EA a la hora de hacer el backtest, pero no puedes incluírlas en los procesos de optimización.

    Lo dicho, muchísimas gracias por la iniciativa. También llevas mi reputación.

    Saludos y abrazos a todos.
    robertomar, gracias por tu interes en el tema.
    Estoy 100% de acuerdo contigo, hay miles de formas de programar, yo mismo he pasado por varias etapas en mi vida como programador (programacion procedimental, funcional, orientada a eventos, multithreading, maquinas de estados, etc).
    Lo que menos pretendo es obligar o plantear una unica manera de hacer las cosas, todo lo contrario, solo pretendia comenzar con un código sencillo, principalmente para los no programadores, para alentarlos a que discutan y pregunten, porque hay muchas maneras de hacer las cosas, y depende mucho de la funcionalidad que se necesite.
    aprovecho para comentarles a todos que he abierto un nuevo tema comenzando con la plantilla de un indicador en blanco. Lo hice en un nuevo tema porque no quiero mezclar la programacion de EAs con la de indicadores, ya que requieren enfoques diferentes.
    Saludos a todos!!!! y por favor, sigan planteando ideas y discusiones que es la unica manera de mejorar!!!!!
    Foro de Forex Trading United

     

  4. #23




    Reputación:
    Poder de reputación: 3

    Mensajes: 26
    Créditos: 1.634

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por MCSoft Ver mensaje
    robertomar, gracias por tu interes en el tema.
    Estoy 100% de acuerdo contigo, hay miles de formas de programar, yo mismo he pasado por varias etapas en mi vida como programador (programacion procedimental, funcional, orientada a eventos, multithreading, maquinas de estados, etc).
    Lo que menos pretendo es obligar o plantear una unica manera de hacer las cosas, todo lo contrario, solo pretendia comenzar con un código sencillo, principalmente para los no programadores, para alentarlos a que discutan y pregunten, porque hay muchas maneras de hacer las cosas, y depende mucho de la funcionalidad que se necesite.
    aprovecho para comentarles a todos que he abierto un nuevo tema comenzando con la plantilla de un indicador en blanco. Lo hice en un nuevo tema porque no quiero mezclar la programacion de EAs con la de indicadores, ya que requieren enfoques diferentes.
    Saludos a todos!!!! y por favor, sigan planteando ideas y discusiones que es la unica manera de mejorar!!!!!
    robertomar, me falto solo una aclaración sobre las variables input y extern que mencionas en tu mensaje:
    Las variables input y extern tienen el mismo comportamiento desde el punto de vista del ingreso de parametros al EA, también, ambos tipos de variables se pueden optimizar.
    La unica diferencia entre las variables input y extern es que las primeras, son constantes dentro del programa (no se les puede asignar un valor nuevo por código mientras el EA esta corriendo), mientras que las extern se pueden modificar dentro del código:
    Extern variables - MQL4 Documentation
    Saludos!!!!!
    Foro de Forex Trading United

     

  5. #24
    Avatar de indovinello
    Neanderthalensis


    Reputación:
    Poder de reputación: 17

    Bolivia
    Mensajes: 3.792
    Créditos: 12.975

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por Ciclo Ver mensaje
    Aclarado.

    MCSoft, mira este indicador, a ver si se puede implementar como un criterio en la plantilla EA como un ejemplo. Tiene tanto criterio de entrada como de salida. Seria interesante que a simple vista se pudiera distinguir entre el codigo de plantilla el el codigo de criterio por decirlo de alguna manera.

    Si no se entiende bien algo me lo dices y aclaro cualquier punto.

    Si crees que no es de interés pues nada, pero viendo esto ya pordiamos implementar otros criterios o añadir filtros y cosas.

    Abrazos.



    No consigo subir el archivo. No me funciona el sistema de subida de archivos, el boton de seleccionar archivos. ¿A alguien mas le pasa?
    Puedes intentar meterlo en un zip o incluso intentar el anexo desde otro navegador. Es lo que se me ocurre.

    Saludos.
    Foro de Forex Trading United




  6. #25
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 905
    Créditos: 15.929

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por MCSoft Ver mensaje
    robertomar, me falto solo una aclaración sobre las variables input y extern que mencionas en tu mensaje:
    Las variables input y extern tienen el mismo comportamiento desde el punto de vista del ingreso de parametros al EA, también, ambos tipos de variables se pueden optimizar.
    La unica diferencia entre las variables input y extern es que las primeras, son constantes dentro del programa (no se les puede asignar un valor nuevo por código mientras el EA esta corriendo), mientras que las extern se pueden modificar dentro del código:
    Extern variables - MQL4 Documentation
    Saludos!!!!!
    Ok, era un tema de la build con las variables de tipo bool. Yo, como bien sabe Ciclo, uso varias builds diferentes para distintas tareas. Pues bien, en la build 610, las variables de tipo bool no nos permite optimizarlas. Aquí la captura:

    Mi primer aporte: Template EA en blanco-bool-no-optimizable.png

    Em cambio a partir de la build 625 sí que nos permite optimizarlas para ver si nos interesa más tenerlas en true o en false. Aquí la captura:

    Mi primer aporte: Template EA en blanco-bool-optimizable.png

    Era por eso, sólo por la build que estamos usando.

    Muchas gracias de nuevo y ánimo. A ver si surgen más ideas de la gente compañero.

    Saludos y abrazos.
    Foro de Forex Trading United

     

  7. #26
    Avatar de Ciclo
    Heidelbergensis


    Reputación:
    Poder de reputación: 14

    Espana
    Mensajes: 2.431
    Créditos: 19.921

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por MCSoft Ver mensaje
    Ciclo buenas tardes!!!!
    Espero con ansiedad que me envíes el indicador para analizarlo, y ver como lo integramos al EA para que todos los seguidores del tema puedan ver como integrar un indicador en un EA.
    Si aun no te funciona la opcion de subir archivos me lo puedes enviar por correo a mmcorreas@gmail.com, y yo lo subo al post
    Desde ya voy adelantando que cuando tenemos un indicador y queremos integrarlo en el EA, hay dos alternativas:

    1- Copiar el codigo del indicador (la parte de calculo) dentro del EA
    2- Solicitar desde el EA la ejecucion del indicador y obtener el calculo del mismo en cada tick

    La segunda opción es la mas sencilla, pero requiere distribuir el indicador (compilado en ex4) junto con nuestro EA para que funcione.
    Espero entonces que me envíes el archivo para subirlo y comenzar.
    Saludos


    Enviado, MCSoft.

    Yo preferiria que no se hicieran llamadas al indicador sino que se implementara el codigo dentro del EA y se sustituyeran las flechas por ordenes de entrada y salida. Pero, al final tu criterio manda.

    Saludos.
    Foro de Forex Trading United

     

  8. #27
    Avatar de Ciclo
    Heidelbergensis


    Reputación:
    Poder de reputación: 14

    Espana
    Mensajes: 2.431
    Créditos: 19.921

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por indovinello Ver mensaje
    Puedes intentar meterlo en un zip o incluso intentar el anexo desde otro navegador. Es lo que se me ocurre.

    Saludos.
    Hola Indovinelo. Ni siquiera me da acceso a mis archivos, el boton sencillamente no funciona.
    Foro de Forex Trading United

     

  9. #28




    Reputación:
    Poder de reputación: 3

    Mensajes: 26
    Créditos: 1.634

    Re: Mi primer aporte: Template EA en blanco

    Buenas tardes amigos!!!!
    aquí estamos de nuevo, el compañero Ciclo hizo la punta proponiendo un indicador como generador de señales para nuestro EA.
    Como El no ha podido subirlo al foro lo hago yo en este post:

    3MAS Cross Alert v2.mq4

    Estuve analizando el código del indicador. Este indicador genera una alerta a partir del cruce de 3 medias móviles, que en sus valores por defecto son:
    media1 = periodo 4
    media2 = periodo 18
    media3 = periodo 40
    El algoritmo que emplea el indicador para generar la alerta es el siguiente:

    1- Si las 3 medias estan una por encima de la otra, es decir media1 > media2 > media3, entonces la tendencia es alcista.
    2- Si las 3 medias estan una por debajo de la otra, es decir media1 < media2 < media3, entonces la tendencia es bajista.
    3- Si no se cumple ninguna de las condiciones previas, la tendencia es indeterminada.

    - El indicador genera una alerta de compra cuando la tendencia pasa de bajista (2) o indeterminada (3) a alcista (1).
    - El indicador genera una alerta de venta cuando la tendencia pasa de alcista (1) o indeterminada (3) a bajista (2).
    - El indicador genera una alerta para salir de la posición de compra cuando la tendencia cambia de alcista (1) a bajista (2) o indeterminada (3)
    - El indicador genera una alerta para salir de la posición de venta cuando la tendencia cambia de bajista (2) a alcista (1) o indeterminada (3)

    Este es el indicador en el terminal, el mismo solo muestra las flechas para abrir posiciones, y las cruces para indicar el cierre, yo agregue por mi cuenta las medias para observar en que se basa en indicador:

    Mi primer aporte: Template EA en blanco-eurusdm5.png

    Aunque parezca complejo, el codigo es bastante sencillo, por eso decidí incluir la logica en el EA, y no hacer una llamada al indicador.
    Como les comente unos renglones mas arriba, la alerta se genera por un cambio de tendencia. Para detectar un cambio de tendencia, o hablando mas genericamente un CAMBIO en cualquier condicion (cambio de un valor, cruce de medias, etc), necesitamos comparar la condición actual con la condición previa.
    En el codigo del EA, las 3 medias se calculan para el tick actual que esta corriendo y para la vela previa, es decir, 2 valores por cada media, el valor actual y el valor previo (de la vela previa). Esto nos permite tener los valores de la condicion actual y la condicion previa para comparar.

    Adjunto el EA mas abajo, pero lo unico en que se diferencia con el template en blanco es el calculo de las medias actual y previa:

    Código:
      // --------------------------------------
       // Calcular indicadores
       // --------------------------------------
       //
       // ######################################################
       // aqui se calculan los indicadores necesarios para la estrategia 
       
       // En este caso, calculamos 3 medias moviles de tipo Exponencial sobre el precio de cierre.
       // Calculamos 6 valores, porque para detectar los cruces necesitamos el valor de cada media
       // en el instante actual y de la misma media sobre la berra anterior a la actual.
       
       // Valor de ma1 en el tick actual 
       double ma1_actual = iMA(Symbol(), 0, periodo_ma1, 0, MODE_EMA, PRICE_CLOSE, 0);
       // valor de ma1 en la barra o vela previa (ver el parametro 1 al final de la 
       // funcion, si fuese 10 por ejemplo, seria el valor de la media sobre la decima 
       // vela anterior a la actual)
       double ma1_previa = iMA(Symbol(), 0, periodo_ma1, 0, MODE_EMA, PRICE_CLOSE, 1);
    
    
       double ma2_actual = iMA(Symbol(), 0, periodo_ma2, 0, MODE_EMA, PRICE_CLOSE, 0);
       double ma2_previa = iMA(Symbol(), 0, periodo_ma2, 0, MODE_EMA, PRICE_CLOSE, 1);
    
    
       double ma3_actual = iMA(Symbol(), 0, periodo_ma3, 0, MODE_EMA, PRICE_CLOSE, 0);
       double ma3_previa = iMA(Symbol(), 0, periodo_ma3, 0, MODE_EMA, PRICE_CLOSE, 1);
       // ######################################################
    iMA es la funcion de MQL que nos permite calcular una media movil obre el precio. Tiene como parametros: El simbolo sobre el que se calcula (en este caso se emplea Symbol(), que indica calcular sobre el simbolo del chart en el que se encuentra corriendo el EA), el timeframe sobre le cual calcular el indicador (en este caso 0, para denotar el timeframe del chart actual), el periodo (se ha dejado como variable input del EA para luego optimizar los valores de las medias), el desplazamiento (se dejo en 0), em modo de calculo (en este caso se fijo en MODE_EMA, es una media Exponencial, aunque se podría haber dejado tambien como variable del EA para optimizar y ver que da mejores resultados), el precio sobre el cual se aplica el calculo (en este caso PRICE_CLOSE es sobre el precio de cierre de cada vela), y el ultima parametro de la funcion iMA, le indica cual es el punto del indicador que queremos que nos calcule. Si el ultimo parametro es 0, la funcion nos retorna la media movil calculada sobre el precio actual en este tick, mientras que si el parametro es 1, retorna el valor del indicador calculado sobre la vela previa, 2, sobre la anterior y asi sucesivamente.
    En este caso estamos calculando cada media sobre el tick actual (iMA con parametro final = 0), y sobre la vela previa (parametro=1).
    Los resultados de los indicadores los guardamos en variables, entonces tendremos 6 variables, 2 para cada media, una conteniendo el valor de la media para el tick actual y otra para la vela previa.

    Ya que tenemos los calculos de las medias en el instante actual y en la vela previa, resta comprobar las condiciones y disparar las señales:

    Código:
       // --------------------------------------
       // Generar señales de compra y venta
       // --------------------------------------  
      
       // Verificar condiciones de compra
       // -------------------
       // Verificar si se dan las condiciones de compra de acuerdo a la 
       // estrategia(indicadores, tiempo, etc).
       // Si las condiciones se cumplen, se setea la señal senal_abrir_buy
       // ######################################################
    
    
       // En este caso, el EA determina la tendencia actual del precio y la 
       // compara con la tendencia previa. Si la tendencia ha cambiado a 
       // alcista, dispara una señal de compra, y de lo contrario, una señal de
       // venta.   
       double tendencia_previa;
       double tendencia_ahora;
    
    
       // setear tendencia actual y previa en 0 (indeterminada)
       tendencia_previa = 0;
       tendencia_ahora = 0;
    
    
       // las variables tendencia_previa y tendencia_actual contendran el estado de
       // la tendencia en la vela previa y en la vela actual respectivamente.
       // cada una de las dos variables puede contener:
       // valor 1: tendencia alcista
       // valor 0: tendencia indeterminada
       // valor -1: tendencia bajista
       
       // para determinar la tendencia se realiza la siguiente comprobación:
       // si ma1 > ma2 > ma3 se considera tendencia alcista
       // si ma1 < ma2 < ma3 se considera tendencia bajista
       // si no se cumple ninguna de las condiciones anteriores, la tendencia es
       // indeterminada.
    
    
       // verificar la tendencia en el tick actual ( barra 0).
       // si las tres medias estan una arriba de la otra, la tendencia es alcista (1)
       if ( ma1_actual > ma2_actual && ma2_actual > ma3_actual)
          // ma1 > ma2 > ma3 en el tick actual (0)
          tendencia_ahora = 1; 
    
    
       // verificar la tendencia en la barra previa (barra + 1)
       if ( ma1_previa > ma2_previa && ma2_previa > ma3_previa)
          tendencia_previa = 1; 
    
    
       // si las tres medias estan una debajo de la otra, la tendencia es bajista (-1)
       if ( ma1_actual < ma2_actual && ma2_actual < ma3_actual)
          tendencia_ahora = -1; 
    
    
       // verificar la tendencia en la barra previa
       if ( ma1_previa < ma2_previa && ma2_previa < ma3_previa)
          tendencia_previa = -1; 
    
    
       // al comienzo del bloque de comparaciones, se habian seteado tendencia_previa 
       // y tendencia_actual en 0.
       // si la tendencia actual es positiva (1) y la tendencia previa es distinta de 1 
       // (0 indeterminada y -1 negativa), significa que la tendencia paso de bajista o
       // indeterminada a ser alcista, entonces es una señal de compra
       if ( tendencia_ahora == 1 && tendencia_previa != 1)
          senal_abrir_buy = 1;
    
    
       // ######################################################
    
    
       // Verificar condiciones de venta
       // -------------------
       // Verificar si se dan las condiciones de venta de acuerdo a la 
       // estrategia(indicadores, tiempo, etc).
       // Si las condiciones se cumplen, se setea la señal senal_abrir_buy
       // ######################################################
       // si por el contrario, la tendencia actual es negativa (-1) y la tendencia previa
       // no era negativa, se genera una señal de venta
       if ( tendencia_ahora == -1 && tendencia_previa != -1)
          senal_abrir_sell = 1;
       // ######################################################
       // --------------------------------------
    Nota: En el codigo he dejado los delimitadores ######### que habia puesto para que se observe como se ha completado el código sobre el template en blanco.
    Creo que los comentarios son bastante explicativos, aún asi, cualquier duda que tengan será respondida con gusto.

    Con las comprobaciones realizadas generamos las señales de compra (senal_abrir_buy=1) y de venta (senal_abrir_sell=1).
    Ahora solo restan las comproaciones para cerrar posiciones:

    Código:
       // --------------------------------------
       // Generar señales de cierre
       // --------------------------------------  
    
    
       // Verificar cierre de compras
       // -------------------
       // Verificar si se dan las condiciones para cerrar las operaciones
       // de compra abiertas (cambio de tendencia alcista a bajista por ejemplo)
       // si se determina que las condiciones indican cerrar las posiciones buy, 
       // setear la señal senal_cerrar_buy
       // ######################################################
       // la señal de cierre de operaciones de compra se da cuando la 
       // tendencia pasa de alcista a indeterminada o bajista
       if ( tendencia_previa == 1 && tendencia_ahora != 1 )
          senal_cerrar_buy = 1;
       // ######################################################
    
    
       // Verificar cierre de ventas
       // -------------------
       // Verificar si se dan las condiciones para cerrar las operaciones
       // de venta abiertas (cambio de tendencia bajista a alcista por ejemplo)
       // si se determina que las condiciones indican cerrar las posiciones sell, 
       // setear la señal senal_cerrar_sell
       // ######################################################
       // la señal de cierre de operaciones de venta se da cuando la 
       // tendencia pasa de bajista a indeterminada o alcista
       if ( tendencia_previa == -1 && tendencia_ahora != -1 )
          senal_cerrar_sell = 1;
       // ######################################################
       // --------------------------------------
    Este es el código completo del EA:

    3MAS Cross Alert v2.mq4

    Desde ya voy adelantando que el resultado por defecto no es muy satisfactorio, este es un backtesting entre 01/01/2012 y 01/01/2014 (2 años):

    Mi primer aporte: Template EA en blanco-testergraph1.gif

    He obtenido mejores resultando eliminando los bloques de cierre de operaciones y la generacion de señales de venta, e decir, solo dejando la generacion de señales de compra, y dejando que las operaciones se cierren por stop o por profit (el trailing stop esta activado), se obtiene un resultado mejor:

    Mi primer aporte: Template EA en blanco-testergraph2.gif

    Este es el EA que solo genera señales de compra (no genera señales de venta ni de cierre):

    MCSoft_EA_3MA_v1.0_solo_compra.mq4

    Aunque la curva del balance no se vea muy alentadora, el reporte del test indica 79% de operaciones ganadoras. Pregunto a los traders experimentados: con ese porcentaje de operaciones ganadoras, este EA tiene esperanzas de llegar a ser beneficioso?

    Bueno amigos, espero vuestros comentarios, me gustaría que prueben el código, lo optimicen y propongamos entre todos que mejoras se pueden hacer para tratar de que este EA de beneficios.
    Saludos!!!!!
    Foro de Forex Trading United

     

  10. #29

    Erectus


    Reputación:
    Poder de reputación: 4

    Mensajes: 197
    Créditos: 462

    Re: Mi primer aporte: Template EA en blanco

    Reputación compañero
    Foro de Forex Trading United

     

  11. #30
    Avatar de Hermo
    Heidelbergensis


    Reputación:
    Poder de reputación: 11

    Mensajes: 858
    Créditos: 5.058

    1º Version 3MAS Cross Alert v2


    Publi
    Cita Iniciado por MCSoft Ver mensaje
    Buenas tardes amigos!!!!

    Este es el código completo del EA:

    3MAS Cross Alert v2.mq4

    Desde ya voy adelantando que el resultado por defecto no es muy satisfactorio, este es un backtesting entre 01/01/2012 y 01/01/2014 (2 años):

    Mi primer aporte: Template EA en blanco-testergraph1.gif

    He obtenido mejores resultando eliminando los bloques de cierre de operaciones y la generacion de señales de venta, e decir, solo dejando la generacion de señales de compra, y dejando que las operaciones se cierren por stop o por profit (el trailing stop esta activado), se obtiene un resultado mejor:

    Mi primer aporte: Template EA en blanco-testergraph2.gif

    Este es el EA que solo genera señales de compra (no genera señales de venta ni de cierre):

    MCSoft_EA_3MA_v1.0_solo_compra.mq4

    Aunque la curva del balance no se vea muy alentadora, el reporte del test indica 79% de operaciones ganadoras. Pregunto a los traders experimentados: con ese porcentaje de operaciones ganadoras, este EA tiene esperanzas de llegar a ser beneficioso?

    Bueno amigos, espero vuestros comentarios, me gustaría que prueben el código, lo optimicen y propongamos entre todos que mejoras se pueden hacer para tratar de que este EA de beneficios.
    Saludos!!!!!
    Buenos días MCSoft:

    Por partes:

    * ENORME CON EL TRABAJO DE PROGRAMACION, todavía no he visto el código, pero solo por el trabajo que has realizado te mereces todo mi respeto.Mi primer aporte: Template EA en blanco-aplaudir.gif


    * Antes de ponerme con el código, insisto y para no mezclar churras con merinas ("dos razas de ovejas diferentes"), deberíamos de diferenciar pasos.

    A la hora de plantearnos automatizar una estrategia existen varios pasos que aunque correlacionados os daréis cuenta que no tienen nada que ver unos con otros. Voy a tratar de resumir los que yo considero más importantes.

    1º Paso, Borrador de la estrategia, por ejemplo este paso nos lo hemos saltado, también es cierto que el tema no trata de proponer estrategias para programar, si no de programación, pero bueno, creo que es un paso importante y que todo el mundo debería de realizar antes de ponerse a programar nada, dejar claras todas las normas y condiciones de su sistema ya sea en un cuaderno viejo, en un Word, en bloc de notas, en la pared de su dormitorio... etc.

    2º Paso, Programar, evidentemente paso vinculado a saber de programación, este es en el tema que estamos, súper interesante y que tiene para largo.

    3º Paso, Comprobación, TODO FUNCIONA CORRECTAMENTE, no pongo en duda que lo que has programado está bien MCSoft, solo lo digo para que la gente se acostumbre a los buenos hábitos, antes de buscar resultados en una Ea, deberíamos de comprobar que todo funciona correctamente y que hace lo que tiene que hacer sin excepción. Ya sea con pruebas visuales en cuentas demo ya sea en un backtest.

    4º Paso, Análisis, así le llamamos en el Grupo de trabajo al que pertenezco, esto ya es otro tema que como he dicho antes aunque correlacionado, no tiene nada que ver con programación, esto ya es otro debate infinito y que sería maravilloso escuchar todo lo que podáis aportar sobre el análisis de una EA y sus resultado. Me refiero a las pruebas de optimización, posterior backtest y por poner un punto y final, conclusiones. Como podéis ver a este último paso tendría sus diferentes apartados, aunque os parezca un rollo, no lo es, sé que es engorroso, pero o se hace bien o no se hace, eso es lo que tenéis que tener claro. Con este cuarto paso te contesto a lo que te remarco en rojo MCSoft. Por lo tanto te propongo, ya que has iniciado tú el Tema, que hagas exactamente lo mismo, abre un tema nuevo proponiendo el Análisis de esta EA y las que puedan venir, así separas los diferentes pasos y queda todo más limpio.

    Yo a lo largo del día veré ese fantástico código y seguro que te preguntare cosillas.

    Un fuerte abrazo y muchísimas gracias a todos.

    Hermo.

    PD. Es una propuesta, no significa que yo tenga razon o que lo querais hacer de otro modo, ok.
    Foro de Forex Trading United



Página 3 de 7 PrimerPrimer 1234567 ÚltimoÚltimo

Etiquetas para este tema

Publi
Publi


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