RECALCULO DO LUCRO - AJUDA!

 

Meu EA não está recalculando o lucro, o robô deveria seguir operando até que o lucro liquido atingisse a meta, depois que ele atingisse a meta, ele deveria encerrar todas as operações, recalcular a meta, e voltar a operar até que o lucro liquido atingisse novamente a nova meta. porém ele não está fazendo isso... Alguém tem alguma dica de como eu poderia fazer isso???


Segue o código: 

void fechar_posicoes()
  {
   MqlDateTime Time;
   TimeToStruct(TimeCurrent(),Time);
   double Lucro = AccountInfoDouble(ACCOUNT_PROFIT);
   ulong ticket = 0;                                                 // mostra o ticket da operação 
   double flutuante = AccountInfoDouble(ACCOUNT_EQUITY);             // marca o saldo flutuante da conta
   double conta = AccountInfoDouble(ACCOUNT_BALANCE);
   double LucroDomes = lucro_mes();
   double porcentagem = meta/100;
   double alvo = (conta - LucroDomes) * porcentagem;
   double saldo_inicio = conta - LucroDomes;                         // Saldo inicial em conta
   double x = (alvo * 25) / 1000;                                    // Calcula a meta liquida a ser atingida (essa meta deve mudar se for atingido o lucro liquido)
   double x2 = (alvo * 25) / 1000;                                   // calculo fixo da porcentagem que vai aumentar, caso o lucro atinja a meta
   lucro_liquido[0] = x;                                             // Array que guarda o valor do lucro a ser batido
 
   if(Time.day >=0 && Time.hour == 0)                                // Se for o primeiro dia do mês
    { lucro_liquido[0] = x; }                                        // o alvo é igual a x 
   
   if(flutuante > (saldo_inicio + lucro_liquido[0]) + 10)            // Se o saldo flutuante >= ao saldo inicial + lucro a ser batido + 20, >>> então     
      {
        for(int i = PositionsTotal()-1; i>=0;i--)                    // Varre todas as posições abertas
        {
          ticket = PositionGetTicket(i);     
          trade.PositionClose(ticket);                               // Fecha todas as posições abertas se lucro for positivo
        }
        lucro_liquido[0] = lucro_liquido[0] + x2;                    // Lucro a ser batido[0] vai ser igual ao lucro liquido anterior + x2
      }
                
  }
 
DanielSilva:

Meu EA não está recalculando o lucro, o robô deveria seguir operando até que o lucro liquido atingisse a meta, depois que ele atingisse a meta, ele deveria encerrar todas as operações, recalcular a meta, e voltar a operar até que o lucro liquido atingisse novamente a nova meta. porém ele não está fazendo isso... Alguém tem alguma dica de como eu poderia fazer isso???


Segue o código: 

Logo depois das variaveis tem um lucro_liquido[0]=x; como tu sempre atualiza a variavel nao deixando ela parada, pode ser por isso que nunca entra no seu codigo que fecha as posicoes.

Outra possibilidade eh que no testador de estrategia (se for no testador), pode ser que a moeda nao esteja em BRL.

Razão: