Discusión sobre el artículo "Introducción a MQL5: Cómo escribir un Expert Advisor y un Indicador Personalizado" - página 3
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
Pregunta 4: El artículo dice lo siguiente
¿Pero por qué ponemos cero en el elemento de estructura request.tp? Porque si tenemos una orden de compra pendiente , request.tp=0 significa que el TP siempre estará por debajo del precio Bid actual. Y, según me parece, una orden con tal valor de TP debería ser rechazada debido al valor incorrectamente especificado del parámetro TP, o debería ser ejecutada inmediatamente al precio Bid actual después de que el servidor acepte tal orden.
Pregunta 5: El artículo dice lo siguiente
El Manual de Referencia MQL5 también indica que"SYMBOL_TRADE_STOPS_LEVEL es el margen mínimo en pips desde el precio de cierre actual para establecer órdenes Stop". Según me parece, en ambos casos se trata de que se cumpla la desigualdad
¿Por qué entonces el código del Asesor Experto comprueba la distancia entre Bid (Ask) y StopLoss para superar la sangría mínima StopLevel?
¿Es esta comprobación necesaria en todos los casos, o es una peculiaridad de la aplicación de una estrategia en particular? En resumen, ¿debo comprobar siempre la distancia entre Bid (Ask) y StopLoss al colocar una orden pendiente para ver si se supera el margen mínimo StopLevel?
¿Pero por qué ponemos cero en el elemento de estructura request.tp? Porque si tenemos una orden de compra pendiente , entonces request.tp=0 significa que TP siempre estará por debajo del precio Bid actual. Y, según me parece, una orden con tal valor de TP debería ser rechazada debido a un valor incorrectamente especificado del parámetro TP, o debería ser ejecutada inmediatamente al precio Bid actual después de que el servidor acepte tal orden.
En resumen, ¿debo comprobar siempre la distancia entre Bid (Ask) y StopLoss al colocar una orden pendiente para ver si se supera el margen mínimo de StopLevel?
Siempre es necesario comprobar el nivel de precio SL/TP/Entry de las órdenes pendientes para ver el margen mínimo en los casos cuando se trabaja con órdenes de ajuste muy cerca del mercado.
Si trabaja con stops u órdenes pendientes en un modo razonable y alejado del mercado (decenas y centenares de puntos), puede omitir dicha comprobación.
Siempre debe comprobar el nivel de SL/TP/Precio de entrada de las órdenes pendientes para una sangría mínima en los casos en los que trabaje con órdenes de ajuste muy cercanas al mercado.
Aclarando la pregunta 5.1.
Hago que el Asesor Experto calcule tres niveles para cada orden pendiente: Precio de entrada/SL/TP.
Dado que no se sabe de antemano lo cerca/lejos que se situará el nivel de Precio de entrada respecto al precio actual de mercado, comprobar que el nivel de Precio de entrada cumple con el margen mínimo no plantea ninguna duda.
Pero, ¿con respecto a qué nivel debemos comprobar los dos niveles SL/TP restantes? Resulta un tanto ilógico comprobar los niveles SL/TP en relación con el precio de mercado actual, ya que el nivel de precio de Entrada puede estar situado bastante lejos del precio de mercado actual, y dicha comprobación pierde toda relevancia. Es por eso que he proporcionado para la comprobación de la condición |Precio de entrada-TP(SL)|>SYMBOL_TRADE_STOPS_LEVEL en el Asesor de Expertos. En general, el Asesor Experto funciona bien con tales condiciones, pero cuando empecé a optimizar el código del EA, me pregunté si tal comprobación es necesaria desde el punto de vista del procesamiento de órdenes pendientes por el servidor. El código del Asesor Experto no está sobrecargado con la comprobación de esta condición (la estrategia del Asesor Experto en sí no requiere dicha comprobación).
En otras palabras, ¿debería la orden pendiente con tres niveles de Entry price/SL/TP comprobar siempre los niveles SL/TP para el margen mínimo? Y si es así, ¿debería comprobarse el margen mínimo en relación a qué nivel (precio)?
Algo falta para poder editar mi post. Así que voy a añadir aquí:
= Para cada orden pendiente, el Asesor Experto calcula tres niveles de forma independiente: Precio de entrada/SL/TP. El propósito de "establecer una orden pendiente más cerca del mercado" no se persigue. =
SL y TP en el nivel pendiente se evalúan desde el precio de Entrada para que no estén a menos de un nivel mínimo de distancia de él.
Funciona de la misma manera en MT4.
SL y TP en el nivel pendiente se evalúan desde el precio de Entrada para que estén al menos a un nivel mínimo de distancia de él.
Funciona de la misma manera en MT4.
OK, ahora entiendo todo. Entonces, no puedo hacer el código del EA más fácil; inicialmente todo se hizo de acuerdo con el artículo, es decir, correctamente.
Y no estoy familiarizado con MT4, por lo que tales preguntas son "de un maniquí". ¡Gracias!
...Compruebe siempre el nivel de SL/TP/Precio de entrada de las órdenes pendientes para una sangría mínima en los casos en los que se trabaje con la fijación de órdenes muy cerca del mercado.
...SL y TP en el nivel pendiente se estiman desde el precio de Entrada para que no estén a menos de un nivel mínimo de distancia de él.
Pregunta 6: Está claro con la comprobación de la sangría mínima al colocar órdenes pendientes. Ahora tenemos una pregunta sobre las peculiaridades de la comprobación del margen mínimo al modificar el TP/SL de una posición abierta.
Situación: una posición abierta tiene un TP fijo y un SL "pull-up", que se aproxima al TP fijo a medida que el precio se mueve en una dirección favorable. Por analogía con el establecimiento de una orden pendiente, cada vez que el Asesor Experto envía una orden para modificar el TP/SL de una posición abierta, comprueba la sangría mínima con respecto a los niveles TP y SL.
Pero en la descripción de la función PositionModify de la clase CTrade se especifica que el parámetro tp es "El nuevo precio al que se activará el Take Profit (o, si el cambio no es necesario, el valor anterior)".
En consecuencia, la pregunta es: si no es necesario un cambio del nivel de TP previamente establecido, al enviar una orden para modificar el TP/SL de una posición abierta, ¿es necesario comprobar el margen mínimo de este nivel de TP a partir del precio actual (real)? ¿O en tal situación es suficiente comprobar el margen mínimo sólo en relación con el SL que se modifica?
En otras palabras, cuando se envía una orden para modificar el TP/SL de una posición abierta, ¿es posible no comprobar el margen mínimo en relación con el TP, si este nivel de TP ya se ha fijado anteriormente y no está sujeto a cambios? Y en la orden de modificación sólo especificar el valor de TP anterior?
Después de descargar el archivo "indicator_TP_en.mql5", cámbiale el nombre a "indicator_TP.mql5", por favor.