Timer

 

 Bom dia,

Estou tendo um problema no meu código, preciso que sempre que conte 3 stops seguidos ele pare de operar por um tempo determinado.

int ContadorDeStops()
{ 
   datetime NotBefore = TimeCurrent();
   int Contador = 0; 
   HistorySelect(iTime(_Symbol, PERIOD_D1, 0),TimeCurrent());
   
   for (int i = 0; i < HistoryDealsTotal(); i++)
   {
      ulong TicketNumber = HistoryDealGetTicket(i);

      if(TicketNumber > 0)
      {
         long DealEntry = HistoryDealGetInteger(TicketNumber, DEAL_ENTRY);
         double OrderProfit = HistoryDealGetDouble(TicketNumber, DEAL_PROFIT);

         if(DealEntry == DEAL_ENTRY_OUT)
         {
            if(OrderProfit < 0)
            {
               Contador++;
            } 
            else if(OrderProfit > 0)
            {
               Contador = 0;
            }           
         } 
         if(Contador == perdasEmSequencia)
         {
            Contador = perdasEmSequencia + 1;
            NotBefore = TimeCurrent()+tempoBloqueio;
         } 
         //---------------------------------------------------------------- Erro         
         if(TimeCurrent() >= NotBefore && Contador == perdasEmSequencia +1)
         {
            Contador = 0;
         }           
      }
   }
   return Contador;
} 

 Esse é o código com problema, ele faz a contagem bem, mas quando deveria voltar pra 0, desbloqueando o robô, ele não volta, só quando o mercado abre no outro dia ele volta pra 0. Marquei no código a parte que pode estar o erro, acredito que está no timer

 

mas o que seu código não esta fazendo?

Não está contando?

Não está parando?

 
xandeqs:

 Bom dia,

Estou tendo um problema no meu código, preciso que sempre que conte 3 stops seguidos ele pare de operar por um tempo determinado.

 Esse é o código com problema, ele faz a contagem bem, mas quando deveria voltar pra 0, desbloqueando o robô, ele não volta, só quando o mercado abre no outro dia ele volta pra 0. Marquei no código a parte que pode estar o erro, acredito que está no timer

         {
            Contador = perdasEmSequencia + 1;
            NotBefore = TimeCurrent()+tempoBloqueio;
         } 

Você já imprimiu o conteúdo acima para ver o que tem dentro??

Razão: