Herramientas MT4 Mi primer aporte: Template EA en blanco - Página 4

 

Publi

Mi primer aporte: Template EA en blanco

 

Publi

Página 4 de 7 PrimerPrimer 1234567 ÚltimoÚltimo
Resultados 31 al 40 de 63


  1. #31




    Reputación:
    Poder de reputación: 10

    Mensajes: 26
    Créditos: 1.634

    Re: EA MCSoft_3MA_v1.00_Solo Compras


    Publi
    Cita Iniciado por Hermo Ver mensaje
    Buenas tardes a todos:

    Hola MCSoft, como ya comente en mi ultimo post en este tema, lo primero es lo primero.

    Una vez que la parte de programacion a terminado el primer prototipo, toca probarlo y cuando digo probarlo, me refiero, a si hace las cosas correctamente, no a sacar buenos resultados o malos resultados.

    Lo primero comentarte que le he dado un repaso al codigo y a sus explicaciones y me he atrevido a ordenarlo segun mi criterio, espero que esto cause debate, es decir, por intuicion he colocado los apartados de otro modo a como tu los tenias, espero y ruego no te moleste esto por favor, ahora toca saber si lo he realizado correctamente. Cuando digo que lo ordenado, me refiero a que lo poco que se de codigo, nos dice que aunque la colocacion realmente no es importante a la hora de leerlo la maquina si que influye en rapidez, por lo tanto, he tratado de seguir una logica, espero que me comentes si es coherente la logica que he seguido o no.

    A continuacion hice un backtest de prueba, es decir, lanza correctamente las operaciones, te adelanto que por desgracia o estoy equivocado en la logica de la EA o no lo hace correctamente.

    Imagen que muestra donde las ha lanzado y donde las deberia de haber lanzado.

    Mi primer aporte: Template EA en blanco-ea-foro.png

    Por lo tanto eso es lo primero que debemos de corregir, en el setting de la EA tenia configurado que ejecutase las ordenes a cierre de vela, o lo que es lo mismo, a la apertura de la nueva vela despues de la señal.

    Por otro lado tambien hice la siguiente prueba, que desde la logica que yo entiendo de la EA, deberia de funcionar en modo semicontinuo, es decir si Take Profit y Stop Loss = 0, cuando se dan las condiciones de compra, compro y se cerraria la operacion cuando una de las medias no este alineada, lo mismo para las ventas.

    Y como puedes comprobar en la imagen no hace nada, adjunto imagen del setting utilizado para esta segunda prueba.

    Mi primer aporte: Template EA en blanco-ea-foro2.png
    Mi primer aporte: Template EA en blanco-3.png

    Y ya puestos a pedir, pidamos:

    1º Echo de menos un control de spread, que se incluiria en los parametros generales.
    2º Echo de menos un autocontrol de digitos del broker, esto evitaria, como en este caso, tener que realizar multiplicaciones tanto del Take Profit, Stop Loss, Trailing... etc., dependiendo si trabajamos con un broker de 4 digitos o 5 digitos.

    Algo parecido a esto:

    Código:
    int      DecimalPoints, digit, pipMultiplier;
    
    //***********************************************
    
    int OnInit()
    {
      DecimalPoints = 1;
      double x = MarketInfo(Symbol(), MODE_LOTSTEP) * 10;
      while (x < 1)
      { 
       x *= 10; DecimalPoints += 1; 
      }
      
      digit = _Digits;
      if (digit==2 || digit==4) pipMultiplier = 1;
      if (digit==3 || digit==5) pipMultiplier = 10;
      if (digit==6)             pipMultiplier = 100;  
     
      return(INIT_SUCCEEDED);
    }
    3º Echo de menos, aunque de momento no es importante, en los parámetros generales un control de que si el Bróker es ECN o no, por el tema de modificación de órdenes.

    Y ya por ultimo que me expliques mejor por favor, estos dos parámetros:

    calcular_lotes = true; // Calcular valor del lote.

    Este parámetro entiendo que quieres utilizar un tanto % del valor de la Equity si no me equivoco, corrígeme si estoy en lo cierto.

    habilitar_trailing_take_profit = false;

    Con este me matas, no lo entiendo, ¿desplazar el take profit según vaya la operación a nuestro favor?¿que valores utiliza para desplazarlo?. No sé si lo que pregunto tiene coherencia pero es lo que me vino a la cabeza.

    Espero no ser muy molesto, pero esto es asi.

    Un fuerte abrazo.

    Y muchas gracias por el gran trabajo que estas realizando.

    Hermo.

    PD. Adjunto el EA tal y como yo la deje, por favor ruego compruebes que no he metido la pata en nada y espero que no te moleste esta incursion en tu codigo.



    Hermo buenos dias.
    Antes que nada, en respuesta a tu consulta y en general para cualquiera de los participantes del tema quiero aclarar que no me molesta en absoluto que modifiquen el código, todo lo contrario, me gustaría que todos hagamos modificaciones, ya que no hay una sola manera de hacer las cosas.
    Voy a descargar el codigo modificado y a analizarlo paso por paso sobre las cuestiones que me indicas.
    Quería adelantar que segui la sugerencia de Ciclo y le agregue una media de promedio 200 para verificar la tendencia a largo plazo, y este es el resultado que he obtenido:

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

    Informe:
    Backtesting entre 01/01/2010 -> 25/06/2014 - TF 30M

    Depósito inicial: 10000.00
    Diferencial: 2
    Beneficio neto total: 6713.01
    Factor de beneficio: 1.45
    Rentabilidad esperada: 6.78
    Disminución absoluta: 46.21
    Disminución maximal: 962.23 (8.17%)
    Disminución relativa: 8.17% (962.23)
    Total de operaciones: 990
    Posiciones cortas (ganado %): 468 (86.97%)
    Posiciones largas (ganado %): 522 (87.36%)
    Operaciones de beneficios (% del total): 863 (87.17%)
    Operaciones de pérdidas (% del total): 127 (12.83%)
    Mayor Operaciones de beneficios: 206.64
    Mayor Operaciones de pérdidas: -153.00
    Media Operaciones de beneficios: 25.12
    Media Operaciones de pérdidas: -117.84
    Máximo ganancias consecutivas (beneficios en dinero): 27 (826.18)
    Máximo pérdidas consecutivas (pérdidas en dinero): 4 (-531.90)
    Media ganancias consecutivas: 8
    Media pérdidas consecutivas: 1

    Con el agregado de la condicion de la media 200 ahora el EA esta haciendo operaciones tanto de compra como de venta.
    Adjunto esta nueva versión:

    MCSoft_EA_3MA_v1.1.mq4

    Luego de analizar el codigo que subiste voy a fusionar ambos para ir manteniendo el orden, cualquier sugerencia como siempre es bienvenida.
    Saludos!!!!
    Foro de Forex Trading United

  2. Publi
    Publi


  3. #32
    Avatar de Hermo



    Reputación:
    Poder de reputación: 18

    Mensajes: 879
    Créditos: 6.631

    EA MCSoft_3MA_v1.00_Solo Compras

    Buenas tardes a todos:

    Hola MCSoft, como ya comente en mi ultimo post en este tema, lo primero es lo primero.

    Una vez que la parte de programacion a terminado el primer prototipo, toca probarlo y cuando digo probarlo, me refiero, a si hace las cosas correctamente, no a sacar buenos resultados o malos resultados.

    Lo primero comentarte que le he dado un repaso al codigo y a sus explicaciones y me he atrevido a ordenarlo segun mi criterio, espero que esto cause debate, es decir, por intuicion he colocado los apartados de otro modo a como tu los tenias, espero y ruego no te moleste esto por favor, ahora toca saber si lo he realizado correctamente. Cuando digo que lo ordenado, me refiero a que lo poco que se de codigo, nos dice que aunque la colocacion realmente no es importante a la hora de leerlo la maquina si que influye en rapidez, por lo tanto, he tratado de seguir una logica, espero que me comentes si es coherente la logica que he seguido o no.

    A continuacion hice un backtest de prueba, es decir, lanza correctamente las operaciones, te adelanto que por desgracia o estoy equivocado en la logica de la EA o no lo hace correctamente.

    Imagen que muestra donde las ha lanzado y donde las deberia de haber lanzado.

    Mi primer aporte: Template EA en blanco-ea-foro.png

    Por lo tanto eso es lo primero que debemos de corregir, en el setting de la EA tenia configurado que ejecutase las ordenes a cierre de vela, o lo que es lo mismo, a la apertura de la nueva vela despues de la señal.

    Por otro lado tambien hice la siguiente prueba, que desde la logica que yo entiendo de la EA, deberia de funcionar en modo semicontinuo, es decir si Take Profit y Stop Loss = 0, cuando se dan las condiciones de compra, compro y se cerraria la operacion cuando una de las medias no este alineada, lo mismo para las ventas.

    Y como puedes comprobar en la imagen no hace nada, adjunto imagen del setting utilizado para esta segunda prueba.

    Mi primer aporte: Template EA en blanco-ea-foro2.png
    Mi primer aporte: Template EA en blanco-3.png

    Y ya puestos a pedir, pidamos:

    1º Echo de menos un control de spread, que se incluiria en los parametros generales.
    2º Echo de menos un autocontrol de digitos del broker, esto evitaria, como en este caso, tener que realizar multiplicaciones tanto del Take Profit, Stop Loss, Trailing... etc., dependiendo si trabajamos con un broker de 4 digitos o 5 digitos.

    Algo parecido a esto:

    Código:
    int      DecimalPoints, digit, pipMultiplier;
    
    //***********************************************
    
    int OnInit()
    {
      DecimalPoints = 1;
      double x = MarketInfo(Symbol(), MODE_LOTSTEP) * 10;
      while (x < 1)
      { 
       x *= 10; DecimalPoints += 1; 
      }
      
      digit = _Digits;
      if (digit==2 || digit==4) pipMultiplier = 1;
      if (digit==3 || digit==5) pipMultiplier = 10;
      if (digit==6)             pipMultiplier = 100;  
     
      return(INIT_SUCCEEDED);
    }
    3º Echo de menos, aunque de momento no es importante, en los parámetros generales un control de que si el Bróker es ECN o no, por el tema de modificación de órdenes.

    Y ya por ultimo que me expliques mejor por favor, estos dos parámetros:

    calcular_lotes = true; // Calcular valor del lote.

    Este parámetro entiendo que quieres utilizar un tanto % del valor de la Equity si no me equivoco, corrígeme si estoy en lo cierto.

    habilitar_trailing_take_profit = false;

    Con este me matas, no lo entiendo, ¿desplazar el take profit según vaya la operación a nuestro favor?¿que valores utiliza para desplazarlo?. No sé si lo que pregunto tiene coherencia pero es lo que me vino a la cabeza.

    Espero no ser muy molesto, pero esto es asi.

    Un fuerte abrazo.

    Y muchas gracias por el gran trabajo que estas realizando.

    Hermo.

    PD. Adjunto el EA tal y como yo la deje, por favor ruego compruebes que no he metido la pata en nada y espero que no te moleste esta incursion en tu codigo.



    Foro de Forex Trading United
    Archivos adjuntados Archivos adjuntados



  4. #33
    Avatar de Ciclo



    Reputación:
    Poder de reputación: 23

    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

  5. #34
    Avatar de Hermo



    Reputación:
    Poder de reputación: 18

    Mensajes: 879
    Créditos: 6.631

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por MCSoft Ver mensaje
    Hola amigos, como dije en mi presentación ante esta comunidad, tengo experiencia en desarrollo c/c++/python, y aunque soy un novato total en el trading quiero aportar desde don de pueda, por ello, les traigo un template en blanco que realice para programar vuestros EAs. El template incluye:
    - Opcion de procesar en cada tick o en la apertura de la barra
    - Opcion de procesar o no TrailingStop en cada tick sobre las ordenes abiertas
    - Opcion de lote fijo o calculo del mismo antes de cada operación (money management)
    - Opcion de solo abrir ordenes en base a la estrategia, o también operar con señales de cierre
    - Opción de una sola orden abierta por vez, o permitir multiples ordenes.

    Traté de hacerlo lo mas sencillo posible, bien comentado para que sea facilmente modificable. En el codigo se indica cada paso y operación que se hace, y se indica en donde es necesario incluir el codigo de la estrategia y los indicadores que usen.
    Espero vuestros comentarios para mejorarlo lo mas posible.
    Saludos!!!!!!!
    Buenos días compañero MCSoft:

    Evidentemente mereces reputación y mil gracias.

    Has iniciado un tema apasionante para los que nos gusta el mundo del código. He abierto tu primera témplate y lo primero que te tengo que decir, es gracias por explicar paso a paso todas las líneas. Estoy convencido que es un tema que me encantaría que despertase emoción entre los miembros del foro y que se hinchara todo el mundo a pedirte modificaciones, mas código y un montón de explicaciones, para los que se están iniciando, para los que les interesa el tema de automatización de funciones, para los expertos... etc., este tema puede ser realmente muy interesante.

    Como tu bien dices, no tienes ni idea de trading pero si de programar, este es el único punto, y te lo digo por experiencia que te falta para tener la ecuación perfecta. Yo no sé de programar y de trading me considero un tío que sabe algo tirando a poco a pesar de los años que llevo, cada día descubro cosas nuevas. Esto te lo digo también desde la experiencia, los mejores programadores que conozco, a los únicos que yo hoy en día les encargaría un trabajo serian precisamente los que tengan la ecuación perfecta, sencillamente por lógica de entendimiento, no hacia mí, que sería quien les encarga el trabajo, si no hacia el propio trading y sus matices. He podido comprobar últimamente que una estrategia automatizada dependiendo como se programe funciona o sencillamente son líneas de código sin coherencia alguna que acabaran haciendo las cosas mal.

    Por eso te propongo una idea, que me gustaría que todos los compañeros del foro la refutasen, la completasen, la discutirán...etc. Ya que has empezado con la plantilla de un código, que tiene su valor evidentemente. Yo considero mucho mejor que se empezaran con códigos de EAs completos como plantillas. Esto también te lo digo desde la experiencia. Iremos comprobando que cada idea tendrá sus matices a la hora de programarse, sobre todo en MT4. Pero esto no deja de ser una idea mía, evidentemente primero tú tienes que estar dispuesto a currártelo y evidentemente también tiene que existir por parte de los miembros del foro una respuesta a tu idea y a tu trabajo.

    Es decir, tú has generado una plantilla base que yo te discutiría hasta el infinito, cuando digo discutiría me refiero positivamente eh! Porque no empezar con una simple idea y dejar que surjan dudas tanto por tu parte como inexperto en el trading como por parte de los miembros que estén interesados en código. Yo a ti no te tengo que decir que cuanto más limpio un código mejor, para que poner líneas en una EA que al final no tienen función alguna, verdad?

    Bueno después de todo este rollo de domingo por la mañana, esperare a ver si la iniciativa tiene respuesta.

    Un fuerte abrazo e insisto, muchísimas gracias por la iniciativa.

    Hermo.
    Foro de Forex Trading United



  6. #35




    Reputación:
    Poder de reputación: 12

    Mensajes: 17
    Créditos: 426

    Re: Mi primer aporte: Template EA en blanco

    Saludos compañeros. He estado leyendo el hilo y respecto la primera estrategia (la segunda aun no la he mirado) si no mequivoco optimizasteis con spread de 2 puntos, la media de ganadoras era de 25 euros, como decias a lote, son de 2.5 pips. Bueno al no poder ver la lista de operaciones y suponiendo que haya operaciones de menos de 4 pips la mayoria. Esto es justamente lo que se llama sobreoptimizacion, en este caso no por los variables propias del ea sino por el spread usado y los pips de las operaciones ganadoras. Lo primero, un diferencial de 2 puntos no lo encontramos ni en cuenta real, puede que algunos momentos este en 2 puntos ( pero con la consiguiente comision añadida, que tb hay que contar ), por no menciona slippages, aumento del spread etc. Al optimizar con tan poco spread, ademas ocurre que es facil salir con pocos pips de beneficio, con lo cual cualquier estrategia parece rentable y os aseguro que asi no lo es.
    Para optimizar hacerlo con al menos 10 puntos o 1 pip ( y aun asi seran pocos ) y que las operaciones de salida sean de al menos 4 pips. Tened tb en cuenta que las operaciones de pocos pips suelen ser menos rentables de lo que parece a largo plazo, porque a esos 4 pips hay que quitarle la comision y no es lo mismo quitarle la comision a 4 pips que a 10 por ejemplo. Me explico, que tus 4 pips pasen a ser 3 por la comision a que de 10 pase a 9, no es lo mismo, en una se te va la cuarta parte de lo ganado y en el otro solo una decima parte.
    Otra cuestion, respecto al Money Managment, el Money Managment lo haces tu no el ea, lo que vosotros estais llamando Money Managment es simplemente interes compuesto. Money Managment es mucho mas que eso. Por ejemplo a la hora de implentar una estrategia a otra, estudiar a que lotaje poner cada una de ellas, estudiando su frecuencia de operaciones, correlacion entre ellas, maximo DD etc...
    Foro de Forex Trading United
    Última edición por ealabspain; 21:36 a las


  7. #36




    Reputación:
    Poder de reputación: 11

    Mensajes: 186
    Créditos: 462

    Re: Mi primer aporte: Template EA en blanco

    Reputación compañero
    Foro de Forex Trading United

  8. #37
    Avatar de gorowin



    Reputación:
    Poder de reputación: 12

    Argentina
    Mensajes: 57
    Créditos: 1.866

    Re: Mi primer aporte: Template EA en blanco

    Hola MCSoft


    Como comente en otro mensaje me puse a trabajar con el BackTest del EA, la idea era probarlo en diferentes temporalidades y pares, para comenzar utilice el EURUSD en M30 y desde el 01/01/2010 al 26/06/2014 como en los test de tu post pero mis resultados son muy diferentes, utilice el EA sin tocar la configuración, aquí dejo el gráfico de la prueba.

    Mi primer aporte: Template EA en blanco-mcsoft_ea_3ma_v1.2.jpg

    Mirando un Webinar en el foro sobre BackTest logre un modelado de datos de 99.90% pero igualmente los resultados no fueron buenos.

    Podrías decirme si tengo que configurarlo de alguna forma en especial para poder obtener un resultado como el tuyo y así poder seguir con las pruebas.

    Saludos

    Gorowin.

    Cita Iniciado por MCSoft Ver mensaje
    Saludos amigos, estoy de nuevo con novedades sobre el EA 3EMA:

    Hermo, me gusto mucho el estilo de codificación y las modificaciones que realizaste sobre el código, creo que ahora es mucho mas legible. Solo hice modificaciones menores y agregue algunos comentarios extra, pero me parece que ahora se entiende mucho mejor.
    En cuanto a la operativa, la principal modificación que realice y por ello le cambié la versión a 1.2, es la siguiente:

    Anteriormente el EA, procesaba al inicio de la barra, y calculaba los indicadores sobre el tick actual, por lo tanto, el valor actual de las EMAs, siempre se calculaba sobre la apertura de la barra. Ese comportamiento provocaba señales erroneas, porque muchas veces ocurría que una barra mientras se esta formando genera cruces de EMAs, y al terminar de formarse, el cruce desaparece. Entonces, si la barra al abrir mostraba una tendencia y al cerrar mostraba otra, provocaba que una operacion se abriera con la barra y se cerrara con la barra siguiente, no se si me explico bien.
    La modificación consiste en reemplazar todos los indices de los calculos de los indicadores para que se calculen sobre la vela cerrada previa (vela 1) y la anterior (vela 2), al tick que se esta ejecutando.

    Solo con esa modificación, el backtest paso de esto:

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

    Informe:
    Backtesting entre 01/01/2010 -> 25/06/2014 - TF 30M

    Depósito inicial: 10000.00
    Diferencial: 2
    Beneficio neto total: 6713.01
    Factor de beneficio: 1.45
    Rentabilidad esperada: 6.78
    Disminución absoluta: 46.21
    Disminución maximal: 962.23 (8.17%)
    Disminución relativa: 8.17% (962.23)
    Total de operaciones: 990
    Posiciones cortas (ganado %): 468 (86.97%)
    Posiciones largas (ganado %): 522 (87.36%)
    Operaciones de beneficios (% del total): 863 (87.17%)
    Operaciones de pérdidas (% del total): 127 (12.83%)
    Mayor Operaciones de beneficios: 206.64
    Mayor Operaciones de pérdidas: -153.00
    Media Operaciones de beneficios: 25.12
    Media Operaciones de pérdidas: -117.84
    Máximo ganancias consecutivas (beneficios en dinero): 27 (826.18)
    Máximo pérdidas consecutivas (pérdidas en dinero): 4 (-531.90)
    Media ganancias consecutivas: 8
    Media pérdidas consecutivas: 1

    a esto:

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

    Informe:
    Backtesting entre 01/01/2010 -> 25/06/2014 - TF 30M
    Depósito inicial 10000.00
    Diferencial 2
    Beneficio neto total: 13768.01
    Factor de beneficio: 1.33
    Rentabilidad esperada: 7.34
    Disminución absoluta: 458.45
    Disminución maximal: 1659.23 (7.19%)
    Disminución relativa: 7.19% (1659.23)
    Total de operaciones: 1875
    Posiciones cortas (ganado %) : 881 (84.00%)
    Posiciones largas (ganado %): 994 (84.51%)
    Operaciones de beneficios (% del total): 1580 (84.27%)
    Operaciones de pérdidas (% del total): 295 (15.73%)
    Mayor Operaciones de beneficios: 215.04
    Mayor Operaciones de pérdidas: -216.00
    Media Operaciones de beneficios: 35.16
    Media Operaciones de pérdidas: -141.63
    Máximo ganancias consecutivas (beneficios en dinero): 61 (2268.07)
    Máximo pérdidas consecutivas (pérdidas en dinero): 4 (-677.24)
    Media ganancias consecutivas: 7
    Media pérdidas consecutivas: 1

    Ahora me esta gustando mucho mas ja ja ja!!!!
    Creo que con la modificacion que le realice se soluciona el problema que mencionabas sobre posiciones abiertas en el momento incorrecto, ahora las abre a vela cerrada, con el cruce confirmado.

    En cuanto a los demás comentarios:
    1- Sobre el stop_loss = 0 y take profit=0: Ya lo solucione con una pequeña modificacion a las funciones abrir_orden_buy y abrir_orden_sell. Dichas funciones, al intentar convertir pips a precio, generaban un precio erroneo cuando los pips pasados como parametro eran 0, entonces la orden se rechazaba.

    2- "Echo de menos un control de spread, que se incluiria en los parametros generales."
    Sinceramente no conozco que significa el control de spread (recuerda que soy muy novato en el trading). Si tienes una explicación o link que me puedas proporcionar lo veo y discutimos como implementarlo

    3- "Echo de menos un autocontrol de digitos del broker,
    esto evitaria, como en este caso, tener que realizar multiplicaciones tanto del Take Profit, Stop Loss, Trailing... etc., dependiendo si trabajamos con un broker de 4 digitos o 5 digitos."
    Voy a analizar el fragmento de código que me proporcionaste y lo voy a incluir en la proxima versión

    4- "Y ya por ultimo que me expliques mejor por favor, estos dos parámetros:
    calcular_lotes = true; // Calcular valor del lote
    Este parámetro entiendo que quieres utilizar un tanto % del valor de la Equity si no me equivoco, corrígeme si estoy en lo cierto."
    Es correcto, quiero calcular el valor del lote a emplear en base al riesgo que deseo tomar en cada operación, esto es algo que aún lo tengo muy verde en mi cabeza, por eso acepto sugerencias y recomendaciones

    5- "La opcion habilitar_trailing_take_profit"
    Esta opcion la codifique con mi poco conocimiento de la jerga del trading, por ello espero que me corrijan. La idea es que cuando esta opcion esta habilitada, al momento de hacer trailing stop sobre una orden, si se modifica el mismo, el take profit también se modifique siguiendolo. En principio, esto permite que las operaciones que estan ganando, por ejemplo compras, vayan aumentando stop loss para proteger los beneficios ganandos y tambien subiendo al mismo tiempo el take profit con la esperanza de agarrar una tendencia larga y obtener mas beneficios.
    Vuelvo a repetir, no se si hay un nombre especial para este comportamiento, si es asi lo cambiamos para que quede correcto.

    Adjunto entonces la nueva version del EA y espero comentarios:

    MCSoft_EA_3MA_v1.2.mq4

    Saludos!!!!
    Foro de Forex Trading United

  9. #38




    Reputación:
    Poder de reputación: 10

    Mensajes: 26
    Créditos: 1.634

    Re: Mi primer aporte: Template EA en blanco

    Cita Iniciado por gorowin Ver mensaje
    Hola, bueno acá tengo algunas pruebas que confirma lo que comenta el compañero Hermo.

    Las dos pruebas están realizadas con el mismo par, en la misma temporalidad y en el mismo periodo de tiempo pero dan resultados totalmente opuestos, también pongo las imágenes de la pestaña Diario de las dos pruebas donde se ven algunos errores.

    Broker 1

    Archivo adjunto 28719

    Archivo adjunto 28720

    Broker 2

    Archivo adjunto 28721

    Archivo adjunto 28722

    Gorowin.
    Gorowin, gracias por dedicarle tiempo a las pruebas. Como comente en un mensaje previo, mas allá de que la estrategia no genere ganancias, lo importante es todo lo que estamos aprendiendo (como codificar funciones del trading como el money management o el trailing stop en un EA, backtesting, etc).
    Sinceramente no se me ocurre porque dos brokers distintos dan tanta diferencia de resultados, me tendría que poner a ver con mas detenimiento y tratar de ver en detalle las diferencias. En cuanto a los errores, creo que puede ser por lo siguiente:
    Broker 1: Los errores son al intentar modificar las ordenes (trailingstop) eso se puede deber a que dependiendo del broker, hay un limite impuesto a la distancia mínima que se puede poner el stop, eso varia segun el broker. La lógica correcta (que actualmente no esta implementada por completo) es que el EA consulte el stop minimo que se puede poner a una orden, y si el calculo del trailing da menos que eso, optar por dos alternativas: dejar la orden sin modificar hasta el proximo tick, o poner el stop a la distancia que permite el broker.
    Broker 2: Los errores que aparecen son de falta de dinero. La prueba es con los parametros originales, que tienen el money management deshabilitado y trabaja con lote fijo de valor 1, entonces cuando no queda dinero suficiente aparecen los errores.
    Bueno, seguimos trabajando, esperemos tener novedades pronto.
    Saludos!!!!!!
    Foro de Forex Trading United

  10. #39




    Reputación:
    Poder de reputación: 10

    Mensajes: 26
    Créditos: 1.634

    Re: Mi primer aporte: Template EA en blanco

    Saludos amigos!!!!!
    Estoy de nuevo con otra actualización del EA, en este caso es la version 1.4. No postee en ningun momento la 1.3 porque comence a hacer modificaciones y me parecio conveniente directamente lanzar la 1.4
    Los cambios entre versiones hasta hora son (estan en el codigo fuente, pero para que todos lo vean):

    VERSIONES:
    - v1.0 - 26/06/2014 - MCSoft
    Version inicial desarrollada en base al indicador "3MAS Cross Alert v2.mq4"
    proporcionado por Ciclo.


    - v1.1 - 25/06/2014 - MCSoft
    Se agregó media 200 (ma4) para filtrar la tendencia a largo plazo
    se habilitaron operaciones de venta


    - v1.2 - 25/06/2014 - Hermo/MCsoft
    Siguiendo recomendaciones de Hermo, se acomodó el código de una manera mas legible
    Se modifico el calculo de los indicadores, para que el valor actual de cada indicador
    se calcule al cierre de la vela. El calculo previo era tick a tick y provocaba muchas
    veces apertura y cierre de operaciones en la misma vela


    - v1.3 - 25/06/2014 - Ciclo/MCsoft
    Se agregó la opción del horario de trading


    - v1.4 - 27/06/2014 - Hermo/MCsoft
    Se agregó el calculo automatico del valor del pip de acuerdo a la cantidad de digitos del broker
    Se programo nuevamente el money management para calcular el tamaño de cada operación en funcion del stop loss
    de la orden, y el porcentaje maximo de perdida de la cuenta en caso de que la operacion sea perdedora

    Creo que mas allá de los resultados que pueda dar este EA en dinero, creo que hemos logrado mucho aportando ideas y viendo como se aplican a un programa real.

    Respondo a todos en este post para no llenar el tema de mensajes individuales:

    CICLO:
    - En este EA esta implementado el control de horario. Esta hecho de una forma básica (horario de inicio y de final del trading) y aun no tiene la opcion de cerrar posiciones el viernes, pero creo que podemos empezar a hacer pruebas con ello. Luego le agregamos los dias permitidos de trading y la opcion de cerrar posiciones el viernes
    - En cuanto al MM, he implementado código nuevo, pero también he leido que es conveniente probar la estrategia con lote fijo para ver la efectividad sin la ayuda del MM.

    HERMO:
    - Aun no esta implementado el control del spread, pero si agregue la compensacion para los brokers de 3/5 y 6 digitos.
    - He tomado la observación que hiciste sobre la modificación del TakeProfit, y la he implementado de la misma manera, ahora desaparecio la opcion "trailing_take_profit" (la cual habia bautizado con ese nombre desde mi inexperiencia ja ja), y ahora, cuando el trailing stop detecta que la operacion logró los beneficios indicados en "trailing_start", simplemente le quita el takeprofit a la orden y actua corriendo solo el stoploss, para que la orden pueda tomar todos los beneficios posibles.
    - Sobre la compensacion del valor del pip: Comence mis pruebas con un metatrader limpio (bajado de la web metaquotes, no ligado a ningun broker), operando a 4 digitos, y luego, descargue otra versión con una cuenta demo de un broker de 5 digitos y a partir de ese momento el programa me comenzo a dar resultados positivos. Luego, cuando hablamos el tema de la compensación del pip, me termino de cerrar lo que estaba pasando: al pasar de un broker de 4 digitos a uno de 5 digitos, mis parametros por defecto de vieron divididos por 10 (porque no habia compensacion por los digitos), entonces el EA esta trabajando con un TP de 5 pips, un SL de 9 pips y un trailing de 1 pip, haciendo una especie de scalping, por eso las posiciones se abren y cierran en su mayoria en la misma vela de 30 minutos. Ahora que la compensacion esta programada, reduje los parametros por defecto por 10 para seguir trabajando con los resultados previos. Mas adelante discuto los parametros por defecto y como podemos homogeneizar nuestros resultados para las pruebas.

    GOROWIN:
    bienvenido colega de Argentina, y gracias por interesarte en el tema. En cuanto a los resultados que has obtenido, yo creo que puede deberse a alguna de las siguientes cuestiones:
    - Inicialmente comence desarrollando y probando con un broker de 4 digitos, y ahora lo estoy haciendo con uno de 5 digitos, en ese momento el EA comenzo a dar resultados positivos, creo que porque los valores de TP, SL y trailing quedaron divididos por 10. Ahora estoy adjuntando la version 1.4 que contempla los digitos que tiene el broker y lo compensa.
    - Estuve realizando las pruebas con un spread fijo de 2, y veo que tu reporte tiene un spread configurado en "current" de 16

    A TODOS LOS PARTICIPANTES QUE ESTEN PROBANDO Y ANALIZANDO EL EA:
    He sido un poco desordenado con las pruebas, y estamos obteniendo resultados dispares (gracias Gorowin por la observacion), por ello, me parece que deberíamos fijar las condiciones en las que hacemos las pruebas, para que cada uno de nosotros obtenga los mismos resultados y pueda proponer mejoras y parametros que les sean utiles al resto.
    Esta es la configuracion con la que estoy haciendo las pruebas:

    - Par: EURUSD
    - Parametros: Por defecto como estan en el EA que adjunto a continuacion
    - Timeframe: 30M (he obtenido buenos resultados con 4H y 1D con los mismos parametros)
    - Money Management: Por defecto ahora esta deshabilitado y opera con un lote fijo de 1 (mas abajo aclaro porque he fijado el valor de lote=1) para que veamos solamente la efectividad de la estrategia.
    - Spread: fijado en el estrategy tester en 2
    - Periodo: 2010.01.01 al 2014.06.01 (4 años y 5 meses)
    - Simulación: cada tick

    Este es el EA version 1.4 con todos sus parametros seteados a valores por defecto:

    MCSoft_EA_3MA_v1.4.mq4

    Y estos son los resultados de la estrategia que yo estoy obteniendo con la configuración comentada:

    Strategy Tester Report
    MCSoft_EA_3MA_v1.4
    AlpariUK-Demo-Market (Build 646)

    Símbolo EURUSD (Euro vs US Dollar)
    Período 30 minutos (M30) 2010.01.04 00:00 - 2014.05.30 23:30 (2010.01.01 - 2014.06.01)
    Modelo Cada tick (el método más preciso basado en todos los períodos menores disponibles)
    Parámetros ea_nombre="=== MCSoft_EA_3MA_v1.3 ==="; parametros_generales="===== PARAMETROS GENERALES ====="; ea_magic_number=12345; slip_page_en_pips=2; control_ordenes="===== CONTROL ORDENES ====="; permitir_ordenes_multiples=false; procesar_en_cierre=true; MoneyManagement="===== CONFIGURACION MONEY MANAGEMENT ====="; calcular_lotes=false; lotes_por_trade=1; porcentaje_riesgo_por_trade=1; HorarioTrading="===== CONTROL HORARIO ====="; habilitar_horario_trading=false; hora_inicio_trading="16:00"; hora_cierre_trading="11:30"; ControlPosiciones="===== CONTROL POSICIONES ====="; take_profit_en_pips=5; stop_loss_en_pips=9; TrailingStop="----- Configuracion Trailing Stop -----"; habilitar_trailing_stop=true; trailing_start_en_pips=1; trailing_stop_en_pips=1; SettingIndicadores="===== SETTING INDICADORES ====="; _Indicator="===== 3EMAS Cross Alert - Ciclo ====="; periodo_ma1=4; periodo_ma2=18; periodo_ma3=40; periodo_ma4=200;
    Barras en la prueba 55653 Ticks modelados 65152566 Calidad del modelado 90.00%
    Errores de gráficos mal agrupados 0
    Depósito inicial 10000.00 Diferencial 2
    Beneficio neto total 8381.20 Beneficio bruto 33266.60 Pérdida bruta -24885.40
    Factor de beneficio 1.34 Rentabilidad esperada 4.55
    Disminución absoluta 459.00 Disminución maximal 736.00 (3.98%) Disminución relativa 5.56% (684.00)
    Total de operaciones 1840 Posiciones cortas (ganado %) 864 (83.91%) Posiciones largas (ganado %) 976 (84.22%)
    Operaciones de beneficios (% del total) 1547 (84.08%) Operaciones de pérdidas (% del total) 293 (15.92%)
    Mayor Operaciones de beneficios 133.00 Operaciones de pérdidas -90.00
    Media Operaciones de beneficios 21.50 Operaciones de pérdidas -84.93
    Máximo ganancias consecutivas (beneficios en dinero) 61 (1552.00) pérdidas consecutivas (pérdidas en dinero) 4 (-304.00)
    Máximo beneficios consecutivos (número de ganancias) 1552.00 (61) pérdidas consecutivas (número de pérdidas) -304.00 (4)
    Media ganancias consecutivas 6 pérdidas consecutivas 1

    Mi primer aporte: Template EA en blanco-001-ea-3ema-v1.4-tf30m-lote-fijo-1-01_01_2010-hasta-01_06_2014.gif

    Quiero hacer un comentario, ya que el tema del money management y calculo del valor de la posicion es nuevo para mi, y quiero ver si lo estoy entendiendo correctamente:
    Con los parámetros por defecto, en cada trade el EA "se esta jugando" un valor de lote fijo de 1, lo que en EURUSD significa un valor de PIP de: Valor lote x tamaño lote x pip = 100000 x 1 x 0.0001 = 10 USD. Como el stop loss esta fijado en 9, la pérdida que se da si la orden alcanza el stoploss son 90 dolares, lo que para la cuenta de 10000 significa el 0.9%. Entonces, inicialmente podríamos aguantar una racha de hasta 111 operaciones perdedoras de 90 dolares sin reventar la cuenta (nuevamente, pido me corrijan si estoy calculando o interpretando algo mal).
    Este valor se mantiene fijo en todo el periodo de prueba, entonces, a medida que nuesta cuenta va creciendo, arriesgamos cada vez menos, y podríamos sobrevivir a rachas perdedoras mas largas.

    Por otro lado, con el money management habilitado, la cantidad de lotes con que se abre cada operación se calcula teniendo en cuenta la cantidad porcentual máxima que estamos dispuestos a perder en caso que la operación no resulte, es decir, el cáculo es al revés. Si ingresamos como parametro 0.9 en el parametro riesgo, inicialmente estamos en la misma situacion que antes, es decir, estamos dispuestos a perder el 0.9% de nuestra cuenta si la operacion no resulta, entonces el EA calcula un valor de lote de 1 (para la cuenta inicial de 10000 dolares), y hace la operacion, pero a medida que la cuenta va creciendo, se realizan operaciones más grandes, pero siempre manteniendo el porcentaje, por lo que siempre aguantaríamos la misma cantidad consecutiva de operaciones perdidas (en realidad con el MM la cosa mejora, porque a medida que vamos perdiendo el tamaño de lote decrece) A modo solo de observacion voy a postear los resultados con MM habilitado, un riesgo de 0.9% y manteniendo el resto de los parametros por defecto:

    Strategy Tester Report
    MCSoft_EA_3MA_v1.4
    AlpariUK-Demo-Market (Build 646)

    Símbolo EURUSD (Euro vs US Dollar)
    Período 30 minutos (M30) 2010.01.04 00:00 - 2014.05.30 23:30 (2010.01.01 - 2014.06.01)
    Modelo Cada tick (el método más preciso basado en todos los períodos menores disponibles)
    Parámetros ea_nombre="=== MCSoft_EA_3MA_v1.3 ==="; parametros_generales="===== PARAMETROS GENERALES ====="; ea_magic_number=12345; slip_page_en_pips=2; control_ordenes="===== CONTROL ORDENES ====="; permitir_ordenes_multiples=false; procesar_en_cierre=true; MoneyManagement="===== CONFIGURACION MONEY MANAGEMENT ====="; calcular_lotes=true; lotes_por_trade=1; porcentaje_riesgo_por_trade=0.9; HorarioTrading="===== CONTROL HORARIO ====="; habilitar_horario_trading=false; hora_inicio_trading="16:00"; hora_cierre_trading="11:30"; ControlPosiciones="===== CONTROL POSICIONES ====="; take_profit_en_pips=5; stop_loss_en_pips=9; TrailingStop="----- Configuracion Trailing Stop -----"; habilitar_trailing_stop=true; trailing_start_en_pips=1; trailing_stop_en_pips=1; SettingIndicadores="===== SETTING INDICADORES ====="; _Indicator="===== 3EMAS Cross Alert - Ciclo ====="; periodo_ma1=4; periodo_ma2=18; periodo_ma3=40; periodo_ma4=200;
    Barras en la prueba 55653 Ticks modelados 65152566 Calidad del modelado 90.00%
    Errores de gráficos mal agrupados 0
    Depósito inicial 10000.00 Diferencial 2
    Beneficio neto total 12640.64 Beneficio bruto 53574.30 Pérdida bruta -40933.66
    Factor de beneficio 1.31 Rentabilidad esperada 6.87
    Disminución absoluta 457.67 Disminución maximal 1648.42 (7.17%) Disminución relativa 7.17% (1648.42)
    Total de operaciones 1840 Posiciones cortas (ganado %) 864 (83.91%) Posiciones largas (ganado %) 976 (84.22%)
    Operaciones de beneficios (% del total) 1547 (84.08%) Operaciones de pérdidas (% del total) 293 (15.92%)
    Mayor Operaciones de beneficios 214.08 Operaciones de pérdidas -207.00
    Media Operaciones de beneficios 34.63 Operaciones de pérdidas -139.71
    Máximo ganancias consecutivas (beneficios en dinero) 61 (2257.96) pérdidas consecutivas (pérdidas en dinero) 4 (-673.30)
    Máximo beneficios consecutivos (número de ganancias) 2257.96 (61) pérdidas consecutivas (número de pérdidas) -673.30 (4)
    Media ganancias consecutivas 6 pérdidas consecutivas 1


    Mi primer aporte: Template EA en blanco-002-ea-3ema-v1.4-tf30m-lote-mm-0.9-prociento-de-riesgo-01_01_2010-hasta-01_06_2014.gif

    Este ultimo backtest lo hice para verificar el funcionamiento del MM, pero creo que debemos seguir manejandonos con lote fijo en 1 (parametro por defecto) asi trabajamos todos sobre la misma base.
    Espero sus comentarios.
    Saludos a todos!!!!!!
    Foro de Forex Trading United

  11. #40




    Reputación:
    Poder de reputación: 10

    Mensajes: 26
    Créditos: 1.634

    Re: Mi primer aporte: Template EA en blanco


    Publi
    Saludos amigos, estoy de nuevo con novedades sobre el EA 3EMA:

    Hermo, me gusto mucho el estilo de codificación y las modificaciones que realizaste sobre el código, creo que ahora es mucho mas legible. Solo hice modificaciones menores y agregue algunos comentarios extra, pero me parece que ahora se entiende mucho mejor.
    En cuanto a la operativa, la principal modificación que realice y por ello le cambié la versión a 1.2, es la siguiente:

    Anteriormente el EA, procesaba al inicio de la barra, y calculaba los indicadores sobre el tick actual, por lo tanto, el valor actual de las EMAs, siempre se calculaba sobre la apertura de la barra. Ese comportamiento provocaba señales erroneas, porque muchas veces ocurría que una barra mientras se esta formando genera cruces de EMAs, y al terminar de formarse, el cruce desaparece. Entonces, si la barra al abrir mostraba una tendencia y al cerrar mostraba otra, provocaba que una operacion se abriera con la barra y se cerrara con la barra siguiente, no se si me explico bien.
    La modificación consiste en reemplazar todos los indices de los calculos de los indicadores para que se calculen sobre la vela cerrada previa (vela 1) y la anterior (vela 2), al tick que se esta ejecutando.

    Solo con esa modificación, el backtest paso de esto:

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

    Informe:
    Backtesting entre 01/01/2010 -> 25/06/2014 - TF 30M

    Depósito inicial: 10000.00
    Diferencial: 2
    Beneficio neto total: 6713.01
    Factor de beneficio: 1.45
    Rentabilidad esperada: 6.78
    Disminución absoluta: 46.21
    Disminución maximal: 962.23 (8.17%)
    Disminución relativa: 8.17% (962.23)
    Total de operaciones: 990
    Posiciones cortas (ganado %): 468 (86.97%)
    Posiciones largas (ganado %): 522 (87.36%)
    Operaciones de beneficios (% del total): 863 (87.17%)
    Operaciones de pérdidas (% del total): 127 (12.83%)
    Mayor Operaciones de beneficios: 206.64
    Mayor Operaciones de pérdidas: -153.00
    Media Operaciones de beneficios: 25.12
    Media Operaciones de pérdidas: -117.84
    Máximo ganancias consecutivas (beneficios en dinero): 27 (826.18)
    Máximo pérdidas consecutivas (pérdidas en dinero): 4 (-531.90)
    Media ganancias consecutivas: 8
    Media pérdidas consecutivas: 1

    a esto:

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

    Informe:
    Backtesting entre 01/01/2010 -> 25/06/2014 - TF 30M
    Depósito inicial 10000.00
    Diferencial 2
    Beneficio neto total: 13768.01
    Factor de beneficio: 1.33
    Rentabilidad esperada: 7.34
    Disminución absoluta: 458.45
    Disminución maximal: 1659.23 (7.19%)
    Disminución relativa: 7.19% (1659.23)
    Total de operaciones: 1875
    Posiciones cortas (ganado %) : 881 (84.00%)
    Posiciones largas (ganado %): 994 (84.51%)
    Operaciones de beneficios (% del total): 1580 (84.27%)
    Operaciones de pérdidas (% del total): 295 (15.73%)
    Mayor Operaciones de beneficios: 215.04
    Mayor Operaciones de pérdidas: -216.00
    Media Operaciones de beneficios: 35.16
    Media Operaciones de pérdidas: -141.63
    Máximo ganancias consecutivas (beneficios en dinero): 61 (2268.07)
    Máximo pérdidas consecutivas (pérdidas en dinero): 4 (-677.24)
    Media ganancias consecutivas: 7
    Media pérdidas consecutivas: 1

    Ahora me esta gustando mucho mas ja ja ja!!!!
    Creo que con la modificacion que le realice se soluciona el problema que mencionabas sobre posiciones abiertas en el momento incorrecto, ahora las abre a vela cerrada, con el cruce confirmado.

    En cuanto a los demás comentarios:
    1- Sobre el stop_loss = 0 y take profit=0: Ya lo solucione con una pequeña modificacion a las funciones abrir_orden_buy y abrir_orden_sell. Dichas funciones, al intentar convertir pips a precio, generaban un precio erroneo cuando los pips pasados como parametro eran 0, entonces la orden se rechazaba.

    2- "Echo de menos un control de spread, que se incluiria en los parametros generales."
    Sinceramente no conozco que significa el control de spread (recuerda que soy muy novato en el trading). Si tienes una explicación o link que me puedas proporcionar lo veo y discutimos como implementarlo

    3- "Echo de menos un autocontrol de digitos del broker,
    esto evitaria, como en este caso, tener que realizar multiplicaciones tanto del Take Profit, Stop Loss, Trailing... etc., dependiendo si trabajamos con un broker de 4 digitos o 5 digitos."
    Voy a analizar el fragmento de código que me proporcionaste y lo voy a incluir en la proxima versión

    4- "Y ya por ultimo que me expliques mejor por favor, estos dos parámetros:
    calcular_lotes = true; // Calcular valor del lote
    Este parámetro entiendo que quieres utilizar un tanto % del valor de la Equity si no me equivoco, corrígeme si estoy en lo cierto."
    Es correcto, quiero calcular el valor del lote a emplear en base al riesgo que deseo tomar en cada operación, esto es algo que aún lo tengo muy verde en mi cabeza, por eso acepto sugerencias y recomendaciones

    5- "La opcion habilitar_trailing_take_profit"
    Esta opcion la codifique con mi poco conocimiento de la jerga del trading, por ello espero que me corrijan. La idea es que cuando esta opcion esta habilitada, al momento de hacer trailing stop sobre una orden, si se modifica el mismo, el take profit también se modifique siguiendolo. En principio, esto permite que las operaciones que estan ganando, por ejemplo compras, vayan aumentando stop loss para proteger los beneficios ganandos y tambien subiendo al mismo tiempo el take profit con la esperanza de agarrar una tendencia larga y obtener mas beneficios.
    Vuelvo a repetir, no se si hay un nombre especial para este comportamiento, si es asi lo cambiamos para que quede correcto.

    Adjunto entonces la nueva version del EA y espero comentarios:

    MCSoft_EA_3MA_v1.2.mq4

    Saludos!!!!
    Foro de Forex Trading United

Página 4 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.
     

 

Publi


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