¿Cómo puedo establecer el TP menos de 5 pips? - página 3

 
Hice la corrección para las órdenes de venta o compra, yo comercio sólo eurusd así que no hay problema con los símbolos. ¡No uso EA's por lo que todas las órdenes son colocadas manualmente! El problema es cómo diferenciar para cerrar las órdenes que tengo para scalping a las órdenes de larga duración
 
extern double CloseforBuy=1.4;
extern double CloseforSell=1.3;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()


{
if(OrderType()==OP_BUY)
{
if(Bid>CloseforBuy)
{
for(int a=OrdersTotal()-1;a>=0;a--)
if(OrderSelect(a,SELECT_BY_POS, MODE_TRADES) )
//if(OrderSymbol()==Symbol())
OrderClose(OrderTicket(),OrderLots( ),OrderClosePrice(),1000,White);
//----

}}
if(OrderType()==OP_SELL)
{
if(Ask<CloseforSell)
{
for(int b=OrdersTotal()-1;b>=0;b--)
if(OrderSelect(b,SELECT_BY_POS, MODE_TRADES) )
//if(OrderSymbol()==Symbol())
OrderClose(OrderTicket(),OrderLots( ),OrderClosePrice(),1000,White);
//----
}}

return(0);
}
 

No puede hacer esto. . .

if(OrderType()==OP_BUY)

. . hasta después de su OrderSelect() . . . lea la documentación de OrderType(), dice "Nota: el pedido debe ser seleccionado por la funciónOrderSelect() ".

Pruebe. . .

if(Bid>CloseforBuy)
   {
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());

   }
 
deVries:

puedes poner el tp a 25 pips y cerrar la operación entonces a 5 pips

Sí, pero si de repente los precios cambian más de 5 pips, no podrás cerrar la orden a tiempo. Es parte de los riesgos.

¡¡¡Un saludo y feliz trading!!!

 
RaptorUK:

No puede hacer esto. . .

. . hasta después de su OrderSelect() . . . lea la documentación de OrderType() , dice "Nota: el pedido debe ser seleccionado por la funciónOrderSelect() ".

Prueba. . .

¡Muchas gracias por tu ayuda he hecho la corrección! ¡¡¡Genial!!!

Tienes alguna propuesta para filtrar y cerrar una de las compras/ventas y no todas las órdenes. ¡Así será posible hacer scalping y mantener las órdenes de largo plazo!

¡¡¡Gracias por tu ayuda!!!

 
ats:

¡Muchas gracias por tu ayuda he hecho la corrección! ¡¡¡Genial!!!

¿Tienes alguna propuesta para filtrar y cerrar una de las compras/vendas y no todas las órdenes. ¡Así será posible hacer scalping y mantener las órdenes de largo plazo!

Probablemente pero eso lo determina tu estrategia . . que orden quieres cerrar y cual quieres dejar funcionando, cuando lo hayas determinado debería ser bastante sencillo codificarlo.
 

Determinar qué orden quiere cerrar es fácil. ¡Esa es la orden de scalping! ¡Digamos que la última orden!

 

La idea básica es: 1. 1. Tienes posiciones abiertas a largo plazo y quieres hacer scalping

2. Se establece una orden pendiente

3. Usted enciende el EA

4. El EA cierra sólo ESTA orden

5. Usted desactiva el EA

 
ats:

Determinar qué orden quiere cerrar es fácil. ¡Esa es la orden de scalping! ¡Digamos que la última orden!

La última orden colocada debe tener el mayor número de posición de la orden... puede comprobarlo con OrderOpenTime()
 
RaptorUK:
La última orden colocada debería tener el mayor número de posición de la orden... puedes comprobarlo con OrderOpenTime()

Buena idea. No había pensado en ello