Chiudere automaticamente l'ordine dopo un determinato periodo e/o SL - pagina 4

 

Si prega di utilizzare il pulsante SRC per inviare il codice. . . .

 

Forse stai cercando di chiudere un ordine due volte . .

if (OrderType() == OP_BUY || OP_SELL) 
{
bool Closed = OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(), UseSlippage, Red); 
openbuy = 0;
opensell = 0;
}


if (OrderType() == OP_SELL) 
{
Closed = OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(), UseSlippage, Red); 
opensell = 0;
openbuy = 0; 
} 
}

Hai bisogno solo di uno di questi . . . e utilizzare . . .

if (OrderType() <= OP_SELL) 

che copre OP_SELL e OP_BUY leggi questo: https://docs.mql4.com/constants/trading

 

Ho cambiato il codice in questo modo:

for(int i = OrdersTotal() - 1; i >= 0; i--)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
       if((OrderOpenTime()+3600) < TimeCurrent())
          { 
           if (OrderType() == OP_BUY)          
              {
               bool Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);           
               openbuy = 0;
              }
           if (OrderType() == OP_SELL)          
              {
               Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);  
               opensell = 0;
              }              
          }
       }
    }

Ora ho bisogno di scoprire come lascio che il codice conti opensell e openbuy a 0 quando colpisce lo StopLoss o il TakeProfit

 
nirvanamac:

Ho cambiato il codice in questo modo:

Ora ho bisogno di scoprire come lascio che il codice conti opensell e openbuy a 0 quando colpisce lo StopLoss o il TakeProfit


opensell = 0;
openbuy =0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))   //==> select also on magicnumber and symbol
       {
       if(OrderMagicnumber()== magicnumber && OrderSymbol()== Symbol() && OrderType() == OP_BUY){openbuy++;}
       if(OrderMagicnumber()== magicnumber && OrderSymbol()== Symbol() && OrderType() == OP_SELL){opensell++;}
       if((OrderOpenTime()+3600) < TimeCurrent() && OrderMagicnumber()== magicnumber && OrderSymbol()== Symbol())
          { 
           if (OrderType() == OP_BUY)          
              {
               bool Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);           
               openbuy = openbuy-1;    //openbuy--;
              }
           if (OrderType() == OP_SELL)          
              {
               Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);  
               opensell = opensell-1;    //opensell--;
              }              
          }
       }
    }

Selezionando direttamente su magicnumber e symbol questo codice sarà poi scritto in modo migliore

Se lo usi come l'avevi fatto tu allora chiuderai tutti i trade aperti più lunghi di un'ora (anche non da questo)

 
deVries:

Selezionate direttamente su magicnumber e symbol questo codice sarà poi scritto in modo migliore

Se lo usate nel modo in cui l'avete fatto, allora chiuderete tutti i trade aperti che durano più di un'ora (anche non da questo)


Ciao deVries...l'ho provato e lo controllerò ora con TP e SL...grazie mille...
 

Wow ora sembra buono :) non la performance ma l'EA con SL e TP