Encerrar EA por valor monetário

 
Estou tentando encerrar um EA quando atingi um valor máximo e mínimo(por exemplo, encerrar se atingir +R$50 ou -R$100). Tentei utilizando o PositionGetDougle(POSITION_PROFIT) porém não está batendo, não sei se está relacionado ao fato de o EA realizar várias operações e alterar várias vezes o médio das operações.

Como posso conseguir realizar essa operação?
 
Marcel Cardoso:
Estou tentando encerrar um EA quando atingi um valor máximo e mínimo(por exemplo, encerrar se atingir +R$50 ou -R$100). Tentei utilizando o PositionGetDougle(POSITION_PROFIT) porém não está batendo, não sei se está relacionado ao fato de o EA realizar várias operações e alterar várias vezes o médio das operações.

Como posso conseguir realizar essa operação?

Voce tem um problema conceitual, se voce quer bloquear o EA nesses ganhos/prejuizos. Voce tem que olhar o histórico do periodo, além do valor atual que é o que o PositionGetDouble() se refere. Lembre-se que voce se so fizer o teste por PositionGetDouble() quando a operação encerrar seja por perda ou por ganho, o "bloqueio" sumiria.

 
Marcel Cardoso:
Estou tentando encerrar um EA quando atingi um valor máximo e mínimo(por exemplo, encerrar se atingir +R$50 ou -R$100). Tentei utilizando o PositionGetDougle(POSITION_PROFIT) porém não está batendo, não sei se está relacionado ao fato de o EA realizar várias operações e alterar várias vezes o médio das operações.

Como posso conseguir realizar essa operação?

Poderia enviar o código?

 
Rodrigo De Lima Souza #:

Poderia enviar o código?

Eu consegui assim: 

double lucro_realizado = PositionGetDouble(POSITION_PROFIT);
    double lucro_corrente = Results(dia, MN_estrutura);
    double lucro_final = NormalizeDouble((lucro_corrente+lucro_realizado), 2);
    if(lucro_final >= meta) Fechar();
double Results(datetime time_start, ulong MN_EA){
   double result = 0.0;
   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){
                     result += HistoryDealGetDouble(ticket, DEAL_PROFIT);
            }
         }
         else{
            Print("Error getting deal ticket in history ...");
            result = EMPTY_VALUE;
            break;
         }
      }
   }
   else{
      Print("Error getting operations history ...");
      result = EMPTY_VALUE;
   }

   return(result);
   }