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
¿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 .