Fechar o pedido automaticamente após um determinado período e/ou SL - página 4

 

Por favor, use o botão SRC para postar o código . . . .

 

Talvez você esteja tentando fechar um pedido duas vezes...

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; 
} 
}

Você só precisa de um destes . . . e usar . .

if (OrderType() <= OP_SELL) 

que cobre OP_SELL e OP_BUY leia isto: https://docs.mql4.com/constants/trading

 

Eu mudei o código desta maneira:

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;
              }              
          }
       }
    }

Agora eu preciso descobrir como eu deixo o código contar opensell e openbuy a 0 ao atingir o StopLoss ou TakeProfit.

 
nirvanamac:

Eu mudei o código desta maneira:

Agora eu preciso descobrir como eu deixo o código contar opensell e openbuy a 0 ao atingir o StopLoss ou 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--;
              }              
          }
       }
    }

Selecione diretamente no número mágico e o símbolo deste código será então escrito de uma maneira melhor

Se você usá-lo da maneira que você o fez, então você fechará todas as negociações abertas por mais tempo, então uma hora (também não a partir desta)

 
deVries:

Selecione diretamente no número mágico e o símbolo deste código será então escrito de uma maneira melhor

Se você usá-lo da maneira que você o fez, então você fechará todas as negociações abertas por mais tempo, então uma hora (também não a partir desta)


Olá deVries...já experimentei e vou verificar agora com TP e SL...muito obrigado...
 

Uau, agora parece bom :) não o desempenho, mas a EA com SL e TP

Razão: