El principal problema en mql5 (cuenta de cobertura) es conocer el precio del Stop Loss, cuando se cierra una posición, debido a la falta de historial de posiciones. Puedes utilizar HistorySelectByPosition() para encontrar tu Stop Loss inicial (Stop Loss de la orden inicial), pero si has modificado ese Stop Loss posteriormente, genera nuevas órdenes para hacerlo, sin el mismo POSITION_ID, y por tanto, no serán seleccionadas por la función HistorySelectByPosition(), por lo que se hace muy difícil saber el último Stop Loss que colocaste.
No sé si se puede considerar como un bug, pero si no, debería serlo.
El principal problema en mql5 (cuenta de cobertura) es conocer el precio del Stop Loss, cuando se cierra una posición, debido a la falta de historial de posiciones. Puedes usar HistorySelectByPosition() para encontrar tu Stop Loss inicial (Stop Loss de la orden inicial)...
No se puede o te he entendido mal.
El Stoploss actual no está en ninguna parte del historial.
El Stoploss no está en ninguna parte de la historia.
Puedes usar HistorySelectByPosition(), con tu POSITION_ID, y luego puedes encontrar la primera orden con ese POSITION_ID, y comprobar el Stop Loss de esta orden (HistoryOrderGetDouble(ticket, ORDER_SL). A mí me ha funcionado, pero .el problema es cuando modificas ese Stop Loss después.
Jose Francisco Casado Fernandez: Puedes usar HistorySelectByPosition(), con tu POSITION_ID, y luego puedes encontrar la primera orden con ese POSITION_ID, y comprobar el Stop Loss de esta orden (HistoryOrderGetDouble(ticket, ORDER_SL). A mí me ha funcionado, pero .el problema es cuando modificas ese Stop Loss después.
Jose Francisco Casado Fernandez: Puede utilizar HistorySelectByPosition(), con su POSITION_ID, y luego puede encontrar la primera orden con ese POSITION_ID, y comprobar el Stop Loss de esta orden (HistoryOrderGetDouble(ticket, ORDER_SL). A mí me ha funcionado, pero .el problema es cuando modificas ese Stop Loss después.
Y entonces,comprobarORDER_POSITION_IDigual aDEAL_POSITION_ID, entonces comprobarDEAL_ENTRY,siOUT, obtener HystoryDealGetDouble(ticket,DEAL_PRICE).
SiDEAL_PRICEes igual aHistoryOrderGetDouble(ticket,ORDER_SL),entoncessignifica quela ordenha sidocerradadebido al stop loss.
Ok, y sabes por qué si modificas el Stop Loss después, la nueva orden generada para hacerlo, no muestra el mismo POSITION_ID???. Sería la solución perfecta para este asunto. ¿Es un bug? Gracias.
Roberto Jacobs: Y entonces,comprueba queORDER_POSITION_IDes igual aDEAL_POSITION_ID, entonces compruebaDEAL_ENTRY,siOUT, obtiene HystoryDealGetDouble(ticket,DEAL_PRICE).
SiDEAL_PRICEes igual aHistoryOrderGetDouble(ticket,ORDER_SL),entoncessignifica quela ordenha sidocerradadebido al stop loss.
Esta es mi opinión.
Sí, es lo que decía. Lo hice así, y funcionó, pero si modificas el Stop Loss inicial, genera una nueva orden SIN el mismo POSITION_ID. No sé por qué. Creo que es un error. Saludos,.
No es necesario mirarel deslizamiento,porque la orden ha sido cerrada,y el precio de cierreestá enHystoryDealGetDouble(ticket,DEAL_PRICE). Si la orden no ha estado en elcierre,yustedhace una ordendecierre,entonces usted debe considerar la cantidad dedeslizamiento, de modo que norequoteserror.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
¿Podría responder sólo si sabe de lo que está hablando?
Este es un tema sobre MT5/mql5, eliminaré todos los mensajes irrelevantes.
No hay precio de stoploss en el historial de MT5.
El principal problema en mql5 (cuenta de cobertura) es conocer el precio del Stop Loss, cuando se cierra una posición, debido a la falta de historial de posiciones. Puedes utilizar HistorySelectByPosition() para encontrar tu Stop Loss inicial (Stop Loss de la orden inicial), pero si has modificado ese Stop Loss posteriormente, genera nuevas órdenes para hacerlo, sin el mismo POSITION_ID, y por tanto, no serán seleccionadas por la función HistorySelectByPosition(), por lo que se hace muy difícil saber el último Stop Loss que colocaste.
No sé si se puede considerar como un bug, pero si no, debería serlo.
Saludos.
El principal problema en mql5 (cuenta de cobertura) es conocer el precio del Stop Loss, cuando se cierra una posición, debido a la falta de historial de posiciones. Puedes usar HistorySelectByPosition() para encontrar tu Stop Loss inicial (Stop Loss de la orden inicial)...
No se puede o te he entendido mal.
El Stoploss actual no está en ninguna parte del historial.
No puedes o te he entendido mal.
El Stoploss no está en ninguna parte de la historia.
.el problema es cuando modificas ese Stop Loss después.
Puedes usar HistorySelectByPosition(), con tu POSITION_ID, y luego puedes encontrar la primera orden con ese POSITION_ID, y comprobar el Stop Loss de esta orden (HistoryOrderGetDouble(ticket, ORDER_SL). A mí me ha funcionado, pero
.el problema es cuando modificas ese Stop Loss después.
Ok entendido ahora, tienes razón.
Puede utilizar HistorySelectByPosition(), con su POSITION_ID, y luego puede encontrar la primera orden con ese POSITION_ID, y comprobar el Stop Loss de esta orden (HistoryOrderGetDouble(ticket, ORDER_SL). A mí me ha funcionado, pero
.el problema es cuando modificas ese Stop Loss después.
entonces comprobar DEAL_ENTRY, si OUT, obtener HystoryDealGetDouble(ticket,DEAL_PRICE).
Si DEAL_PRICE es igual a HistoryOrderGetDouble(ticket,ORDER_SL), entonces significa que la orden ha sido cerrada debido al stop loss.
Esta es mi opinión.
Ok entendido ahora, tienes razón.
Si DEAL_PRICE es igual a HistoryOrderGetDouble(ticket,ORDER_SL) , significa que la orden ha sido cerrada debido al stop loss.
Y entonces, comprueba que ORDER_POSITION_ID es igual a DEAL_POSITION_ID,
entonces comprueba DEAL_ENTRY, si OUT, obtiene HystoryDealGetDouble ( ticket ,DEAL_PRICE).
Si DEAL_PRICE es igual a HistoryOrderGetDouble(ticket,ORDER_SL), entonces significa que la orden ha sido cerrada debido al stop loss.
Esta es mi opinión.
¿Qué pasa con el deslizamiento?
No es necesario mirar el deslizamiento, porque la orden ha sido cerrada, y el precio de cierre está en HystoryDealGetDouble(ticket, DEAL_PRICE).
Si la orden no ha estado en el cierre, y usted hace una orden de cierre, entonces usted debe considerar la cantidad de deslizamiento, de modo que no requotes error .