Ver este tema, probablemente un poco confuso, pero usted puede encontrar la idea.
El sistema de comercio MT5 es muy diferente de MT4, por lo que tiene que cambiar su forma de pensar.
- www.mql5.com
Estoy escribiendo un EA, modificando mi EA escrito para MT4. Abro una orden usando OrderSend.
Simplemente si necesito entender (perhasps del Historial), si la orden enviada (por cierto.... tengo que comprobar Orden, Operaciones o Posición?), se ha cerrado porque ha llegado al StopLoss.
He comprobado en los foros, pero no he encontrado lo que necesito....
ORDER_PRICE_CURRENT | da sólo el precio actual del símbolo de la orden |
que no se puede comparar conORDER_SL. Supongo que ORDER_PRICE_CURRENT es sólo el precio actual del símbolo y no el precio de cierre de la orden .
Gracias a todos por su apoyo.
¿Es esto?
//-------------------------------- ES CIERRE POR SL ---------------------------------------------- bool esCierreSL(int ind, int modoInd= SELECT_BY_TICKET, int modoHist= MODE_TRADES) { bool resp= OrderSelect(ind, modoInd, modoHist)? (StringFind(OrderComment(), "[sl]", 0)>-1): false; return(resp); }
¿Es esto?
La pregunta es sobre mql5, tu código es mql4.
Elcomentario de la orden no es una forma fiable de codificar.
La pregunta es sobre mql5, tu código es mql4.
Elcomentario de la orden no es una forma fiable de codificar.
Lo siento por necro, pero esto es bastante interesante en mi opinión.
Estoy haciendo la transición de mql4 a mql5, y me parece que los cambios en los sistemas de comercio y la historia bastante difícil.
Para saber si una operación en el libro de historia se cerró por stop-loss, take-profit, o de otra manera:
- en MT4 se podía comparar OrderStopLoss(), OrderTakeProfit() y OrderClosePrice(), o simplemente comprobar OrderComment().
- en MT5 la única forma posible me parece comprobar el comentario de una operación: HistoryDealGetString(tk, DEAL_COMMENT)
Es interesante, pero si lo he entendido bien, se trata de identificar los cambios en las operaciones basándose en el manejo de eventos, sobre la marcha.
Así que debe haber un programa escuchando (como un asesor experto que se ejecuta en un gráfico) o de lo contrario no se detecta nada.
En mi opinión, la detección de la razón del cierre de la operación debe hacerse en el libro de operaciones del historial porque es (o debería ser) la forma más segura de saber lo que ha pasado, ya que está escrito en algún sitio y no se coge del aire.
¿Es mi análisis erróneo? ¿Qué opinas?
- www.mql5.com
Marco: Tanto MT4 como MT5 cuando una orden se cierra por stop-loss o take-profit escriben [precio SL] o [precio TP] en el comentario (de diferentes maneras.. pero aun así). | No, no lo hacen. Eso lo hace tu broker. No es una buena idea, los corredores pueden cambiar los comentarios, incluso la sustitución completa. |
No, no lo hacen. Ese es su corredor. |
Ok, tanto los brokers de MT4 como los de MT5 ponen esa cadena en el comentario.. al menos los pocos que he probado.
Y estoy de acuerdo, esto no es una buena idea, ya que el comentario puede estar sujeto a cambios por la mano del broker.
Pero no veo como se podría hacer de otra manera, ya que no encuentro otros rastros en el libro de historial de operaciones.
¿Hay una mejor manera de lograr este objetivo?
Me puse en contacto con el servicio de atención al cliente hace 2 años (en relación con MT4).
y me respondieron
Así que lo hace el sistema, no el broker. Sin embargo, no es útil que el corredor pueda cambiarlo.
Eso sí, no he notado ninguna ocasión en la que el broker haya cambiado el comentario de la orden.
Normalmente, en mi código, es más importante saber si una operación se ha cerrado con beneficios o con pérdidas. Cuando se utiliza un trailing stop una operación puede golpear el SL, pero todavía estar en beneficio.
Me puse en contacto con el servicio de atención al cliente hace 2 años (en relación con MT4).
y me respondieron
así que lo hace el sistema, no el broker. Sin embargo, no es útil si el corredor puede entonces cambiarlo.
Eso sí, no he notado ninguna ocasión en la que el broker haya cambiado el comentario de la orden.
Normalmente, en mi código, es más importante saber si una operación se ha cerrado con beneficios o con pérdidas. Cuando se utiliza un trailing stop una operación puede golpear el SL, pero todavía estar en beneficio.
Gracias Keith, eso es lo que he esperado, ya que no puedo encontrar una mejor solución.
Creo que ambos carteles están convirtiendo MQL4 en MQL5
De todos modos, sólo compare el precio de cierre con el precio de stoploss.
Nota: En una cuenta real (especialmente ECN), probablemente el precio de activación tiene una brecha entre el precio de stoploss preestablecido, así que use "<=" o ">=".
De todos modos, sólo compare el precio de cierre con el precio de stoploss.
Nota: En una cuenta real (especialmente ECN), probablemente el precio de activación tiene una brecha entre el precio de stoploss preestablecido, así que use "<=" o ">=".
No puede comparar el precio de cierre con el precio de stop loss. El deslizamiento significa que podría cerrar más alto o más bajo que el stop loss.
Así que "<=" o ">=" no es útil.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Estoy escribiendo un EA, modificando mi EA escrito para MT4. Abro una orden usando OrderSend.
Simplemente si necesito entender (perhasps del Historial), si la orden enviada (por cierto.... tengo que comprobar Orden, Operaciones o Posición?), se ha cerrado porque ha alcanzado el StopLoss.
He mirado en foros, pero no he encontrado lo que necesito....
ORDER_PRICE_CURRENT
da sólo el precio actual del símbolo de la orden
que no se puede comparar conORDER_SL. Supongo que ORDER_PRICE_CURRENT es sólo el precio actual del símbolo y no el precio de cierre de la orden .
Gracias a todos por su apoyo.
EDITAR :
Este tema es ahora en su mayoría obsoletos debido a las nuevas posibilidades ofrecidas por MT5 desde build 1640.
Ver los últimos mensajes del tema para algunos ejemplos.