Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 821
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
Por favor, preste atención a mi pregunta. Estoy escribiendo un indicador que hace algunos cálculos y los guarda en un array (no una serie temporal) del mismo tamaño que el número de velas del gráfico. Originalmente, pensé que si tengo 2000 velas en el gráfico en los parámetros de la terminal, a continuación, en la aparición de una nueva, la primera tomará el valor de la segunda, la segunda - la tercera, etc. Por lo tanto, al obtener prev_calculated igual a cero, recalculo toda la matriz, de lo contrario sólo la última barra. Pero descubrí que con cada nueva vela el valor de rates_total aumenta y se vuelve más alto que el límite de 2000.
Por lo tanto, no tiene sentido recalcular la matriz.
Pero, ¿por qué ocurre porque el terminal pone exactamente 2000 velas?
Cuando el terminal se cierra, el número de barras vuelve a ser 2000 y comienza a aumentar de nuevo cuando aparecen nuevas velas.
Por la tarde . ¿Podría darme una pista? Cómo sería el código de la condición: Si el saldo de la cuenta ha aumentado o disminuido, ejecute la función
//Declarar una variable fuera de las funciones:
double Balance=Saldo de la cuenta();
/Añadir a la función de tic/calcular:
si (¡Saldo!=Saldo de la cuenta())
{
Saldo=Saldo de la cuenta();
MiFunción(); // <-- Su función
}
Tengo dinero en mi cuenta real pero aquí dice que sólo se puede retirar el sueldo ?
Cuenta real ¿dónde la tienes?
porque así es como funciona el terminal
Entonces, ¿se trata de un comportamiento normal y no de un error? Porque algunos indicadores básicos personalizados están escritos sin tener en cuenta este factor y hacen un recálculo completo en cada prev_calculated==0.
esta solución es sólo para el probador, ¿qué pasa si sobrecargo el terminal? ¿qué pasa si ejecuto un segundo EA en esta cuenta?
necesita trabajar con el historial de pedidos, no hay pedidos abiertos con nuestro mago - compruebe el beneficio del último pedido en el historial
¿Recargar? ¿O recargar? Si es esto último, el comportamiento del EA no cambiará. Si lanza un segundo EA, el algoritmo se ejecutará de forma similar, sin errores.
Lo que el autor necesita para trabajar depende de la tarea que se haya propuesto. Por la forma en que planteó la pregunta, la respondí. No fui más específico en mi pregunta.
Por favor, preste atención a mi pregunta. Estoy escribiendo un indicador que hace algunos cálculos y los guarda en un array (no una serie temporal) del mismo tamaño que el número de velas del gráfico. Originalmente, pensé que si tengo 2000 velas en el gráfico en los parámetros de la terminal, entonces en la aparición de una nueva vela, la primera tomará el valor de la segunda, la segunda - la tercera, etc. Por lo tanto, al obtener prev_calculated igual a cero, recalculé toda la matriz, o sólo la última barra. Pero descubrí que con cada nueva vela el valor de rates_total aumenta y se vuelve más alto que el límite de 2000.
Por lo tanto, no tiene sentido recalcular la matriz.
Pero, ¿por qué ocurre así cuando el terminal pone exactamente 2000 velas?
Cuando el terminal se cierra, el número de barras vuelve a ser 2000 y comienza a aumentar de nuevo cuando aparecen nuevas velas.
//Declarar una variable fuera de las funciones:
double Balance=Saldo de la cuenta();
/Añadir a la función de tic/calcular:
si (¡Saldo!=Saldo de la cuenta())
{
Saldo=Saldo de la cuenta();
MiFunción(); // <-- Su función
}
Muchas gracias, ¡ha funcionado!
Aplicación Metatreder 4
Foro sobre trading, sistemas de trading automatizados y comprobación de estrategias
Cualquier pregunta para principiantes sobre MQL4, ayuda y discusión sobre algoritmos y códigos
Artyom Trishkin, 2019.04.28 16:55
Cuenta real, ¿dónde la tienes?¿Y por qué intentar averiguar cómo funciona internamente? Bueno, si quieres escribir tu propia función, probablemente sea más conveniente ordenar y tomar el valor de uno de los índices más externos. Pero difícilmente será más rápido que la función incorporada. Además, la función incorporada le permite buscar un valor dentro de los límites del índice designado. Por lo tanto, la clasificación simple no funcionará. Por lo tanto, tendremos que copiar parte del array en un array intermedio y ordenarlo ya y tomar el valor requerido de él, pero la copia de arrays no es una función muy "barata".
Necesitas entender para que tu cerebro pueda desarrollarse. Ayer me senté mucho tiempo e hice bocetos, parece que es posible prescindir de la ordenación por el principio de enumeración, pero seguimos necesitando variables que almacenen valores, y además podemos devolver el valor de una vez, no el índice, lo que simplifica el trabajo. Puedes hacer mejor tus propias funciones en el rango y diferentes modificaciones para ahorrar cálculos. Las funciones incorporadas carecen de muchos detalles. Pero las funciones incorporadas son muy rápidas, no entiendo a qué se debe, quizás estén escritas en C++, ya que escribo mis funciones con mucho cuidado, teniendo en cuenta todos los detalles: velocidad, calidad, ahorro de código, implemento modificaciones que reducen el número de comprobaciones y pases dentro de las funciones, pero por alguna razón las funciones incorporadas siguen pasando por encima de la velocidad, no de la calidad, pero me dirijo a la comunidad del foro con esta pregunta hace tiempo.