Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 885
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Sí, eso es lo que quiero decir. Bien, nos lo perdimos. Lo principal es que entienda lo que es...
¿Quién? Ahí es donde empecé.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Cualquier pregunta de los principiantes sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos
Alexey Viktorov, 2019.06.11 09:06
No se puede utilizar SymbolInfoInteger para obtener Point()).
Y en general, es necesario recordar que Point() o _Point sólo para el símbolo actual. Para los símbolos distintos a los que trabaja el EA, debe utilizar esta función.
La función SymbolInfoInteger no sólo devuelve valores int, sino también long, bool y enumeraciones.
Может вам очень не повезло, но я не люблю колупаться в чужом коде. Тем более править его...
Alexey Viktorov:
Siguiente pregunta: ¿Con qué frecuencia crees que el valor del indicador será exactamente 50?
Según he entendido el problema, debería ser un color >50 y otro <=50, pero ==50 no lo he visto por ningún lado. Por supuesto, para no perder en caso ==50, deberíamos añadir >=50 a uno de ellos y <=50 a otro. Puede parecer mejor.
Y la segunda pregunta: ¿hasta qué punto era necesario cambiar toda la indexación del buffer? Después de reindexar, ¿arreglaste todo en tu código? Tal vez sería más fácil hacer el índice de la memoria intermedia de color 4, y las memorias intermedias auxiliares 5 y 6 en consecuencia. Tendrías menos que editar y menos posibilidades de cometer más errores.
Te habrás devanado los sesos al cambiar la indexación del buffer.
Vuelve a coger el código antiguo del mensaje 8806 y cambia sólo la secuencia del buffer.
Entonces traza las condiciones cuando es necesario poner 0 y cuando es necesario poner 1No debiste pensar demasiado cuando cambiaste la indexación del buffer.
Vuelve a coger el código antiguo del post 8806 y cambia sólo la secuencia del buffer.
Luego traza las condiciones de cuándo poner 0 en el buffer de color y cuándo poner 1Lo hice, no sirvió de nada, admití que me estaba equivocando, después de tu post lo volví a hacer. Aquí están los lugares del código que he cambiado. El antiguo está sin comentar.
Así es como estaba antes de hacer los cambios. El histograma está ahí, el color correcto no.
Así es ahora. El histograma ha desaparecido, no se muestra.
Creo que no estoy pensando bien otra vez.
Lo hice, no funcionó, cometí errores, después de tu post lo volví a hacer. Aquí están los lugares en el código que he cambiado. El antiguo está sin comentar.
Así es como estaba antes de hacer los cambios. El histograma está ahí, el color correcto no.
Así es ahora. El histograma ha desaparecido, no se muestra.
Creo que no estoy pensando bien otra vez.
Esto no tiene ninguna lógica. La secuencia debe ser la siguiente: se determina el valor del histograma y se rellena el índice i-ésimo de la memoria intermedia del indicador. A continuación, una comprobación separada, si este valor >=50 el búfer de color se llena con 0, de lo contrario 1. Esto se determina por la secuencia de colores en la directiva
Si es 0, se toma el color clrGreen y si es 1, clrRed
Y esta línea es completamente superflua, y la secuencia es la opuesta a la primera.
Y esto
int cl;
¿añadido con qué propósito? Es más fácil de llenar directamente.
Para rellenar el buffer de color, utilizaría esta construcción
El operador ?: es equivalente a if else pero se aplica más fácilmenteLa lógica aquí está rota en general. La secuencia debe ser la siguiente: Definir el valor del histograma, rellenar el índice i-ésimo del buffer de indicadores. A continuación, una comprobación separada, si este valor >=50 el búfer de color se llena con 0, de lo contrario 1. Esto se determina por la secuencia de colores en la directiva
Si es 0, se toma el color clrGreen y si es 1, clrRed
Y esta línea es absolutamente innecesaria, y la secuencia es la opuesta a la primera.
Y esto
¿añadido con qué propósito? Es más fácil de llenar directamente.
Para rellenar el buffer de color, utilizaría esta construcción
El operador ?: es equivalente a if else pero más fácil de usarWURRAA, y mi alma ha cantado. ¡¡¡¡¡Alexey, muchas gracias !!!!!
Todo funcionó, no entiendo muy bien cómo es posible prescindir de la matriz
porque su descripción ha sido eliminada. ¿Así que puedes prescindir de la matriz extra aquí?
Mi Squeaky es un milagro, lo lleva a todas partes y a todas partes.
p.d. Todavía no he aprendido a adjuntar correctamente la imagen, por favor, disculpadme, pondré capturas de pantalla.
Para rellenar el buffer de color utilizaría esta construcción
El operador ?: es equivalente a if else, pero más fácil de usar¡¡¡Grandes consejos y una gran ciencia para el futuro!!! Incluso fue un poco más allá. A continuación se muestra el resultado.
Así fue:
Así se hizo, ¡¡¡la eficacia del enfoque es evidente!!! Gracias.
¡¡¡Grandes consejos y una gran ciencia para el futuro!!! Fue incluso un poco más allá de eso. A continuación se muestra el resultado.
Así fue:
Así se hizo, ¡¡¡la eficacia del enfoque es evidente!!! Gracias.
No hay eficiencia aquí - tres condiciones if-else en lugar de una. Aquí, es peor tal y como está...
Aquí no hay eficiencia: hay tres condiciones if-else en lugar de una. Aquí es peor...
Sí, efectivamente, no me había dado cuenta. Se ve mejor, hay menos letras.
¿Y no hay manera de poner tres ejecuciones (no sé cómo decirlo correctamente) bajo un operador?: a la vez?