Herramientas MT4 Mi primer aporte: Template EA en blanco - Página 5
Página 5 de 7 PrimerPrimer 1234567 ÚltimoÚltimo
Resultados 41 al 50 de 63


  1. #41




    Reputación:
    Poder de reputación: 13

    Mensajes: 33
    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

  2. #42




    Reputación:
    Poder de reputación: 13

    Mensajes: 33
    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

  3. #43

    Re: Mi primer aporte: Template EA en blanco

    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

  4. #44




    Reputación:
    Poder de reputación: 13

    Mensajes: 33
    Créditos: 1.634

    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?
    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 [email protected], 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
    Foro de Forex Trading United

  5. #45
    Avatar de Ciclo



    Reputación:
    Poder de reputación: 26

    Espana
    Mensajes: 2.510
    Créditos: 23.821

    Re: Mi primer aporte: Template EA en blanco

    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?
    Foro de Forex Trading United

  6. #46




    Reputación:
    Poder de reputación: 13

    Mensajes: 33
    Créditos: 1.634

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por Hermo Ver mensaje
    Hola Ciclo:

    Te voy a responder a esto desde la ignorancia total de programación, pero basándome en ejemplos que yo tengo.

    Como bien te ha contestado MCSoft hoy en día los programadores comparten el mismo editor para MT4 y MT5, y por lo que puedo observar en mis EAs, dependiendo del programador, donde antes se usaba genéricamente int start(), hoy en día muchos programadores usan void OnTick(), pero indistintamente, depende mucho de la persona que lo programe y de los conocimientos que tenga de programación.

    Código:
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    
    datetime data;
    
    int start()
      {  
      }
    
    Ahora se utiliza mucho
    
    void OnTick()
    
    {
    }
    Es mi humilde opinión, por favor corregidme si me equivoco.

    Un fuerte abrazo.

    Hermo.
    Hermo, estas en lo cierto. Tanto Metatrader 4 (MT4) como Metatrader 5 (MT5) incorporan el mismo editor de código (Metaeditor). MT4 con su editor de codigo por defecto utilizaba el lenguaje MQL4 como lenguaje para indicadores, EAs y Scripts. La intencion de Metaquotes era reemplazar totalmente la plataforma tanto del lado del broker como del trader, e imponer MT5 (el lanzamiento fue en Junio de 2010), con el nuevo editor de código y el nuevo lenguaje MQL5, incompatible con MQL4.
    Los primeros en resistirse al cambio fueron los brokers, porque tenian una base muy grande de clientes con MT4, y los beneficios no eran suficientes como para obligar a todos sus clientes a cambiar a MT5, entonces siguieron trabajando con MT4, y por otro lado, los programadores que ya tenian productos, indicadores, scripts, etc programados en MQL4 se verian obligados a reprogramar todo. La resistencia al cambio despues de 4 años aún continua, y Metaquotes se vio forzado a seguir actualizando MT4 e incorporar la mayoria de las novedades que iban a ser exclusivas de MT5 (como el servicio de señales integrado en la plataforma, y el market de aplicaciones), haciendo tambien que el editor de codigo sea compatible con ambos lenguajes.
    Desde el punto de vista de la programacion el editor de codigo ahora permite indistintamente trabajar con ambos lenguajes, pero incluso permite mezclarlos en el mismo script o EA, lo cual me parece totalmente incorrecto.
    Actualmente es posible compilar cualquier EA o indicador que bajemos de internet en nuestro editor, sin importar si fue escrito en MQL4, en MQL5 o en una mezcla de ambos, incluso permite programar con MQL4 y guardar el resultado en un archivo .mq5 o al revés, programar en MQL5 y guardar en archivo .mq4 (compilado queda como .ex4).
    Como programador recomiendo a quien este empezando, tratar de adecuarse y usar MQL5, ya que cuando los brokers se pasen definitivamente a MT5 (para lo cual falta, pero esta pasando), Metaquotes va a dejar de dar soporte a MQL4.
    Me extendi un poco, se nota que me gusta el tema no? ja ja
    Saludos
    Foro de Forex Trading United

  7. #47
    Avatar de indovinello



    Reputación:
    Poder de reputación: 27

    Bolivia
    Mensajes: 3.778
    Créditos: 12.975

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por MCSoft Ver mensaje
    Gracias a todos por la aceptación del tema y por vuestros consejos. Estoy agradecido de recibir el aliento y los consejos de miembros con mucha trayectoria en la comunidad (Hermo, Ciclo).
    Quiero contarles a todos, y en respuesta a los consejos de Hermo principalmente, porque se me ocurrio subir esta plantilla.
    Como ya comente previamente , soy desarrollador. Me tope con el mundo del trading justamente buscando información de programación, buscando en google me aparecieron los famosos "asesores expertos" y me maraville de la cantidad de tecnicas de programacion que se usan en ellos (machine learning, analisis y calculo numerico, comunicaciones, analisis de señales, etc).
    No me costo mucho empezar a programar en MQL4 debido a su similitud con C, Obviamente que mi primera impresion fue "esto es muy facil, verificar unos cuantos indicadores, tomar unas decisiones y operar para ganar dinero".
    Con el tiempo, luego de muchos programas de prueba, me encontre con que la situacion no era tan sencilla, el mercado cambia mucho, y una estrategia que gana millones en los ultimos 3 meses, si se prueba en los ultimos 6 meses pierde todo, ahi es donde entra la experiencia del trader, en reconocer la situacion actual del mercado y aplicar la estrategia que mejores resultados de.
    Además, hay muchas otras cuestiones que entran en juego y que me obligaron a leer mucho, por ejemplo el money management, una estrategia con el 90% de deteccion de señales correctas puede fracasar si no tiene un correcto manejo del riesgo y de las posiciones abiertas, ya que ese 10% de señales falsas pueden provocar la perdida de toda la cuenta.
    Soy inherentemente un programador, no me gusta hacer nada "manualmente", si es posible automatizarlo ja ja, mi cabeza trabaja de esa manera y creo que ya no la puedo cambiar.

    Empece subiendo una plantilla en blanco para mostrar todo el codigo que un asesor experto lleva en su interior Y QUE NO INCLUYE EN NADA A LA ESTRATEGIA!!!!!. Si hablamos del cruce de medias moviles por ejemplo, se puede escribir un codigo funcional en unas 30 lineas de código, para detectar el cruce de medias y abrir las operaciones con take profit y stop loss fijos, pero las pruebas dan un fracaso rotundo, porque se necesita no solo saber cuando abrir posiciones, sino también cuando cerrarlas, detectar cuando una operaciones esta siendo ganadora y mover los stops y profits para aprovecharla y ganar mas. De igual manera, hay que saber cuando una operacion abierta con una señal correcta se torna perdedora y poder minimizar dicha perdida.
    Todo esto nuestro cerebro lo hace en forma automatica recurriendo a nuestra experiencia, y como en cualquier deporte que practiquemos luego de un tiempo, el pensamiento se automatiza, podemos ver un cruce de medias moviles y sin saber porque, nuestro cerebro nos dice "NO OPERES!!!!" eso es porque la experiencia esta trabajando en segundo plano, y ve patrones, y condiciones que se han generado en el pasado.
    Todo esto es muy dificil de llevar al código, creo que en ese punto es en donde falla el encuentro entre traders y programadores. Siguiendo con el ejemplo muy simple del cruce de medias moviles, el trader plantea "abrir posiciones cuando la EMA de periodo 5 cruza por encima de la EMA de periodo 20 y ambas estan por arriba de la EMA de periodo 200".
    Esa afirmación, aunque parezca contundente es muy subjetiva, porque para un programa una linea que en la vela previa iba 1 pip por debajo de la otra, y en la vela actual va 1 pip por arriba, y ambas 1 pip por arriba de la EMA 200 ya cumplen la condicion de cruce, y disparan la operación. El programa cumple las condiciones establecidas pero genera una operación desastrosa. Esto ocurre porque el cerebro del trader, basado en su experiencia "ve" mas alla de la estrategia, ve las pendientes de las curvas, si todas vienen en pendiente positiva es mas probable que la operacion sea exitosa, si vienen recuperandose de un impulso, etc. Toda esa información no se incluye en el codigo y por eso la misma estrategia que al trader le da buenos resultados operando manualmente, fracasa cuando se automatiza.

    Creo que podemos complementar todas las sugerencias, sin descartar nada, todos los aportes e ideas son buenos, y ayudan a encontrar el camino correcto. Me parecio correcto subir una plantilla en blanco para mostrar el panorama, he analizado algunos asesores expertos y muchos de ellos son realmente muy dificiles de entender, no porque tengan una estrategia muy completa, sino porque mezclan código del apertura y cierre de ordenes con money management y se forman bloques anidados muy dificiles de seguir, incluso para un programador.
    Espero vuestros comentarios, y sugerencias, si alguno de ustedes quiere analizar un EA completo le ruego lo suba , asi todos podemos descargarlo y lo analizamos, de igual manera, el que desee agregar una estrategia a esta plantilla también es bienvenido, creo que una cosa no quita a la otra, y creo que un camino puede ser mejor que otro, no necesariamente uno bueno y otro malo.
    Saludos a todos y gracias nuevamente por sus consejos y aliento.
    Buenas, MCSoft, sólo quería darte las gracias por compartir, decirte que tus planteamientos me parecen muy interesantes y que seguiré este hilo con interés y, si tengo oportunidad, aportando también.

    Saludos.
    Foro de Forex Trading United




  8. #48
    Avatar de Hermo



    Reputación:
    Poder de reputación: 21

    Mensajes: 882
    Créditos: 6.631

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por Ciclo Ver mensaje
    Hola MCSof, no veo la funcion especial start que es obligatoria y que se activa cada vez que se produce un tick.

    Saludos.
    Hola Ciclo:

    Te voy a responder a esto desde la ignorancia total de programación, pero basándome en ejemplos que yo tengo.

    Como bien te ha contestado MCSoft hoy en día los programadores comparten el mismo editor para MT4 y MT5, y por lo que puedo observar en mis EAs, dependiendo del programador, donde antes se usaba genéricamente int start(), hoy en día muchos programadores usan void OnTick(), pero indistintamente, depende mucho de la persona que lo programe y de los conocimientos que tenga de programación.

    Código:
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    
    datetime data;
    
    int start()
      {  
      }
    
    Ahora se utiliza mucho
    
    void OnTick()
    
    {
    }
    Es mi humilde opinión, por favor corregidme si me equivoco.

    Un fuerte abrazo.

    Hermo.
    Foro de Forex Trading United



  9. #49




    Reputación:
    Poder de reputación: 13

    Mensajes: 33
    Créditos: 1.634

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por Ciclo Ver mensaje
    Hola MCSof, no veo la funcion especial start que es obligatoria y que se activa cada vez que se produce un tick.

    Saludos.
    Saludos Ciclo.
    Para explicarte la estructura del programa te comento un poco la historia reciente de metatrader:
    Metatrader 5 (MT5), fue lanzado hace ya varios años, y no ha tenido la aceptación que se esperaba. Tecnicamente MT5 es mucho mejor que MT4, pero para que fuera aceptado, debia ser reemplazado primero del lado de los brokers. No se sinceramente el motivo pero los brokers se resistieron al cambio, ya teniendo una base de clientes muy grande con MT4 no quisieron actualizar ni obligar a sus clientes a cambiar.
    MT4 trabajaba con programas escritos en lenguaje MQL4, muy similar a C (es un C reducido, que no permite estructuras ni punteros por ejemplo). Por otro lado, MT5 incorporo el lenguaje MQL5, mas similar a C++ (soporte para clases y objetos entre otras cosas).
    MQL5 es incompatible con MQL4, y han cambiado los nombres de las funciones que se usan en los EAs.
    Por ejemplo, la funcion start, se reemplazo por OnTick(), la funcion init por OnInit().
    Como MQL5 planteaba muchas mejoras a nivel lenguaje de programacion, pero el terminal en si MT5 no era aceptado por los brockers, Metaquotes (la empresa desarrolladora de metatrader) decidio seguir actualizando Metatrader 4 y le incorporó el editor de codigo MQL5.
    El editor MQL5 ahora acepta y compila programas escritos en MQL4 y en MQL5.
    Esto genera mucha confusion, porque hay codigos en internet que usan la funcion start() y otros que usan OnTick(). Mi versión de Metatrader es 4.00 build 646 (Se puede conocer la version del software desde Menu->Ayuda->About), y al abrir el editor de codigo, la versión del mismo (Help ->About->Metaeditor...) veo que tengo la versión 5.00 build 934.
    Espero haber aclarado la duda, estoy a tu disposicion por cualquier otra consulta.
    Saludos
    Foro de Forex Trading United

  10. #50




    Reputación:
    Poder de reputación: 13

    Mensajes: 33
    Créditos: 1.634

    Re: Mi primer aporte: Template EA en blanco

    Gracias a todos por la aceptación del tema y por vuestros consejos. Estoy agradecido de recibir el aliento y los consejos de miembros con mucha trayectoria en la comunidad (Hermo, Ciclo).
    Quiero contarles a todos, y en respuesta a los consejos de Hermo principalmente, porque se me ocurrio subir esta plantilla.
    Como ya comente previamente , soy desarrollador. Me tope con el mundo del trading justamente buscando información de programación, buscando en google me aparecieron los famosos "asesores expertos" y me maraville de la cantidad de tecnicas de programacion que se usan en ellos (machine learning, analisis y calculo numerico, comunicaciones, analisis de señales, etc).
    No me costo mucho empezar a programar en MQL4 debido a su similitud con C, Obviamente que mi primera impresion fue "esto es muy facil, verificar unos cuantos indicadores, tomar unas decisiones y operar para ganar dinero".
    Con el tiempo, luego de muchos programas de prueba, me encontre con que la situacion no era tan sencilla, el mercado cambia mucho, y una estrategia que gana millones en los ultimos 3 meses, si se prueba en los ultimos 6 meses pierde todo, ahi es donde entra la experiencia del trader, en reconocer la situacion actual del mercado y aplicar la estrategia que mejores resultados de.
    Además, hay muchas otras cuestiones que entran en juego y que me obligaron a leer mucho, por ejemplo el money management, una estrategia con el 90% de deteccion de señales correctas puede fracasar si no tiene un correcto manejo del riesgo y de las posiciones abiertas, ya que ese 10% de señales falsas pueden provocar la perdida de toda la cuenta.
    Soy inherentemente un programador, no me gusta hacer nada "manualmente", si es posible automatizarlo ja ja, mi cabeza trabaja de esa manera y creo que ya no la puedo cambiar.

    Empece subiendo una plantilla en blanco para mostrar todo el codigo que un asesor experto lleva en su interior Y QUE NO INCLUYE EN NADA A LA ESTRATEGIA!!!!!. Si hablamos del cruce de medias moviles por ejemplo, se puede escribir un codigo funcional en unas 30 lineas de código, para detectar el cruce de medias y abrir las operaciones con take profit y stop loss fijos, pero las pruebas dan un fracaso rotundo, porque se necesita no solo saber cuando abrir posiciones, sino también cuando cerrarlas, detectar cuando una operaciones esta siendo ganadora y mover los stops y profits para aprovecharla y ganar mas. De igual manera, hay que saber cuando una operacion abierta con una señal correcta se torna perdedora y poder minimizar dicha perdida.
    Todo esto nuestro cerebro lo hace en forma automatica recurriendo a nuestra experiencia, y como en cualquier deporte que practiquemos luego de un tiempo, el pensamiento se automatiza, podemos ver un cruce de medias moviles y sin saber porque, nuestro cerebro nos dice "NO OPERES!!!!" eso es porque la experiencia esta trabajando en segundo plano, y ve patrones, y condiciones que se han generado en el pasado.
    Todo esto es muy dificil de llevar al código, creo que en ese punto es en donde falla el encuentro entre traders y programadores. Siguiendo con el ejemplo muy simple del cruce de medias moviles, el trader plantea "abrir posiciones cuando la EMA de periodo 5 cruza por encima de la EMA de periodo 20 y ambas estan por arriba de la EMA de periodo 200".
    Esa afirmación, aunque parezca contundente es muy subjetiva, porque para un programa una linea que en la vela previa iba 1 pip por debajo de la otra, y en la vela actual va 1 pip por arriba, y ambas 1 pip por arriba de la EMA 200 ya cumplen la condicion de cruce, y disparan la operación. El programa cumple las condiciones establecidas pero genera una operación desastrosa. Esto ocurre porque el cerebro del trader, basado en su experiencia "ve" mas alla de la estrategia, ve las pendientes de las curvas, si todas vienen en pendiente positiva es mas probable que la operacion sea exitosa, si vienen recuperandose de un impulso, etc. Toda esa información no se incluye en el codigo y por eso la misma estrategia que al trader le da buenos resultados operando manualmente, fracasa cuando se automatiza.

    Creo que podemos complementar todas las sugerencias, sin descartar nada, todos los aportes e ideas son buenos, y ayudan a encontrar el camino correcto. Me parecio correcto subir una plantilla en blanco para mostrar el panorama, he analizado algunos asesores expertos y muchos de ellos son realmente muy dificiles de entender, no porque tengan una estrategia muy completa, sino porque mezclan código del apertura y cierre de ordenes con money management y se forman bloques anidados muy dificiles de seguir, incluso para un programador.
    Espero vuestros comentarios, y sugerencias, si alguno de ustedes quiere analizar un EA completo le ruego lo suba , asi todos podemos descargarlo y lo analizamos, de igual manera, el que desee agregar una estrategia a esta plantilla también es bienvenido, creo que una cosa no quita a la otra, y creo que un camino puede ser mejor que otro, no necesariamente uno bueno y otro malo.
    Saludos a todos y gracias nuevamente por sus consejos y aliento.
    Foro de Forex Trading United

Página 5 de 7 PrimerPrimer 1234567 ÚltimoÚltimo
This website uses cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

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