Discusión sobre el artículo "Introducción a MQL5: Cómo escribir un Expert Advisor y un Indicador Personalizado" - página 5
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
esta no es una forma facil de explicar mql5 a la gente. (Es como con los libros de programación, el 90% de la gente no tiene ni idea de cómo empezar. Abren este libro por ejemplo sobre programación en c y el primer "ejemplo fácil" es largo por 1 página entera escrita en fuentes minúsculas. En toda mi vida solo he leido un buen libro de programacion que podria enseñar a programar a cualquiera. La razón es que están escritos por programadores probablemente excelentes, pero desafortunadamente muy malos profesores. Programar puede ser realmente fácil y te lo demostraré haciendo un sencillo tutorial para el lenguaje de programación MQL4 cuando tenga un poco más de tiempo que ahora. Para todos - incluso principiantes totales. El mayor error es enseñar a la gente los detalles de la lengua la mayor parte de su trabajo debe ser ctrl + C y ctrl + v y el uso de Google para los comandos y lo más importante - mantener todo muy simple. Conozco más de 10 lenguajes de programación (programo desde los 7 años) y todavía estoy asustado por la forma en que se explica este "ejemplo fácil" en 11kb (!!!). Me gustaria saber si hay algun principiante en programacion que haya aprendido MQL5 con este ejemplo ;D. Lo dudo y si lo hay se pueden contar con los dedos de una mano.
Ibrahim Melssen:
I have copy paste the Expert Advisor and try to test it with Strategytester. But it doesn't make any trades. I am new to MQL5 and programming so maybe I just made a stupid mistake. It compiled without any errors. I'd really like the strategy! Anyone ideas why it doesn't run on strategytester..?
Lo mismo me pasa a mí, no sé por qué.
Soy nuevo en la programación mql5.
Estaba tratando de aprender a través de este ejemplo, pero estoy un poco perdido con el bucle al final de la construcción del indicador. ¿Dónde exactamente se asigna un valor a la variable day_n?
Porque el bucle comprobará si day_n<day_t. ¿Cómo puede el programa conocer el valor de day_n?
¿Y cómo se calcula en absoluto? Supongamos que rate_total = 10 y todavía no hay ninguna barra calculada. Entonces prev_calculated = 0
day_t=time[0] (HOY! ya que cuenta hacia atrás)/PeriodSeconds... ya que empieza a contar desde 1970, supongamos que empieza a contar desde hace 10 días. así que debería dar 10, ¿no?
Entonces day_t=10. Ahora comprueba si dayt > dayn. No sé dayn, pero sé dayt = 10. Voy a asumir dayn es cero, ya que no hay ningún valor.
Entonces dayn se convierte en 10 también. Ok.
Segunda tirada del bucle. prev_calculado + 1= 1.
DayT=time[1] (yesterday)/period... recuerda, empieza a contar desde hace 10 días... pero ahora sólo hasta ayer. debería dar un valor de 9, ¿no?
pero ahora díaN < díaT es falso. Entonces empieza a realizar las expresiones else. Ok. Entiendo.
Entonces calculará todos los bu[] y bd[]. Ok. El bucle terminará cuando prev < total rate sea falso.
Pero cuando llegue una nueva barra, y vuelva a ser verdadero, ¿volveré a empezar desde cero? ¿O empezará desde 10 y pasará directamente a la parte else?
¡¡¡¡Gracias!!!!
Usted necesita dividir en dos partes:
1 En el primer indicador de tiempo aplicado al gráfico: prev_calculated =0 , i = 0, i++ hasta que i = rates_total, sale del bucle (time[0] es del pasado no del presente.)
2 Se inicia una nueva barra: prev_calculado será menor que rates_total por lo que la condición es verdadera, el bucle se ejecutará sólo en esa nueva barra
Hola @Guin,
Creo que aún no se ha respondido correctamente a tu pregunta. Si has utilizado el código del ejemplo, probablemente acabes con un indicador invisible que no tiene ningún sentido y que no se ve en el gráfico. Eso es porque el código nunca pasa por este bloque:
if(day_n < day_t){ day_n = day_t; h_day = high[i]; l_day = low[i] }La razón es que day_n no se establece manualmente en ningún valor por defecto, y la comparación day_n < day_t siempre dará como resultado false. Según el depurador, el valor de day_n cuando no se establece explícitamente es "2076449103".
Sólo tienes que cambiar la definición de day_n a algo como:
Espero que te ayude.
Soy nuevo en la programación mql5.
Estaba tratando de aprender a través de este ejemplo, pero estoy un poco perdido con el bucle al final de la construcción del indicador. ¿Dónde exactamente se asigna un valor a la variable day_n?
Porque el bucle comprobará si day_n<day_t. ¿Cómo puede el programa conocer el valor de day_n?
Gran artículo,
Gracias por compartirlo.