Função para Profit do dia

 
double Profit()
  {
   double Res = 0;

   if(HistorySelect(TimeCurrent(),TimeCurrent()))
      for(int i = HistoryDealsTotal() - 1; i >= 0; i--)
        {
         const ulong Ticket = HistoryDealGetTicket(i);

         if((HistoryDealGetInteger(Ticket, DEAL_MAGIC) == Magic_n) && (HistoryDealGetString(Ticket, DEAL_SYMBOL) == Symbol()))
            Res += HistoryDealGetDouble(Ticket, DEAL_PROFIT);
        }

   return(Res);
  }

Boa noite pessoal, criei uma função para obter o Ganho/ Perda do dia, porem não estou conseguindo o resultado que preciso, usando o HistorySelect, usando Time Current to TimeCurrent nada retorna.

Ajudas serão bem vindas.


Sds,


Nilson

 
NFONSECA:

Boa noite pessoal, criei uma função para obter o Ganho/ Perda do dia, porem não estou conseguindo o resultado que preciso, usando o HistorySelect, usando Time Current to TimeCurrent nada retorna.

Ajudas serão bem vindas.


Sds,


Nilson

Você sabe qual é exatamente o retorno de
TimeCurrent()

?

 
Flavio Jarabeck:
Você sabe qual é exatamente o retorno de

?

Imagino que seja data corrente.

 

Prezado, nunca vai retornar nada porque vc está passando o mesmo horário inicial e final, ou seja, a duração do intervalo é zero.

Vc tem que passar a hora inicial e a hora final do intervalo que vc quer selecionar.

Se a sua intenção for pegar o histórico do início do dia atual até o momento atual, vc pode fazer assim:

datetime start = (datetime) (86400*(((ulong)TimeCurrent())/86400));
if(HistorySelect(time_start,TimeCurrent()))
 
Trader_Patinhas:

Prezado, nunca vai retornar nada porque vc está passando o mesmo horário inicial e final, ou seja, a duração do intervalo é zero.

Vc tem que passar a hora inicial e a hora final do intervalo que vc quer selecionar.

Se a sua intenção for pegar o histórico do início do dia atual até o momento atual, vc pode fazer assim:

Patinhas, quem sabe sabe!... eu já fiz de uma forma muito mais complicada, que deu certo... mas vou melhorar e refazer igual você apontou ai, muito mais simples :)

Olhe como eu estou fazendo até então só para pegar o dia vigente...

...
   string VTMonth;
   string VTDay;
   int VTType;
   if(horario_atual.mon<10)
      VTMonth="0"+horario_atual.mon;
   else
      VTMonth=horario_atual.mon;
   if(horario_atual.day<10)
      VTDay="0"+horario_atual.day;
   else
      VTDay=horario_atual.day;

   string VTDt=horario_atual.year+"."+VTMonth+"."+VTDay;
   HistorySelect(VTDt,TimeCurrent());
...
 
Trader_Patinhas:

Prezado, nunca vai retornar nada porque vc está passando o mesmo horário inicial e final, ou seja, a duração do intervalo é zero.

Vc tem que passar a hora inicial e a hora final do intervalo que vc quer selecionar.

Se a sua intenção for pegar o histórico do início do dia atual até o momento atual, vc pode fazer assim:

Boa tarde Patinhas, ficou perfeito, para pegar o a semana seria como?

 
Consegui resolver com isso
datetime wkstart =iTime(NULL,PERIOD_W1,0);
 

Prezado colega Ruy,

Estava precisando de uma função que quando o meu robô atingisse determinado prejuízo fosse removido automaticamente. Aí vi esse seu tópico e apliquei ao meu EA, mas percebi que ele leva em consideração o resultado da última posição. Por exemplo: ele faz um trade e ganha R$ 150,00, depois faz outro e ganha R$ 50,00, no terceiro ele faz um trade que perdi R$ 100,00, como eu calibrei meu robô perda máxima diária de R$ 100,00, nesse caso mesmo estando ganhando no dia R$ 100,00 o robô foi removido. Ou seja, ele só leva em consideração o resultado do último trade, pois se este atingir a meta negativa ou positiva ele é removido. Não leva em consideração todos os trades feitos até então. Estou certo ou equivocado? Antecipadamente agradeço aos que colaborarem.

 
Eu testei mas só retorna o lucro, quando tem prejuizo retorna 0.
 
Trader_Patinhas #:

Prezado, nunca vai retornar nada porque vc está passando o mesmo horário inicial e final, ou seja, a duração do intervalo é zero.

Vc tem que passar a hora inicial e a hora final do intervalo que vc quer selecionar.

Se a sua intenção for pegar o histórico do início do dia atual até o momento atual, vc pode fazer assim:

Eu tentei assim mas só retorna os lucros, o prejuizo só aparece 0

Razão: