Cierre de medios lotes. - página 5

 
DomGilberto:

Puse una orden pendiente "OP_BUYSTOP" pero tenía la impresión de que esto cambiaría cuando se activara a una "OP_BUY"?

Creía que el tipo de orden sería "OP_BUY" si se había activado.

Al fin y al cabo, sólo me interesa una vez que la orden se ha activado.

¿Por qué se confunden esos paréntesis? ¿Te refieres a dónde está el paréntesis izquierdo? Si es así, parece que es una cosa individual, ya que me han corregido en esto varias veces?

Los corchetes no son necesarios, por lo que el hecho de que estén ahí puede causar confusión a otros que intenten leer tu código (yo).


Si sólo tiene un BUYSTOP entonces su código no hará nada porque no es un OP_BUY. ...

DomGilberto:
Hmmm, todavía no quiere cerrar @ "Close_Half_Order" ? ¿Tampoco recibe ningún mensaje de error?

para que esto tenga sentido mientras la Orden esté pendiente...

¿Su orden tiene el número mágico correcto?

 
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Close_Half_Order Last Error = 4108
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: OrderClose error 4108
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: pending order #9 cannot be closed
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Ticker Number = 9
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
He eliminado la línea "if(OrderType()==OP_BUY)" - Esta es la nueva impresión dentro del diario después de la prueba? Ticket inválido... (¡perdón por hacer 101 preguntas sobre esto!)
 
DomGilberto:
He eliminado la línea "if(OrderType()==OP_BUY)" - Esta es la nueva impresión dentro del diario después de la prueba? Ticket inválido... (¡perdón por hacer 101 preguntas sobre esto!)

RaptorUK:

No se cierra una orden pendiente, ¿qué le dice el informe de errores?

2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: pending order #9 cannot be closed

No se puede cerrar una orden pendiente, se borran.

 
Pero no estoy tratando de cerrar una orden pendiente? Estoy tratando de cerrar la mitad de los lotes en un "OP_BUY" que no está pendiente...? Obviamente me estoy perdiendo algo aquí...
 
DomGilberto:
Pero no estoy tratando de cerrar una orden pendiente? Estoy tratando de cerrar la mitad de los lotes en una "OP_BUY" que no está pendiente...? Obviamente me estoy perdiendo algo aquí...
DomGilberto:

Puse una orden pendiente "OP_BUYSTOP" pero tenía la impresión de que ésta cambiaría cuando se activara a una "OP_BUY"?

Si tienes un OP_BUYSTOP tu código no hace nada, lo cual está bien. Cuando el OP_BUYSTOP se dispara se convierte en un OP_BUY y tu código debería cerrar la mitad de su tamaño de posición... siempre y cuando tenga el símbolo y el número mágico correctos, ¿lo hizo? Supongo que sí, de lo contrario el código no habría intentado cerrar la orden pendiente... ¿qué pasa con OpenOrdersThisPair(Symbol()) == 1?
 
Si elimino "OpenOrdersThisPair(Symbol()) == 1" del código, los mensajes son exactamente los mismos dentro del diario... Estoy desconcertado...
 
DomGilberto:
Si quito "OpenOrdersThisPair(Symbol()) == 1" del código, los mensajes son exactamente los mismos dentro del diario... Estoydesconcertado...

Es hora de añadir más sentencias Print(), comprueba todo lo que no hayas comprobado ya... sólo estás desconcertado porque no sabes por qué, averigua por qué y ya no estarás desconcertado.

Cuando haya averiguado por qué y tenga todas estas sentencias Print() que ya no quiere que se impriman en la pestaña Diario/Expertos, eche un vistazo a esto que le permitirá una buena manera de activar y desactivarlas: https: //www.mql5.com/en/forum/135168/page2

 

Ah, por cierto, no puedes hacer esto. . .

bool Close_Half_Order = OrderClose(OrderTicket(), half, FirstTarget_Buy, 3, CLR_NONE);

. . a no ser que FirstTarget_Buy resulte ser == Bid Para eliminar la posibilidad de que no lo sea sólo hay que usar Bid. Una Compra se cierra con una Venta, una Venta se ejecuta en Bid.

 
Ok, entonces si pongo "Bid" ahí, los lotes se están cerrando, pero no al precio correcto, y parece que se cierran varias mitades durante cualquier posición. (más hacia los 2/3 superiores del área del precio objetivo del 100%... no todos al mismo precio al que se están cerrando...)

¿Cómo se supone que debo cerrar la posición en "FirstTarget_Buy "?
 
DomGilberto:
Ok, entonces si pongo "Bid" ahí, los lotes están siendo cerrados, pero no al precio correcto, y parece cerrar varias mitades durante cualquier posición. (más hacia los 2/3 superiores del área del precio objetivo del 100%... no todos al mismo precio al que se están cerrando...)

¿Cómo se supone que debo cerrar la posición en "FirstTarget_Buy"?

No se puede hacer OrderClose() a cualquier precio que no sea Bid y Ask (Compra y Venta)... es así de simple, no se puede.

Lo que puedes hacer

abrir dos operaciones por la mitad de la posición cada una y dar a cada una un TP diferente

o

controlar el precio Bid/Ask y cuando haya alcanzado o superado el "FirstTarget_Buy " cerrar la mitad de la operación a Bid/Ask