Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1051

 
Está claro que la oferta ha envejecido, pero esperaba que este diseño me permitiera abrir varias posiciones en la barra actual con diferentes precios de apertura de la oferta. Y en el tester funciona bien, pero en la demo se abre una posición y se cierra inmediatamente. cómo evitarlo no está claro.
 
rapid_minus:
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.




 
LRA:

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.

Lo siento, no sé qué hacer ahora(
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);
}
 
AlexeyVik:    me has sorprendido... mathlog10

La cuestión es mucho más fácil de resolver.

Ciertamente es más fácil con él.... Tal vez se perdió en ese momento, o se perdió... En mi querido TurboPascal se echa definitivamente en falta. He utilizado el logaritmo para hacerlo.
 
Gracias.
 
LRA:
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...

 
Tengo un indicador que repite completamente las barras de la ventana principal con la misma escala en precio y tiempo. Pregunta: ¿existe un CARTUCHO para que la ventana del indicador se escale de la misma manera que en la ventana principal cuando se desplaza el gráfico?
 
AlexeyVik:

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)

 
Igemon:

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.

int fun(double ch)
{
 int i = 0;
 double res = 0, ostatok = fmod(ch, 1);
 while(ostatok != 0 && i < 16) // число взято от фонаря для прерывания зацикленности
  {
   res = ostatok * 10;
   ostatok = NormalizeDouble(fmod(res, 1), 8); // Вроде 8 максимально
   i++;
  }
 return(i);
}/*******************************************************************/

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.

Razón de la queja: