Discusión sobre el artículo "Cómo ser un mejor programador (parte 02): 5 cosas que evitar para convertirse en un programador exitoso de MQL5"
Hola a todos,
Soy un novato. Tengo un montón de experiencia en programación, pero sólo empezando a código en MQL5 - es mi primer lenguaje similar a C ++. He estado leyendo a través de los documentos de referencia, pero no puede detectar mi error - el valor que espero que se devuelve de expoMA está recibiendo impreso / comentado en mi gráfico como 0.0 - ¿Estoy haciendo algún tipo de error de sintaxis? No recibo problemas/errores de compilación. Cualquier aportación sería genial
void OnTick( { int days = 3; double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); double movingAverageValues[]; double bidAskAverage = (Ask + Bid)/2; int exponentialMovingAverage = iMA(_Symbol,_Period,MA_Period,0,MODE_EMA,PRICE_CLOSE); ArraySetAsSeries(movingAverageValues,true); CopyBuffer(exponentialMovingAverage,0,0,3,movingAverageValues); double alpha = expoMA(days); double dEMA = bidAskAverage - movingAverageValues[1]; // el índice 1 representa aquí la EMA del valor t - 1 Comment("The ask price is: " + DoubleToString(Ask,5) + "\n" "The bid price is: " + DoubleToString(Bid,5) + "\n" "The average price is: " + DoubleToString(bidAskAverage,5) + "\n" "The custom expoMA value is: " + DoubleToString(alpha,5) + "\n" "The dEMA value is: " + DoubleToString(dEMA,5)) ; } double expoMA(int days=2) { double alpha = 2 / (days + 1); NormalizeDouble(alpha,5); return(alpha); }
Hola, chicos,
Soy un novato. Tengo un montón de experiencia en programación, pero sólo empezando a código en MQL5 - es mi primer lenguaje similar a C ++. He estado leyendo a través de los documentos de referencia, pero no puede detectar mi error - el valor que espero que se devuelve de expoMA está recibiendo impreso / comentado en mi gráfico como 0.0 - ¿Estoy haciendo algún tipo de error de sintaxis? No recibo problemas/errores de compilación. Cualquier aportación sería genial
double expoMA(int days=2) { double alpha = 2.0 / (days + 1); //... }
Estás dividiendo 2/4 en enteros (0), y luego eso es parseado en un double. En su lugar, usted debe tener uno de entre dividendo o divisor ser un doble (por lo que la división se realiza en el "más detallado" tipo de datos)
Otras opciones podrían ser (siendo días un int):
double alpha = double(2) / (days + 1); double alpha = 2 / (days + 1.0); double alpha = 2 / double(days + 1);Probablemente sea un error de python jejeje
Manuel Alejandro Cercos Pérez:
Estás dividiendo 2/4 en enteros (0), y luego eso se parsea en un double. En lugar de eso, deberías hacer que uno de entre dividendo o divisor sea un double (para que la división se haga en el tipo de dato "más detallado")
Otras opciones podrían ser (siendo días un int):
Probablemente sea un error propio de python jejeje.Hola Manuel,
¡muchas gracias! El truco anterior ha funcionado a las mil maravillas. Me has ahorrado invertir muchas más horas en encontrar la causa raíz.
Si no, lo harás en cada tick recibido.
Tu última pregunta: toma el tiempo de apertura y súmale
Enhorabuena a los traductores.
Después del primer artículo tenía dudas, pero ahora estoy seguro de que el autor quiere explicar a los programadores imbéciles que son imbéciles. Autor, no te ofendas, pero el artículo está escrito para ti. Además, la arrogancia con la que te diriges a tus lectores anula tu trabajo.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Cómo ser un mejor programador (parte 02): 5 cosas que evitar para convertirse en un programador exitoso de MQL5:
Este es un artículo de lectura obligada para cualquiera que desee mejorar su carrera como programador. Esta serie de artículos tiene como objetivo convertirlo a usted en el mejor programador posible, sin importar la experiencia que tenga. Las ideas analizadas funcionan tanto para principiantes como para profesionales de la programación en MQL5.
En esta serie de artículos, utilizo mucho la palabra novato para referirme a alguien con menos experiencia en programación en MQL5 (no se ofenda por ese detalle), esto hace que resulte más fácil identificarse con ello. Sin embargo, esto no significa que este artículo sea solo para novatos. ¡En absoluto! Independientemente de la experiencia que cada uno tenga en programación, este es un texto para todos, porque lo que convierte a uno en un novato o no son sus hábitos y comportamientos de codificación, no los años dedicados a esta tarea.
Para aquellos que no lo hayan leído, el primer artículo se encuentra aquí, por lo tanto, permítanme continuar con la tarea de convertir a los novatos en profesionales.
Autor: Omega J Msigwa