Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 305
![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
Buenas noches a todos! Decidí poner un rastro en las operaciones abiertas en el probador, traté de pasar por OrderGet....() y me di cuenta que la operación pasó de la categoría de órdenes a una posición abierta, respectivamente pasé por PositionGet....(), pero de nuevo nada funciona,
La pregunta es si debo usar ahora HistoryDealGet...() ? ¿O no entiendo algo? ¿Qué camino seguir para modificar el SL en el comercio abierto en el probador? Gracias de antemano por los comentarios.
Por favor, indíqueme en !!!! cómo implementar en MQL5 la comprobación de la presencia (o ausencia) de un objeto gráfico, por ejemplo, una línea de tendencia o una línea vertical.
Idealmente, me gustaría utilizar una lógica similar a "Si el orden no existe" o "Si el orden existe".
Por favor, indíqueme en !!!! cómo implementar en MQL5 la comprobación de la presencia (o ausencia) de un objeto gráfico, por ejemplo, una línea de tendencia o una línea vertical.
Idealmente, me gustaría utilizar una lógica similar a "Si el orden no existe" o "Si el orden existe".
¿Puede aconsejar cómo aplicar correctamente el algoritmo de compra?
En este momento, el Asesor Experto tiene que comprar muchas veces, hasta que recibe la información de que hay posiciones abiertas, y se retrasa. Cómo hacer que el Asesor Experto espere a que la bolsa responda después de la primera compra (cuando se dan las condiciones).
El problema ahora es que la variable Bye_opened debería convertirse en true y esto debería evitar que el EA haga operaciones innecesarias hasta que se activen los stops. Pero el cambio de la variable Bye_opened lleva mucho tiempo y el EA tiene tiempo de hacer varias operaciones.
¿Qué falta en mi código? Por favor, señale las deficiencias.
El problema ahora es que la variable Bye_opened debe convertirse en true y esto debe evitar que el EA haga operaciones innecesarias hasta que se activen los stops. Pero los cambios de la variable Bye_opened toman mucho tiempo y el EA tiene tiempo para hacer varias operaciones.
El hecho de que un cambio de variable lleve mucho tiempo... ¿cómo lo ha determinado? Bien, supongamos que sí. Entonces la respuesta está en la pregunta. Si se necesita un retardo en la apertura de una posición se debe utilizar Sleep( N ) donde N se calcula experimentalmente.
Variante 2. La respuesta, de nuevo, está en la pregunta. Haz que Bye_opened sea global y cámbialo inmediatamente después de que la posición se abra con éxito, justo en este módulo. Reajuste de la misma manera, como se comprueba la existencia de la posición.
...
Si inserta una línea
después de la orden: OrderSend(), no habrá reapertura de posiciones.
Tal vez sea mejor comprobar si la posición se ha abierto primero, y luego ...
???
Al parecer, tiene un robot que funciona en cada garrapata. Entre el envío de la orden al servidor y la recepción de la respuesta del servidor, vendrán varios ticks más y se abrirá una posición extra en cada tick. Mi propuesta excluye la situación de repetición de aperturas. Y es necesario comprobar si se ha abierto una posición o no.
Eso es lo que estoy diciendo. De lo contrario, entendería literalmente todo y se perdería una comprobación importante.
¿Así que esto es realmente cómo comprobar correctamente? Lo siento, no puedo hacerlo bien.
Este es el código (todo ubicado en el bloque OnTick):
Para evitar abrir volúmenes innecesarios:
Lamentablemente, esta condición no funciona al abrir una operación.