Cierre de medios lotes. - página 14

 
Gran consejo, gracias. Definitivamente voy a tratar de ir por esa ruta - No tengo un precio fijo de toma de beneficios en relación con un valor de pip (es decir, siempre 100 pips) Se hace sobre la base de donde el 60 EMA es = stop loss y TP fijo final es 1:2 (por lo que podría ser cualquier valor de pip en relación con la distancia 2x pip de la pérdida de la parada ...) Para mí es un poco más difícil hacerlo por eso...

Última pregunta, ¿es la normalización de los dobles de precios realmente tan crucial... No entiendo el propósito de ello...?
 

Sí puede ser un problema con los dobles, OrderTakeProfit() OrderStopLoss() OrderLots() especialmente si haces cálculos en ellos. Afectó a uno de mis EA's cuando estaba haciendo algo similar a tu cierre parcial de órdenes. Echa un vistazo a este hilo https://www.mql5.com/en/forum/141034

 
Correcto - Lo tengo funcionando perfectamente... El problema es que quiero alejarme de If(OrderOpenPrice() > OrderStoploss())" para filtrar una operación que se cierra continuamente al mismo precio...

He intentado estrujar mi cerebro pero no puedo conseguir la lógica para hacerlo a través del OrderTicket() en el "OP_BUY" tan pronto como se activa, y al número de OrderTicket() en la posición restante después de que la mitad se cierra?

Una vez que la OP_BUY se ha reducido a la mitad en OrderClose() la posición restante tiene un número de ticket diferente... ¿Puede alguien aclararme cómo comparo los dos para poder decirle a OrderClose() que se detenga después de que lo haya hecho una vez?
 
Por favor - Sé que he agotado este hilo, pero esto es lo último :)?

Lo tengo todo listo - Sólo que no entiendo la lógica en la comparación de lo que he escrito anteriormente.

¡Tengo la intención de hacer un hilo para ayudar a los demás después de haber completado esto - sería justo!
 
Cualquiera :(
 

Ya te dije como hacerlo, obtén el OrderOpenTime() del ticket que vas a cerrar parcialmente. Despues de cerrarlo parcialmente, haz OrderSelect() de nuevo, cualquier ticket que tenga ese mismo OrderOpenTime() es la parte restante del pedido cerrado parcialmente.

 

Ah, sí. Lo siento, debo haberme perdido eso la primera vez.

Me he sentado a pensar en ello y me cuesta entender la lógica. ¿Podría indicarme algo?

De momento lo tengo dentro de la sección "int Start()":

Obviamente tengo que quitar la parte "OrderOpenPrice() > OrderStopLoss()), pero ¿con qué lo sustituyo para que NO se llame continuamente a "CloseHalfOrder();"? No consigo descifrar la lógica (¡un poco lento hoy!) ¿Estoy comparando con la operación cerrada en el historial?

   if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
      {
      if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss())
         {
         CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }

      if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice())
         {
         CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }   
      
 
DomGilberto:

Ah, sí, lo siento, no lo vi la primera vez.

Me he sentado a pensar en ello y me cuesta entender la lógica. ¿Podría indicarme algo?

En este momento tengo esto dentro de la sección "int Start()":

Obviamente tengo que eliminar la parte "OrderOpenPrice() > OrderStopLoss()), pero ¿con qué la sustituyo para que NO se llame continuamente a "CloseHalfOrder();"? No consigo descifrar la lógica (¡un poco lento hoy!) ¿Estoy comparando con la operación cerrada en el historial?

En el punto que he marcado en tu código ¿qué Orden tienes seleccionada?

 if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
      {

      //  order currently selected is ??
 
      if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss())
         {
         CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }

      if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice())
         {
         CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }   
      

¿Es la orden correcta? Si es la orden correcta, ¿es por casualidad o por diseño?

 
Yo también pensé eso - Dice que necesito OrderSelect() antes de usar OrderType, pero funciona? Sólo tengo una orden abierta en un momento dado...

No se me ocurre cómo usar OrderOpenTime() a mi favor y evitar que se llame a CloseHalfOrder cada vez...
 
DomGilberto:
Yo también pensé eso - Dice que necesito OrderSelect() antes de usar OrderType, pero funciona? Sólo tengo una orden abierta en cualquier momento...

Si tienes el EA corriendo en dos símbolos, potencialmente tendrás dos órdenes abiertas a la vez... no puedes probar esto en el Probador de Estrategias, ¿qué orden será seleccionada entonces? la correcta o la incorrecta?
Razón de la queja: