Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1051
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 entiendo dónde está la respuesta. Me refiero a esto: "La función integra la comprobación del estado de la bandera de parada del Asesor Experto cada 0,1 segundos"? Si es así, ¿cómo se puede eliminar esta bandera?
No, si leyeras hasta el final, verías la respuesta a la res...
Nota
La función Sleep() no puede ser llamada desde los indicadores personalizados, ya que los indicadores se ejecutan en el hilo de la interfaz y no deben ralentizarlo. La función lleva incorporada una comprobación del estado de la bandera de parada del experto cada 0,1 segundos. La función Sleep() en el probador de estrategias no causa ningún retraso.
Empieza pegando esto al final del indicador. Una vez que veas la marca en la pantalla, piensa cómo poner lo que quieres en ella. Aquí te aconsejan, pero tienes que hacerlo tú mismo.
int Número=25;
if(H==H1&&H1==H2)
{if(J == true) {ObjectCreate(PatternText[shift],
OBJ_TEXT, 0, Time[shift1], High[shift1] + Range*5);
ObjectSetText(PatternText[shift], "pattern", 10, "Arial", Red);
downArrow[shift1] = High[shift1] + Range*0.5;}if(setalert == 0 && Alert == true) {pattern = "pattern";setalert = 1;}}
if(ObjectFind(0, "Text")<0) // comprobar la etiqueta de salida
{
ObjectCreate("Texto", OBJ_LABEL, 0, 0, 0); // creación
ObjectSet("Text", OBJPROP_CORNER, 1); // Esquina superior derecha
ObjectSet("Texto", OBJPROP_XDISTANCE, 10); //X
ObjectSet("Texto", OBJPROP_YDISTANCE, 10); //Y
}
ObjectSetText("Text", string(number), 14, "Arial",Black); // Salida a la etiqueta
}
return(0);
}
La cuestión es mucho más fácil de resolver.
StringLen("tickEURUSD")
Es ciertamente más fácil con él.... Tal vez se perdió en ese momento, o se perdió... Definitivamente falta en mi TurboPascal favorito. Solía hacer la multiplicación de logaritmos.
Durante un tiempo, después de cambiar a mql4 actualizado, hubo un error en la documentación. Al hacer clic en MathLog10 se abre la ayuda de MathLog
Escribí a servicedesk al respecto, pero arreglaron la mitad y dejaron la otra mitad...
log(10) realmente no es 1, pero el hecho de que mql no tenga un logaritmo decimal me sorprende...
¿Qué es entonces? https://docs.mql4.com/ru/math/mathlog10 aunque hay un error en el texto.
La cuestión es mucho más fácil de resolver.
Voy a responder desde el último post.
Qué son los logaritmos entiendo, no entendí para qué sirve en ese código, pero después de tu correspondencia y la del compañero entendí que es para los decimales, ¿no?
¿No podría hacerse de otra manera? ¿Por qué esto en el código(int)? ¿Por qué tu manera es mejor que la línea que proporcioné?))
muchas gracias)
Voy a responder desde el último post.
Entiendo lo que son los logaritmos, no entendía por qué en ese código, pero después de tu correspondencia y la del compañero entendí que es para determinar el número de decimales, ¿no?
¿No podría hacerse de otra manera? ¿Por qué lo necesito en el código(int)? ¿Por qué tu manera es mejor que la línea que proporcioné?))
muchas gracias)
Sí, para determinar el número de decimales. Esto es necesario para normalizar el valor del lote si el lote está definido por alguna fórmula y el resultado puede tener más decimales de los permitidos. En algunos casos, podrías poner simplemente un dos, pero entonces podrías encontrarte con un error, así que es mejor definirlo programáticamente.
Hay otra forma de hacerlo. Hay dos maneras de resolver este problema: una es convertir el número en cadena, definir la longitud de la cadena, encontrar el índice del carácter de punto y la diferencia entre la longitud de la cadena y el índice del carácter de punto se evaluará como parte fraccionaria del número. Y en el foro de mql5, puedes encontrar varias variantes, algunas más finas, otras más fáciles.
Aquí hay una variante más.
Esta función define el número de decimales de absolutamente cualquier número.
El algoritmo es escandalosamente simple, debemos considerar cuántas veces el residuo de la división por 1 será mayor que cero.
No he dicho que mi manera sea mejor. Cada programador escribe como ve la solución del problema.
Un número de tipo double, aunque no tenga dígitos significativos en la parte fraccionaria tiene la forma, por ejemplo, 2.0, que no es del todo correcta, y para obtener un entero normal se convierte a tipo int implícitamente.
Nota
La función Sleep() no puede ser llamada desde los indicadores personalizados, ya que los indicadores se ejecutan en el hilo de la interfaz y no deben ralentizarlo. La función lleva incorporada una comprobación del estado de la bandera de parada del experto cada 0,1 segundos. La función Sleep() en el probador de estrategias no causa ningún retraso.
Todos son tan inteligentes que da miedo mirarlos. Escribí que el deslizamiento fue ignorado en el Probador de Estrategias (lo cual es claro), pero todas las posiciones están abiertas como he especificado. Pero en el deslizamiento de demostración no funciona, y la posición se abre sólo uno, y que se cierra inmediatamente. Este es el problema que no puedo resolver.