Cierre de medios lotes. - página 6

 
¿Te refieres a si pongo "if(FirstTarget_Buy == Bid)"? (Obviamente no es eso ya que no funciona).
 
DomGilberto:
¿Te refieres a si pongo "if(FirstTarget_Buy == Bid)"? (Obviamente no es eso porque no funciona).

O algo así como.......

if(Bid >= FirstTarget_Buy + (Point / 2) )
   {
   //  close the Order
   }

. . . teniendo en cuenta los problemas de comparación de dobles ( ¿Puede el precio != precio ? )

También hay que pensar en el spread y si tu objetivo es inclusivo o exclusivo del spread.

 

(suspiro) ok - ¡Gracias por tu ayuda Raptor! Esto se está volviendo frustrante. Te juro que no tiene por qué ser tan lento... Esa declaración If de arriba, no funcionará.

Sinceramente, no sé qué hacer...

Cerrará varias mitades (la mitad de la mitad de la mitad, etc.) si no incluyo la sentencia "if" de arriba (en cuyo caso no pasa nada), y sólo pongo la orden de cierre en "Bid" - no puedo averiguar cómo sabe cuándo cerrar esta mitad...

Cualquier otra sugerencia será muy apreciada, ¡gracias por su ayuda!

 
DomGilberto:

(suspiro) ok - ¡Gracias por tu ayuda Raptor! Esto se está convirtiendo en frustrante. Te juro que no tiene que ser este tiempo que consume ... Esa declaración If de arriba, no funcionará.

Sinceramente, no sé qué hacer...

Cerrará varias mitades (la mitad de la mitad de la mitad, etc.) si no incluyo esa declaración "if" de arriba (en cuyo caso no pasa nada), y sólo pongo el orden de cierre en "Bid" - no puedo averiguar cómo está sabiendo cuándo cerrar esta mitad...

Si no se especifica una condición de precio que deba cumplirse entonces simplemente cerrará la mitad de la Orden en cuanto pueda, Bid es siempre Bid y es válido para cerrar una OP_BUY.

La sentencia if funcionará... si no averigua por qué, añade un Print() antes... y después.

Print("Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );

if(Bid >= FirstTarget_Buy + (Point / 2) )
   {
   Print("Bid >= FirstTarget_Buy - Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );

   //  close the Order
   }

No se preocupe, se vuelve más frustrante ... cuando usted tiene su código de trabajo como usted quiere y lo ejecuta en el probador de la estrategia y encontrar que es tan bueno como un lanzamiento de monedas

 
Bien, gracias. ¿Puedes también aclararme por qué a veces ejecuto el ST, luego lo detengo y no se imprime nada dentro del Diario...?

" Cuando tienes tu código funcionando como quieres y lo ejecutas en el Probador de Estrategias y descubres que es tan bueno como un lanzamiento de monedas

¡Sí, sólo puedo imaginar! En realidad he logrado escribir 6 páginas (no estoy seguro de cuántas líneas que es) aprox. de código - Estoy añadiendo en estas partes cruciales ... uno de los cuales es el cierre de 50% a 1:1 y se mueve a romper incluso ... PERO NOOOo el cierre del lote resulta ser contra intuitivo (en lo que a mí respecta)
 
DomGilberto:
Bien, gracias. ¿Puedes también aclararme por qué a veces ejecuto el ST, luego lo detengo y no se imprime nada dentro del Diario...?

¿Está mirando la pestaña correcta del diario? Hay dos... la que debería mirar en la ventana del Probador de Estrategias y la que debería mirar junto a la pestaña de expertos. La mejor manera es mirar el archivo de registro guardado en tester\logs

 
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Ticker Number = 10
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000
   if(OrderType()==OP_BUY && Bid >= FirstTarget_Buy +(Point / 2)){
                  Print("Bid >= FirstTarget_Buy - Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );
                  bool Close_Half_Order_Buy = OrderClose(OrderTicket(),half,Bid,3,CLR_NONE);
                  if(Close_Half_Order_Buy!=TRUE)Print("Close_Half_Order_Buy Last Error = ", GetLastError());
                  }
Eso es perfecto - El firsttarget_buy es exactamente correcto. El número de lotes para cerrar, es exactamente correcto. Todo esto se imprime en una orden pendiente - Sin embargo, no se cierra a ese precio, aunque lo tengo calculado correctamente? La estoy seleccionando cuando es una "OP_BUY"... Perdón por preguntar tanto, pero no entiendo por qué no funciona.
 
DomGilberto:
Eso es perfecto - El firsttarget_buy es exactamente correcto. El número de lotes a cerrar, es exactamente correcto. Todo esto se imprime en una orden pendiente - Sin embargo, no se cierra a ese precio, aunque lo tengo calculado correctamente? La estoy seleccionando cuando es una "OP_BUY"... Perdón por preguntar tanto, pero no entiendo por qué no funciona.

No has añadido la impresión antes del if( . . . .

Print("Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );   //  add this line too . . .

if(Bid >= FirstTarget_Buy + (Point / 2) )
   {
   Print("Bid >= FirstTarget_Buy - Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );

   //  close the Order
   }

. . sin ella cómo sabes que la Oferta era mayor o igual que FirstTarget_buy ? si no lo era entonces el if() no es verdadero y la Orden no está parcialmente cerrada . . y si todavía es una orden Pendiente entonces no es una OP_BUY.

 
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Current Bid: 1.35972 FirstTarget_Buy: 1.37931
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Ticker Number = 9
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000

Puedo ver cuando la Oferta es igual o mayor que "FirstTarget_buy"? Pruebo en un comercio que se ejecuta todo el camino a la recompensa 2:1 relación takeprofit objetivo... Así que sé que va 1:1 recompensa - Que es donde los lotes deben ser reducidos a la mitad ... Todas las funciones de impresión se imprimen en las órdenes pendientes (es decir, si hay una orden pendiente y detengo la prueba, todas las impresiones aparecen - sin embargo, si detengo la prueba después de que una de las órdenes pendientes se haya disparado, no hay nada impreso en términos de "Impresión", en el diario...)

No puedo creer que estoy colgado en esto - esto se está convirtiendo en el mayor desafío hasta ahora - sin embargo, siento que tengo otras cosas que son mucho más complejas ...

(actualización: Estoy asumiendo que necesito monitorear la oferta en una base de tic por tic para tirar el precio a través y en mi bucle "for"?

¿Para que la declaración "IF()" sea verdadera, la Oferta será eventualmente igual a mi "FirstTarget_buy"?

 
DomGilberto:

Puedo ver cuando la Oferta es igual o mayor que "FirstTarget_buy"? Pruebo en un comercio que se ejecuta todo el camino a la recompensa 2:1 relación takeprofit objetivo... Así que sé que va 1:1 recompensa - Que es donde los lotes deben ser reducidos a la mitad ... Todas las funciones de impresión se imprimen en las órdenes pendientes (es decir, si hay una orden pendiente y detengo la prueba, todas las impresiones aparecen - sin embargo, si detengo la prueba después de que una de las órdenes pendientes se haya disparado, no hay nada impreso en términos de "Impresión", en el diario...)

Bien, ahora estás haciendo progresos... sólo tienes que averiguar por qué una OP_BUY no está activando tu código que imprime todas las variables de la misma manera que una Orden pendiente... si quieres publicar ese código lo miraré.