Alguém saberia identificar o motivo?

 

Olá.

A função abaixo retorna todas as propriedades de forma correta (DEAL_VOLUMEDEAL_TIME... etc), com exceção da DEAL_PROFIT.

double GetDealProfit(int num,int way,bool isout)
{
   ulong ticket;
   ulong magic;
   string symbol;
   double DealProfit=0;
   
   if(HistorySelect(0,TimeCurrent()))
     {
      for(int i=HistoryDealsTotal()-1; i>=0; i--)
        {
         ticket=HistoryDealGetTicket(i);
         symbol=HistoryDealGetString(ticket,DEAL_SYMBOL);
         magic=HistoryDealGetInteger(ticket,DEAL_MAGIC);
               
         if(  ((isout && HistoryDealGetInteger(ticket,DEAL_ENTRY)==DEAL_ENTRY_OUT) || (!isout && HistoryDealGetInteger(ticket,DEAL_ENTRY)==DEAL_ENTRY_IN))  
         && ((way==1 && HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_BUY) || (way==-1 && HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_SELL))
         && symbol==Symbol() && magic==MagicNumber)
           {
             if (--num==0)
             {
               DealProfit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
               break;
            }
           }
        }
     }
   
   return(DealProfit);
        
}
 
Drake:

Olá.

A função abaixo retorna todas as propriedades de forma correta (DEAL_VOLUMEDEAL_TIME... etc), com exceção da DEAL_PROFIT.

Você está executando esta função imediatamente após ter saído de um Trade?
 
Flavio Jarabeck #:
Você está executando esta função imediatamente após ter saído de um Trade?

Olá Flavio.

Estou printando ela na OnTick.

Print(GetDealProfit(1,-1,false)); // Deveria retornar a DEAL_PROFIT do mais recente DEAL_TYPE_SELL / DEAL_ENTRY_IN

Contudo, segue retornando 0. Todas as demais propriedades, são printadas de forma correta por essa mesma função.

 
Drake #:

Olá Flavio.

Estou printando ela na OnTick.

Contudo, segue retornando 0. Todas as demais propriedades, são printadas de forma correta por essa mesma função.

No OnTick() é suicidio.

Rebobinando, o que você realmente quer obter?

 

Olá Drake,

o resultado de um trade parcial ou completo e DEAL_ENTRY_OUT, portanto DEAL_PROFIT é sempre zero para DEAL_ENTRY_IN.

 
Flavio Jarabeck #:

No OnTick() é suicidio.

Rebobinando, o que você realmente quer obter?

Peço desculpa de antemão pela possível ignorância, mas por qual razão seria suicídio?

Estou tentando obter por exemplo, o que escrevi no comentário ao lado do Print, na minha última mensagem.

DEAL_PROFIT do mais recente DEAL_TYPE_SELL / DEAL_ENTRY_IN
 
Drake #:

Peço desculpa de antemão pela possível ignorância, mas por qual razão seria suicídio?

Estou tentando obter por exemplo, o que escrevi no comentário ao lado do Print, na minha última mensagem.

Você está consultando o Histórico de Deals a cada OnTick()!!!
 
Rogerio Giannetti Torres #:

Olá Drake,

o resultado de um trade parcial ou completo e DEAL_ENTRY_OUT.

Olá Rogério.

Você identificou onde cometi o erro, muito obrigado.

 
Drake #:

Peço desculpa de antemão pela possível ignorância, mas por qual razão seria suicídio?

Estou tentando obter por exemplo, o que escrevi no comentário ao lado do Print, na minha última mensagem.

Em termos do seu EA, e informações úteis, por quê você precisa do último Deal?
 
Flavio Jarabeck #:
Você está consultando o Histórico de Deals a cada OnTick()!!!
Sim, a cada tick, somente a critério de teste.
 
Drake #:
Sim, a cada tick, somente a critério de teste.
ah, ok!