Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1052
![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
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.
Todo el mundo es tan inteligente que da miedo. Escribí que el deslizamiento fue ignorado en el probador (lo cual es claro), pero todas las posiciones están abiertas siempre y cuando las haya 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.
¿Dónde está su código?
¿Quizás esto pueda ayudar?
Lo inteligente que es todo el mundo, simplemente da miedo. Si no sabes leer: he escrito que el deslizamiento se ignora en el probador (lo cual es claro), pero las posiciones son todas abiertas, como se indica. Pero en el deslizamiento de demostración no funciona, y la posición se abre sólo uno, y que se cierra inmediatamente. No puedo resolver este problema.
Por lo visto no es la primera vez que te pones grosero, por eso nadie te contesta. Aunque ya se le ha dado respuesta a su segunda pregunta.
Pero sólo podrías responder así.
Está claro que la oferta ha envejecido, pero esperaba que este diseño permitiera abrir varias posiciones en la barra actual con diferentes precios de apertura de la oferta. Y funciona bien en el tester, pero en la demo abre una posición y la cierra inmediatamente. cómo evitarlo no está claro.
¿Qué esperabas? Hemos ofrecido una solución. Debería leerlo con atención.
poz = OrderSend(Symbol(),OP_SELL,lot,Bid,slip,0,0,NULL,magic,Red);
Sleep(10000);
poz = OrderSend(Symbol(),OP_SELL,lot,Bid,slip,0,0,NULL,magic,Red);
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 más de mis variantes.
Esta función determina el número de decimales de absolutamente cualquier número.
El algoritmo es escandalosamente sencillo: considere cuántas veces el residuo de la división por 1 es mayor que cero.
No he dicho que mi manera sea mejor. Cada programador escribe su propia manera de resolver el problema.
Un número de tipo double, aunque no tenga dígitos significativos en la parte fraccionaria, se ve como 2.0, lo cual no es del todo correcto, y para obtener un entero normal se convierte a tipo int implícitamente.
Muchas gracias.
Pero, ¿por qué hay que anteponer (int) a la expresión?
Muchas gracias.
¿Por qué se pone (int) delante de la expresión?
¿Puedo abrir un gráfico en un Asesor Experto desde la opción Abrir gráfico sin conexión por su nombre? He mirado ChartOpen() pero no funciona por su nombre.