Como obter o 1º negócio do dia?

 

Quem puder colaborar com um exemplo vai ser muito útil.

Vi que outros colegas estão com a mesma dúvida.

 
thecarllos:

Quem puder colaborar com um exemplo vai ser muito útil.

Vi que outros colegas estão com a mesma dúvida.

Você se refere a pegar as informações da primeira negociação do dia?

 
Thiago Duarte:

Você se refere a pegar as informações da primeira negociação do dia?

   Olá, como vai? 

   Vou contribuir na sua causa, vamos por passos?

   Vou construir uma função do tipo string que retorna o primeiro negócio do dia

//Inicialização da função:

string sPrimeiroNegocioDia(){

    
     //Primeiramente vamos criar as variáveis e definir o intervalo para acesso ao histórico 

      datetime end=TimeCurrent();                  
      datetime start=end-PeriodSeconds(PERIOD_D1);

      string sInformacoes; //Inicializamos uma variável de apoio que guardará as informações

      if (HistorySelect(start,end))
 
      for (int i = HistoryDealsTotal() - 1; i >= 0; i--)  //Giramos as negociações num bloco FOR
       {
         const ulong Ticket = HistoryDealGetTicket(i);
         if(i == 0){       //Filtramos apenas o primeiro registro de negociação no histórico
          
           sInformacoes = "| Primeira Negociação: "+ HistoryDealGetInteger(Ticket, DEAL_TICKET) +  //Carregamos a variável de apoio com as informações 
                          "  Simbolo: "+ HistoryDealGetString(Ticket, DEAL_SYMBOL) +
                          "  Resultado: " HistoryDealGetDouble(Ticket, DEAL_PROFIT) + " | ";

          }  
         }
  
       return(sInformacoes); //Retorno da variável com as informações
 
}

            

               Existem outras possibilidades de se fazer, acredito que essa seja a mais simples.

               

               Nelson Ferreira.

 

Vc quer saber o primeiro negócio feito na sua conta ou o primeiro negócio do pregão?

O código do Nelson acima vai te retornar o primeiro negócio feito na sua conta. É isso mesmo que vc quer?

Se quiser o primeiro negócio do pregão vc pode usar a função CopyTicks():

MqlTick primeiroTick[];
int nTicks = CopyTicks(Symbol(),primeiroTick,COPY_TICKS_TRADE,1000*86400*(TimeCurrent()/86400),1);

// se nTicks == 1, as informações do primeiro tick (horário, preço, volume, etc.) estarão armazenadas em primeiroTick[0], caso contrário é porque houve algum erro

Se vc estiver operando bolsa de valores (e não Forex), vale lembrar que, nos contratos futuros e ações mais líquidas, o dia geralmente começa com o leilão de abertura, ao fim do qual geralmente são fechados centenas de negócios de uma vez só, no mesmo milésimo de segundo. Por isso não sei se faz sentido vc querer apenas o primeiro dentre os negócios fechados no leilão de abertura, a menos que o seu interesse seja apenas o preço e/ou a hora (que serão os mesmos para todos os negócios fechados no leilão de abertura, então nesse caso basta olhar o primeiro mesmo).

Razão: