Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1177
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
¡Hola!
¿Puedes aconsejar cómo configurar el indicador para que funcione sólo en la apertura de la barra, y no en cada tick y cómo hacer que no se ejecute cada vez (en cada nueva barra) en todo el historial?
Me gustaría utilizar el indicador como alternativa al anterior.
Rostislav
En primer lugar, sobre las barras. Cuando se forma una nueva barra, se escribe un nuevo valor en Time[0]: el momento en que se abre la barra.
OnCalculate(...)
{
if(Time[0] == t) return(0); // Si se procesa esta barra --> exit
t = Time[0];
Ahora para todo el historial: se ralentizará
datetime t;
Primero, sobre las barras. Cuando formamos una nueva barra, escribimos un nuevo valor en Time[0] - el momento en que se abre la barra.
OnCalculate(...)
{
if(Time[0] == t) return(0); // si se procesa esta barra --> exit
t = Tiempo[0];
Ahora la historia completa: se ralentizará
Gracias por la rápida respuesta. Lo que pregunto es cómo hacer que NO se ralentice y recorra el historial cuando aparece una nueva barra, sino que sólo procese la nueva barra...
Ahora está organizado de la siguiente manera: for(int i=limit-1; i>=0; i--) y según entiendo, significa que en cada apertura de una barra, todos los valores de todo el historial serán recalculados de nuevo, mientras que se debería trabajar sólo con la última barra...
Así es como se calcula en la última barra:
Veamos primero la línea
Para que me quede más claro, lo he reescrito así.
¡¡¡Aha!!! Ahora empiezo a entender... En el bucle, la variable a cambia de 1 a 6. Con los valores de esta variable 1, 5 y 6 no hay ninguna acción. Entonces sólo
O en su estilo.
El resultado será el mismo, pero funcionará más rápido.
Ahora tienes que deshacerte de la función Estadística, escribir su cuerpo tres veces seguidas, sustituir los parámetros formales en cada una de las tres partes por parámetros reales y eliminar las declaraciones de variables duplicadas. El código total será un poco más largo pero la ejecución será más rápida. Tiene sentido lanzar print() - ¿quién exactamente en este momento va a mirar el registro de mensajes? - O sustituirlo por Alert() para mostrarlo en la pantalla. Además, hay una variable namZz2 - ¿cambia su valor?
Necesito utilizar stats() en lugar de stats(). Estúpidamente, sé que puedo reescribir tres veces, como has dicho, pero el problema es que lo más probable es que el resultado de la recogida de estadísticas tenga que añadir más arrays y tarde o temprano volveré a los originales. Por eso te ofrezco caminos sencillos, que ya conozco, y que desgraciadamente me llevarán al principio. Por eso miro hacia adelante, ¡para no tener que volver a ello en el futuro!
¡¿¡Cómo poner este código en el estadístico!? para que sea un único procedimiento que al principio como dije la pregunta por favor mira!
Así es como se calcula en la última barra:
Este es un extracto del código de trabajo. ¡Cómo recogerlo en una sola Estadística nula sin Estadística nula intermedia ! ¡Tendría que rehacer todo el código para juntar todas las matrices en una sola e intentar rascarla desde ahí !
El extracto que has citado de tu código de trabajo es erróneo o tu función Statistic() no hace nada más que imprimir cuando se llama desde Stat().
De todos modos, se detendrá justo después del regreso;.
Por favor, danos el código completo para entender lo que quieres.
Que conste en acta. Demasiados hilos en el foro para ayudar a los novatos en MQL4.
Este hilo ya no tiene soporte y está cerrado.
Por favor, dirija todas las preguntas a cualquiera de los siguientes hilos activos:
https://www.mql5.com/ru/forum/160683
https://www.mql5.com/ru/forum/160587
Todos los demás mensajes en este hilo serán borrados.