Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 589
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
Al comprobar el indicador paso a paso, he encontrado un rebote en la subrutina detrás del if {} y en el que no hay W. He aquí un código simplificado para aclarar el punto:
//--- parámetros de entrada
input int w=10;
//---
{
int i;
//---
int co=0;
for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}
//--- devuelve el valor de prev_calculado para la siguiente llamada
return(rates_total);
}
Resultado (arlets):
2016.05.30 00:45:14.064 1 (EURUSD,H1) 11
2016.05.30 01:10:35.972 1 (EURUSD,H1) 10
........... etc. a 1.
2016.05.30 00:45:14.064 1 (EURUSD,H1) 1
Regla: Si la expresión entre paréntesis es verdadera, se ejecuta el operador1.
En el código: el operador1 se ejecuta SIEMPRE.
Creo que if() debería funcionar sólo una vez cuando la condición entre corchetes es verdadera. Pero en realidad se produce en cada comprobación, por lo que todas las expresiones en {} se ejecutan en cada paso y mastican el tiempo de la máquina.
Preguntas: ¿POR QUÉ la variable CO creció de 0 a 11 durante el bucle? ¿Por qué se activa la alerta a cada paso?
¿Cuántas veces tengo que decírtelo?
Mira: tienes w igual a 10,
Compruebas si w es 10: "if(w==10){co++; Alert(co);}" ¿Crees que esta expresión es verdadera?
Entonces, ¿a qué viene la pregunta?
Al comprobar el indicador paso a paso, he encontrado un rebote de disparos en la subrutina detrás de if {} y en la que no hay W. He aquí un código simplificado para aclarar el asunto:
//--- parámetros de entrada
input int w=10;
//---
{
int i;
//---
int co=0;
for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}
//--- devuelve el valor de prev_calculado para la siguiente llamada
return(rates_total);
}
Resultado (arlet):
2016.05.30 00:45:14.064 1 (EURUSD,H1) 11
2016.05.30 01:10:35.972 1 (EURUSD,H1) 10
........... etc. a 1.
2016.05.30 00:45:14.064 1 (EURUSD,H1) 1
Regla: Si la expresión entre paréntesis es verdadera, se ejecuta el operador1.
En el código: el operador1 se ejecuta SIEMPRE.
Creo que if() debería funcionar sólo una vez cuando la condición entre corchetes es verdadera. Pero en realidad ocurre en cada comprobación, por lo que todas las expresiones en {} se ejecutan en cada paso y mastican el tiempo de la máquina.
Preguntas: ¿POR QUÉ la variable CO creció de 0 a 11 durante el bucle? ¿Por qué se activa la alerta a cada paso?
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Bichos, errores, preguntas
Andrey Barinov, 2016.05.30 10:38
Aparentemente tienes un error de escritura en el código, y querías escribir así:
¡Hola Señores! Tengo un pequeño problema a la hora de escribir un EA(( El EA abre las órdenes pendientes casi siempre bien, pero a veces necesito abrir las órdenes muy cerca del precio actual, así que ¿cómo prescribir que se abran las órdenes pendientes lo más cerca posible?
¿Cuántas veces tengo que decírtelo?
Mira: tienes w igual a 10,
Compruebas si w es igual a 10: "if(w==10){co++; Alert(co);}" ¿Crees que esta expresión es verdadera?
Entonces, ¿a qué viene la pregunta?
Mis disculpas por la pregunta estúpida y gracias por su paciencia y comprensión. Me defraudó mover mecánicamente la sonda if(w==10){ Alert(I,"/",F); a través del programa buscando un error en los pasos. A veces ocurre cuando te topas con un muro de tu propia ignorancia de la razón, pero una vez que te apartas del problema durante un tiempo, éste se resuelve por sí solo. Lo que usted percibe como "chascarrillo" resulta ser en realidad una petición no contabilizada de otra parte del programa. Gracias, Vladimir.
Hola, ¿puede ayudarme con las matemáticas, por favor?
Cómo saber cuál será la suerte de la quinta posición, si se conoce la suerte de la primera y que la suerte de cada nueva posición aumenta en progresión aritmética.
La segunda opción es que el lote aumente con la progresión geométrica.
Hola, ¿puede ayudarme con las matemáticas, por favor?
Cómo saber cuál será la suerte de la quinta posición, si se conoce la suerte de la primera y que la suerte de cada nueva posición aumenta en progresión aritmética.
La segunda opción es que el lote aumente con la progresión geométrica.
¿Te han expulsado de Google? Lo siento, ¿por qué eres tan cruel? ))
La progresión aritmética se define mediante una fórmula.
laprogresión geométrica viene dada por la fórmula
No entiendo, para la primera variante basta con multiplicar el primer lote por 5, si aumenta por el lote inicial
Para la segunda opción: lote* multiplicador de la primera posición*5 ...pero
No lo entiendo, en teoría para la primera opción basta con multiplicar el primer lote por 5
Para la segunda opción, el lote de la primera posición * coeficiente * 5 ...pero
No pasa nada, yo también he olvidado las matemáticas desde el colegio )) He sacado un libro de matemáticas y he vuelto a escribir la definición de aritmética.
-------------
Una secuencia de números, cada uno de los cuales, a partir del segundo, se obtiene del anterior añadiendo un número constante d, llamado diferencia de una progresión aritmética.
Si el primer término es a1, entonces el arith. prog. con longitud n tiene la forma
a1, a1+d, a1+2*d, ...., a1 + n*d
El código en MQL es así, he creado un ejemplo sencillo
No pasa nada, yo también he olvidado las matemáticas desde el colegio ))