EA saber se a ultima operação foi gain ou loss

 

Olá pessoal!


Gostaria de saber como faço para que o EA saiba que a ultima operação realizada foi gain ou loss? 
Gostaria de saber essa informação para adicionar uma funcionalidade no incremento no número de contratos.

Eu tentei utilizando o código abaixo, porém ele só faz a primeira vez, depois ele não sobrepõe a informação nas operações seguintes.

Obrigado.

string Ultima_Operacao(datetime time_start, ulong MN_EA)
  {
   int      result_sl      = 0;
   int      result_tp      = 0;
   string   ultima_op      = "";
   ulong    ticket;
   int      cnt;
   
   if(HistorySelect(time_start, TimeCurrent()))
     {
      for(cnt = HistoryDealsTotal() - 1; cnt >= 0; cnt--)
        {
         ticket = HistoryDealGetTicket(cnt);
         if(ticket != 0)
           {
            if(HistoryDealGetInteger(ticket, DEAL_MAGIC) == MN_EA)
              {
               if(HistoryDealGetDouble(ticket, DEAL_PROFIT) > 0)
                 ultima_op = "gain";
               if(HistoryDealGetDouble(ticket, DEAL_PROFIT) < 0)
                 ultima_op = "loss";  
              }
           }          
        }
      }

   return(ultima_op);
  }
 

Se o método é chamado um vez e tem o resultado, ele tem a fotografia daquele momento.

Numa próximo cenário, você precisa chamar novamente o método para ter uma nova fotografia, se mudou ou não.

Espero ter ajudado, senão conseguiu fazer... coloca parte do código onde você chama esse método Ultima_Operacao

 
Marcel Cardoso:

Olá pessoal!


Gostaria de saber como faço para que o EA saiba que a ultima operação realizada foi gain ou loss? 
Gostaria de saber essa informação para adicionar uma funcionalidade no incremento no número de contratos.

Eu tentei utilizando o código abaixo, porém ele só faz a primeira vez, depois ele não sobrepõe a informação nas operações seguintes.

Obrigado.

Então como o colega disse essa função pode fazer o que tu quer se estiver chamando ela corretamente, vamos dizer que voce sempre passa a data inicial do mês. Se voce fizer isso é esperado que vai só entregar a primeira operação do mês se foi gain ou loss. Se voce colocar a data inicial como o dia de hoje, vai te dizer que a primeira operação do dia foi gain ou loss. Até aqui acredito que tu já deve ter percebido o que precisaria ser feito para ter a operação mais recente de ganho ou loss.

 Há diversas formas de resolver, alterando o FOR, colocando um BREAK quando for setado o ultima_op e etc. Entretanto, todas vão depender do tempo de entrada para analise, se colocar o dia de hoje tu teria interesse as 15h saber que as 10h da manha encerrou-se uma negociação e ela teve determinado resultado? Acredito que pela quantidade de tempo passado deixe de ser interessante não? E se for swing trade, teria interesse em saber que há duas semanas atras foi ganho ou perda? Tudo vai depender da modelagem que tu quer ter.
Razão: