MEU EA DEIXA O GRÁFICO LENTO

 

Fala galera.... toda vez que uso o código abaixo meu ea deixa o gráfico lento...não sei pq.


//VERIFICA SE JÁ ATINGIU A META
      bool trade_money = true;
      if(GAIN_DIARIO > 0 || LOSS_DIARIO > 0)
      {
         datetime end = TimeCurrent();
         datetime start = StringToTime("09:00");
         
         HistorySelect(start,end);
         
         int deals =HistoryDealsTotal();
         
         int returns = 0;
         double profit = 0;
         double loss = 0;
         
         for(int i=0; i<deals; i++)
         {
            ulong deal_ticket = HistoryDealGetTicket(i);
            if(deal_ticket>0)
            {
               string symbol             =HistoryDealGetString(deal_ticket,DEAL_SYMBOL);
               datetime time             =HistoryDealGetInteger(deal_ticket,DEAL_TIME);
               ulong order               =HistoryDealGetInteger(deal_ticket,DEAL_ORDER);
               long order_magic          =HistoryDealGetInteger(deal_ticket,DEAL_MAGIC);
               long pos_ID               =HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID);
               ENUM_DEAL_ENTRY entry_type=(ENUM_DEAL_ENTRY)HistoryDealGetInteger(deal_ticket,DEAL_ENTRY);
               
               if(order_magic == MagicNumber)
                  {
                     //printf("Magic number ok");
                  }
               if(entry_type == DEAL_ENTRY_OUT)
               {
                  returns++;
                  double results = HistoryDealGetDouble(deal_ticket,DEAL_PROFIT);
                  
                  if(results>0) profit+=results;
                     if(profit >= (GAIN_DIARIO+(loss*-1)))
                     {
                        texto="DESATIVADO. Meta atingida!!!";
                        trade_money = false;
                     }
                  if(results<0) loss+=results;
                     if((loss+profit) <= (LOSS_DIARIO*-1))
                     {
                        texto="DESATIVADO. Stop atingido!!!";
                        trade_money = false;
                     }
               }
            }
            else
            {
               PrintFormat("We couldn't select a deal, with the index %d. Error %d",
                           i,GetLastError());
            }
         }
      }
      //VERIFICA SE JÁ ATINGIU A META
 
northedan:

Fala galera.... toda vez que uso o código abaixo meu ea deixa o gráfico lento...não sei pq.


Sim, mas onde vc está executando esse código??

;)

 
Flavio Jarabeck:

Sim, mas onde vc está executando esse código??

;)

Isso mesmo...

essa rotina dentro do OnTick() a medida que as posições vão sendo encerradas mais lento o EA vai ficar, se for o caso, sugiro colocar dentro do OnTradeTransaction() ! 

 
Excelente adorei estatística estudos socioeconômicos a possibilidade de geografia e estatística que se escrevam sobre os quais o governo está em um projeto de origem ao ensino técnico e superior a possibilidade de geografia.
 
luzinete40:
Excelente adorei estatística estudos socioeconômicos a possibilidade de geografia e estatística que se escrevam sobre os quais o governo está em um projeto de origem ao ensino técnico e superior a possibilidade de geografia.

Isso só pode ser maluquice. Fora de contexto e texto desconexo. Você podia fazer o favor e se retirar da comunidade.

[ ]'s

 
Joscelino Celso de Oliveira:

Isso só pode ser maluquice. Fora de contexto e texto desconexo. Você podia fazer o favor e se retirar da comunidade.

[ ]'s

A esquizofrenia é uma benção....

 
Flavio Jarabeck:

Sim, mas onde vc está executando esse código??

;)

Está no evento OnTick().
 
Rogerio Giannetti Torres:

Isso mesmo...

essa rotina dentro do OnTick() a medida que as posições vão sendo encerradas mais lento o EA vai ficar, se for o caso, sugiro colocar dentro do OnTradeTransaction() ! 

Usaria isso e log após colocaria meu código?

void  OnTradeTransaction(
   const MqlTradeTransaction&    trans,        // estrutura das transações de negócios
   const MqlTradeRequest&        request,      // estrutura solicitada
   const MqlTradeResult&         result        // resultado da estrutura
   );
 
northedan:

Usaria isso e log após colocaria meu código?

Sim isso.   Veja o exemplo abaixo. 


void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
   if(trans.type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_entry        =0;
      string   deal_symbol       ="";
      long     deal_magic        =0;
      if(HistoryDealSelect(trans.deal))
        {
         deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         if(deal_symbol==cSymbol.Name() && deal_magic==MagicNumber && (ENUM_DEAL_ENTRY)deal_entry==DEAL_ENTRY_OUT)
           {
                ...
                (SEU CÓDIGO)
                ...
           }
        }
     }
  }
 
Rogerio Giannetti Torres:

Sim isso.   Veja o exemplo abaixo. 


Obg Rogério.
 
northedan:

Rogério agora tá uma bala. O problema agora é como faço pra zerar a variável resultado a cada novo dia?



#s3gt_translate_tooltip_mini { display: none !important; }

Minha sugestão: transforme "resultado" em variável global.

Cabe o teste mas acredito que funcione. Tenho variáveis parecidas em meu código.

[ ]'s

Razão: