Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 821

 

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.


ruslanzip:
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 ?
 
Roza75:
Tengo dinero en mi cuenta real pero aquí dice que sólo se puede retirar el sueldo ?
Cuenta real ¿dónde la tienes?
 
Artyom Trishkin:
Cuenta real ¿dónde la tienes?
Aplicación Metatreder 4
 
Igor Makanu:

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.


Igor Makanu:

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.

 
The_Sheikh:

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!

 
Artyom Trishkin:

Tengo la aplicación Metatreder 4 en mi teléfono
 
Alexey Viktorov:

¿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.

 
¡Buenas tardes a todos los usuarios del foro! ¡Frente a un problema, el segundo día de dolor de cabeza, no puedo averiguar cómo poner en práctica la idea! Cómo dibujar un rectángulo, un círculo, un óvalo (no importa la figura) en una vela determinada, para no redibujar en nuevas coordenadas. ¿Y si algunas condiciones desencadenan una cifra? Cada figura en su propio candelabro. Hace poco que he empezado a estudiar mql4, así que no estoy familiarizado con los gráficos. Ayer decidí intentar imprimir un cuadrado en la décima barra (como ejemplo). Conseguí uno y ya no se dibuja. Ayer, he pinchado y pinchado el código, y finalmente ha funcionado, pero el cuadrado se borra constantemente en su antiguo lugar y se dibuja en uno nuevo, luego molesta que el cuadrado de salida sólo una vez. ¡Pista que sabe cómo poner en práctica! O aconsejar donde hay una rama en el foro. ¡Aka ya leí un montón de información, sólo que más confundido! ¡Gracias de antemano por las respuestas!