Função para Contar ordens

 

Boa tarde Pessoal

Fiz esta função para Contar Ordens, porem por algum motivo ela não funciona.

int Qtde_Ordens2(int MAGICMA)
  {
   int Res = 0;
   datetime start = (datetime)(86400*(((ulong)TimeCurrent())/86400));
   if(HistorySelect(start,TimeCurrent()))
      for(int i = HistoryOrdersTotal() - 1; i >= 0; i--)
        {
         const ulong Ticket = HistoryOrderGetTicket(i);
         if((HistoryOrderGetInteger(Ticket, ORDER_MAGIC) == MAGICMA) && (HistoryOrderGetString(Ticket,ORDER_COMMENT) == MAGICMA))
           {
            Res = Res + 1;
           }
        }
   return(Res);
  }

Se alguem puder me ajudar, ficarei hgrato.


sds,


Nilson

 
NFONSECA:


Boa tarde.


Aqui funcionou: conta as ordens do histórico do dia atual.


Sugestões:


//--- Substituir isso:
datetime start = (datetime)(86400*(((ulong)TimeCurrent())/86400));

//--- Por isso:
datetime start = iTime(_Symbol, PERIOD_D1, 0);


... Se você salva o Magic Number também no Comentário da ordem, alterar a sua função:


//--- Substituir isso:
HistoryOrderGetString(Ticket,ORDER_COMMENT) == MAGICMA

//--- Por isso:
HistoryOrderGetString(Ticket,ORDER_COMMENT) == (string)MAGICMA
 
Existem OrdersTotal() que são para contar as orders que estão na pedra aguardando serem executadas e PositionsTotal() que mostram as posições em aberto
Razão: