Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 683
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
No los has inicializado al principio ni en ningún sitio, sólo los has declarado
Escribí antes de usar, es decir, si tienes las variables SredRazmax, SredRazmin, Sredn como sumas de valores del array, entonces para calcular correctamente la suma, necesitas poner a cero la variable y luego sumar los valores del array y guardarlos en esta variable
es decir
Y la segunda, lo que tienes una duda, en el indicador cada tick se llamará aOnCalculate() y eso significa que contará constantemente los topes de ZigZag en cada tick, es decir, unas 40-60 veces por segundo.
Gracias, pero he probado a ponerlos a cero y he probado ausarOnStart en lugar deOnCalculate() , los valores siguen saltando y no me queda claro si ww=0 (el valor del array siempre se muestra), ¿por qué los valores saltan en el medio, cómo hacer que no cuente cada tick y sólo cuente los valores del array?
Gracias, pero he probado a ponerlos a cero y autilizarOnStart en lugar deOnCalculate()
El asunto es que OnStart() se utiliza en los scripts y OnCalculate() en los indicadores.
En el código, se suman los precios en los que se encuentran los picos de ZigZag en todo el gráfico, en la salida se escribe "Average spread" y se imprime el valor(SredRazmax-SredRazmin)/nn, y el cálculo se realiza para todas las barras
¿Por qué necesitas el indicador si no utilizas los buffers de los indicadores para dibujar? en el indicador los buffers están unidos a las barras, y sus valores se desplazarán tan pronto como aparezca una nueva barra
Creo que no puedo explicar por qué sucede, el punto es que OnStart() se utiliza en las secuencias de comandos, y OnCalculate() en los indicadores, es necesario entender cómo las secuencias de comandos difieren de los indicadores en MQL
En el código, se suman los precios en los que se encuentran los picos de ZigZag en todo el gráfico, en la salida se escribe "Average spread" y se imprime el valor(SredRazmax-SredRazmin)/nn, y el cálculo se realiza para todas las barras
¿Por qué necesitas un indicador si no utilizas los buffers de los indicadores para dibujar? en el indicador los buffers están unidos a las barras y sus valores se moverán tan pronto como aparezca una nueva barra
Para ser sincero, he simplificado el problema (la fórmula original se ve un poco diferente), pensé que sería capaz de entender por qué los valores de la media saltan cuando el valor cero de la matriz permanece constante. Tengo dos bucles, uno para llenar el array, y el otro para el cálculo de la media, hay un límite de nn, y en realidad quería dar salida a un gráfico - es un zig zag estándar, pero iCustom está dibujando el infierno fuera de él, y el promedio... Al nodo cero, si es mayor que el anterior, se le resta el nodo anterior y al anterior se le resta el anterior (tendrá signo negativo, por lo que se debe multiplicar por menos 1) y todo esto se debe sumar y dividir por un número determinado de nn. Obtenemos la extensión media de los vértices. Además, quería obtener otros promedios para el zigzag, pero me quedé con los valores de "salto".
Así es más o menos como era originalmente:
Para ser honesto, sólo simplifiqué el problema (originalmente la fórmula se ve un poco diferente), pensé que podría entender por qué los valores de la media saltan, si el valor cero en la matriz se mantiene constante. Tengo dos bucles, uno para llenar el array, y el otro para calcular la media, hay un límite de nn, y de hecho quería dar salida a un gráfico también - es un zig zag estándar, pero iCustom dibuja el infierno fuera de él, y el promedio... Al nodo cero, si es mayor que el anterior, se le resta el nodo anterior y al anterior se le resta el anterior (tendrá signo negativo, por lo que se debe multiplicar por menos 1) y todo esto se debe sumar y dividir por un número determinado de nn nodos. Obtenemos la extensión media de los vértices. Además quería obtener otros promedios para el zigzag, pero me quedé con los valores de "salto".
Así es aproximadamente como era originalmente:
No lo entiendo muy bien, es tarde, tengo sueño, lo he retocado según he visto, tengo dudas de cómo se comportará el indicador en una barra cero (no lo he comprobado), pero dibuja y muestra los comentarios según tu fórmula
¿Puede ayudarme a resolver un problema como éste? (Si es posible.)
El Asesor Experto emitirá una Alerta bajo ciertas condiciones. ¿Es posible hacer que la ventana que activó la Alerta se active también?
¿Puede ayudarme a resolver un problema como éste? (Si es posible.)
El Asesor Experto emitirá una Alerta bajo ciertas condiciones. ¿Es posible hacer que la ventana que activó la Alerta se active también?
Tengo algunas dudas de cómo se comportará el indicador en una barra cero (no lo he comprobado), pero sí dibuja y utiliza su fórmula para emitir el comentario.
Sí, gracias por su tiempo, funciona, debo haber hecho algo mal. Pero no sale un array en el comentario (sólo debería haber vértices, ¿no?) y cuenta mal con el menos y el número..., el zigzag tiene una extensión diferente entre vértices. La idea es restar el anterior vértice más pequeño al último más grande (que se acaba de formar), y del anterior más pequeño restar incluso el que es más grande y el número será con signo menos, lo multiplicamos por (-1) y así sucesivamente, y todo esto se suma nn veces y se divide por nn, obtenemos la salida media. En unos 4 relojes esto sería 1,69(de a) en el USDJPY. Además, quería calcular el número de barras promedio entre los topes. Ahora trataré de entender su código, qué hice mal, por qué no me dibujó y por qué no calcula correctamente...
Sí, gracias por su tiempo, realmente funciona, debo haber hecho algo mal. Pero no sale el array en el comentario (debería tener sólo vértices, ¿no?) y cuenta mal con el menos y el número..., el zigzag tiene una extensión diferente entre vértices. La idea es restar el anterior vértice más pequeño al último más grande (que se acaba de formar), y del anterior más pequeño restar incluso el que es más grande y el número será con signo menos, lo multiplicamos por (-1) y así sucesivamente, y todo esto se suma nn veces y se divide por nn, obtenemos la salida media. En unos 4 relojes esto sería 1,69(de a) en el USDJPY. Además, quería calcular el número de barras promedio entre los topes. Ahora trataré de entender tu código, qué hice mal, por qué no me dibujó y por qué no calcula correctamente...
Los topes en el comentario no saldrán, porque el bufferindicador HZZ[] contiene valores copiados del buffer indicador ZigZag, de lo contrario no podremos dibujar, deliberadamente dividí en 2 condiciones de detección de vértices arriba y abajo:
Sinecesitas conocer varios topes en ZZ, entonces tienes que crear otro array para almacenar estos datos. El nuevo buffer de indicadores lo complicará, porque todos los arrays conectados a los buffers de indicadores se "deslizan" junto con el gráfico
ZS: el código es mi ejemplo, y creo que necesita un bucle a la 1 ª barra, y no a 0, volverá a calcular constantemente los valores de SredRazmax, no puedo comprobar ahora, sin terminal en el PC
Los topes en el comentario no saldrán, porque el bufferindicador HZZ[] contiene valores copiados del buffer indicador ZigZag, de lo contrario no podremos dibujar, deliberadamente dividí en 2 condiciones de detección de vértices arriba y abajo:
Sinecesitas conocer algunos topes en ZZ, entonces tienes que crear otro array para almacenar estos datos. El nuevo buffer de indicadores lo complicará, porque todos los arrays conectados a los buffers de indicadores se "deslizan" junto con el gráfico
ZS: el código es mi ejemplo, y creo que hay que hacer un bucle a la 1 ª barra, y no a 0, volverá a calcular constantemente el valor de SredRazmax, no puedo comprobar ahora, sin terminal en el PC