Como saber a quantidades de operações negativas no dia??

 

Amigos eu estou desenvolvendo um robô, porem eu não sei como descobri se está acontecendo muito loss, tipo, eu quero para o robô caso já tive 3 operações de loss com profit negativo, como posso descobri esse dado?

exemplo:


if(operaçõesNegativas >= 3) {
 paraRobô = true;
}else{
 paraRobô = false
}


AccountInfoDouble(ACCOUNT_PROFIT)  --- só retorna o profit atual em execução, mas eu preciso dos dados negativos ou positivos do histórico do dia  com as ultimas 3 operações 3 já ocorridas.


tenho esse outro código porém só retorna a ultima operação positiva:, as negativas ficam zerada 0.0 

   double ResultadoUltimoTrade()
     {
       HistorySelect(0,TimeCurrent());
       ulong _ticket = HistoryDealGetTicket(HistoryDealsTotal()-1);
       return(HistoryDealGetDouble(_ticket,DEAL_PROFIT));
     } 
 

Pessoal Consegui encontra uma outra solução, porém tem como fazer isso com array? eu conheço programação php, já mql5 estou quebrando a cabeça.
Eu preciso saber se tive 3 operações são negativas para parar o robô.

Veja esse código, tive que fazer um for, e tb eliminar os HistoryDealGetDouble que estavam zerados... diferente de 0  (!=0)

void ResultadoUltimoTrade()
{
  HistorySelect(0,TimeCurrent());
  
   ulong  ticket = 0;
   double profit;
   uint   total=HistoryDealsTotal(); 
 //--- Loop para rastrear perdas de ganhos da negociação
        
         for (uint i=0; i < total; i++)
               {
                if( (ticket=HistoryDealGetTicket(i)) > 1 && (profit=HistoryDealGetDouble(ticket,DEAL_PROFIT)) != 0)
                {
                        Print("Profit: ",profit);
                }
               
               }
}
 
Kleuton Novais:

Pessoal Consegui encontra uma outra solução, porém tem como fazer isso com array? eu conheço programação php, já mql5 estou quebrando a cabeça.
Eu preciso saber se tive 3 operações são negativas para parar o robô.

Veja esse código, tive que fazer um for, e tb eliminar os HistoryDealGetDouble que estavam zerados... diferente de 0  (!=0)

Você não é programador...

Robô é coisa séria... Contrate alguém no Freelance...

Se você tem uma estratégia que é vencedora pra você, contrate um serviço profissional e pare de perder seu tempo...

 
Flavio Jarabeck:

Você não é programador...

Robô é coisa séria... Contrate alguém no Freelance...

Se você tem uma estratégia que é vencedora pra você, contrate um serviço profissional e pare de perder seu tempo...

Mas se ele não tentar ele nunca vai aprender. Por que não incentivar? 
 
Fabiano Amorim:
Mas se ele não tentar ele nunca vai aprender. Por que não incentivar? 

Porque o mercado financeiro é extremamente cruel e as corretoras brasileiras são uma m* quando se trata de exceções... NENHUM código simples irá funcionar em nosso mercado....

Então, antes de apostar dinheiro REAL, a pessoa, ou, o programador-wannabe, tem que se preparar MUITO antes de arriscar qualquer dinheiro em uma Conta REAL...

E pelo que vejo no Fórum, ninguém quer realmente aprender C++/MQL... Só querem remendos e "dicas"...

Mas, ok... responda à pergunta dele... incentive-o...

 
Flavio Jarabeck:


Na verdade a programação em si não é difícil, com dedicação e uma boa lógica você consegue programar, a questão é que poucos estão dispostos a ajudar novatos.

E o mercado de EA está cheio de mercenários. 

 
   double ResultadoUltimoTrade()
     {
       HistorySelect(0,TimeCurrent());
       ulong _ticket = HistoryDealGetTicket(HistoryDealsTotal()-1);
       return(HistoryDealGetDouble(_ticket,DEAL_PROFIT));
     } 

Na verdade acho que essa é a função que vc chegou mais próximo, não vou te passar o código pq assim vc vai quebrar a cabeça e vai aprender como fazer, mas o caminho é o seguinte:

Selecione o dia que está querendo ver, vc está utilizando HistorySelect, até aí tudo bem, só veja se questão de dia ou hora esta correto da forma que está fazendo.

Feito isso vc o HistoryDealsTotal, ou seja, vc selecionou o dia que quer ver na linha de cima, e esse comando vai pegar todas as operações que vc fez no dia selecionado.

Com todos os tickets selecionado é só fazer um for e fazer a leitura de um por um

Após feito isso é só selecionar o ticket, ativo, magicnumber (se possuir) e pegar a informação HistoryDealGetDouble


No codigo que vc colocou acima, vc conseguirá pegar somente o ultimo valor, pois não tem o for para varrer todos os tickets

espero que isso tenha te dado um norte

 
Fabiano Amorim #:
Mas se ele não tentar ele nunca vai aprender. Por que não incentivar? 

Isso ai meu parceiro, esse mano ai nasceu sabendo tudo.


Esse fórum é para ajudar a comunidade dos que sabem e dos que estão em busca de aprendizagem...

Razão: