Cierres parciales de ordenesHola.
Estoy realizando un EA y cuando quiero cerrar la orden con el 75% de mi posición me lo hace perfectamente, pero el 25% restante el EA no lo reconoce, pues cuando se cumplen las condiciones de cierre la orden que ha sido creada no la cierra, si he conseguido el EA me devuelva el valores nuevos del lote y del ticket en un "Comment", pero como ya he comentado no la cierra. Gracias Pepito454
Re: Cierres parciales de ordenesHas comprobado que mensaje de error devuelve la mt4?... si la funcion OrderClose no se realiza satisfacoriamente tendras que comprobar cual es el motivo, que nro de error se ha producido... es lo unico que se me ocurre para trazar donde esta el fallo
Re: Cierres parciales de ordenesLo cierto es que no le he colocado un "GetLasError" pero en el diario tampoco me dice que tenga algun error, simplemente comienzo con 0,17 lotes, me cierra 0,12 y en resultados veocomo me aparece la nueva orden con su nuevo numero de ticket y con 0,05 lotes y en el commentveo como también aparece y cuando se cumple la condición de cierre en el comment vuelve a 0,12 lotes y en resultados sigue la o rden de 0,05 lotes.
Re: Cierres parciales de ordenesHola Pepito454, probablemente se deba a que no estás redondeando el cierre parcial correctamente. Por ejemplo, si tienes abierto 1 lote y cierras un tercio, el código intentará cerrar 0.33333... lotes, por lo que antes de ordenar el cierre parcial deberás redondear a dos decimales el tamaño de posición usando la función NormalizeDouble (http://docs.mql4.com/convert/normalizedouble) para que lo haga correctamente. Coméntanos a ver si fuera por esto y si lo has resuelto.
Saludos, FXWizard
Re: Cierres parciales de ordenesPerdonad por la confusión que yo mismo he creado, es que las vacaciones me han traicionado un poco, estaba fuera de casa y no tenia los medios mas adecuados, lo siento, la verdad es que si me da un error:
- Unknown ticket 1 for OrderModify function. - Error en OrderModify. Codigo del error=4108. Todo esto lo realizo en modo test. Se produce cuando cierra el 75% de la orden y como comentaba anteriormente en "Resultados" si que se ve que crea la nueva orden con el ticket = 2, y los lotes en 0,05 que es 25% restante, pero claro, según el error que me indica al pasar el ticket al valor 2 el programa sigue intentando leer el valor 1 como si tuviera que cambiar la secuencia. //Cierro el 75% de la orden if((NormalizeDouble((Bid<=takeprofit),5)))//el precio a alcanzado al takeprofit { OrdCloParc=OrderClose(ticket,(lote*0.75),Ask,3,clrRed);//Cerramos el 75% del lote bool res=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrPink);//El stoploss lo llevamos hasta el precio de entrada de la orden ObjectDelete("B"); OrdCloParc=true; } if(OrdCloParc==true) { for(i=0; i<OrdersTotal(); i++) { OrdSel=OrderSelect(i,SELECT_BY_POS); if((OrdSel==true) && (OrderSymbol()==Symbol()) && (OrderMagicNumber()==MagicNumber) && (OrderTicket()== i)) { OrdenSimboloBaj=1; if(cierreBajista==1) OrdClo=OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); } } Coloco un "Comment" donde le pregunto por "OrdCloParc" y "OrdenSimboloBaj", "OrdCloParc" me cambia a true pero "OrdenSimboloBaj" no. Os pido de nuevo perdón por mi torpeza y el tiempo que os he echo perder en vano. Un saludo.
Re: Cierres parciales de ordenesLo que te decía en el mensaje anterior, donde pones Lote*0.75, trata de redondearlo a dos decimales antes de meterlo en el OrderClose. Por ejemplo:
LotesCierreParcial =NormalizeDouble((0.75*Lotes), 2); OrdCloParc=OrderClose(ticket,LotesCierreParcial,Ask,3,clrRed);//Cerramos el 75% del lote Por cierto, me equivoqué con la función es NormalizeDouble, actualizo el post anterior (se me cruzaron lenguajes de programación ). Saludos, FXWizard
Re: Cierres parciales de ordenesHe echo lo que me has escrito y sigue haciendo lo mismo.
La cuestión es que me cierra la orden y en el siguiente Tick el ya me marca el error: 2015.08.13 12:33:39.002 2015.04.08 07:45 Mi Nube EURGBP,M15: Error en OrderModify cierre parcial de orden. Codigo del error=4108 2015.08.13 12:33:39.002 2015.04.08 07:45 Mi Nube EURGBP,M15: OrderModify error 4108 2015.08.13 12:33:39.002 2015.04.08 07:45 Mi Nube EURGBP,M15: unknown ticket 1 for OrderModify function 2015.08.13 12:33:39.002 2015.04.08 07:45 Mi Nube EURGBP,M15: close #1 sell 0.13 EURGBP at 0.72926 sl: 0.73526 at price 0.72679 2015.08.13 12:31:52.471 2015.04.07 04:30 Mi Nube EURGBP,M15: open #1 sell 0.17 EURGBP at 0.72926 sl: 0.73526 ok 2015.08.13 12:31:35.264 Mi Nube inputs: SL=60; TP=26; Capital=10000; CapArriesgar=1; Y en Resultados se puede ver como aparecen la orden parcial cerrada y la nueva orden creada con el 25% estante: Num Fecha Tipo Orden Volumen Precio SLoss TProfit Beneficios 1 2015.04.07 04:30 sell 1 0.17 0.72926 0.73526 0.00000 0.00 2 2015.04.08 07:45 close 1 0.13 0.72679 0.73526 0.00000 50.16 3 2015.04.08 07:45 sell 2 0.04 0.72926 0.73526 0.00000 0.00 E incluso la variable "i" que es la que coloco para contar las ordenes activas cuando se cumple la condicion de cierre se pone a "0" y no cierra la última orden debido al error.
Re: Cierres parciales de ordenesPerdon, el error verdadero es este, el anterior me sale tambien al querer modificar el stoploss para llevarlo a "Breakeven"
2015.08.13 13:17:15.562 2015.04.08 08:00 Mi Nube EURGBP,M15: OrderClose error 4108 2015.08.13 13:17:15.562 2015.04.08 08:00 Mi Nube EURGBP,M15: unknown ticket 1 for OrderClose function 2015.08.13 13:17:15.431 2015.04.08 07:45 Mi Nube EURGBP,M15: close #1 sell 0.12 EURGBP at 0.72926 sl: 0.73526 at price 0.72677 2015.08.13 13:16:38.852 2015.04.07 04:30 Mi Nube EURGBP,M15: open #1 sell 0.17 EURGBP at 0.72926 sl: 0.73526 ok 2015.08.13 13:16:32.923 Mi Nube inputs: SL=60; TP=26; Capital=10000; CapArriesgar=1; 2015.08.13 13:11:04.209 Expert Mi Nube EURGBP,M15: removed
11 mensajes
• Página 1 de 2 • 1, 2
|
|
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados