Robô não está mandando ordens no gráfico real

 

Boa noite pessoal.


Enfim terminei meu EA e agora estou tentando colocar no gráfico real (simulador), porém eu percebi que ele simplesmente não executa nenhuma ordem mesmo que as condições sejam satisfeitas.

Anexo o código da compra desse meu EA. Caso precisem de informações adicionais, gentileza avisar.

void ShortOpened()
  {

   if(m_position.SelectByMagic(_Symbol,inpt_numero_magico))
      return;

   if(Sinaldevenda())
     {
      double stopdevenda = NormalizeDouble(rates[1].high+0.001,3);      
      double alvodevenda = NormalizeDouble(rates[1].low-((rates[1].high-rates[1].low)*multiplicadoralvo),3);
      double posicaovenda = NormalizeDouble(rates[1].low-0.001,3);
      double saldo = (AccountInfoDouble(ACCOUNT_BALANCE));
      double riscoporoperacao = ((riscooperacao*saldo)/100);
      double diferenca = NormalizeDouble(stopdevenda-posicaovenda,3);
      double lote = NormalizeDouble(riscoporoperacao/diferenca*posicaovenda/100000,2);
      int meuTempo = 60*minutosexpirar;
     
      if (m_trade.SellStop(lote,posicaovenda,_Symbol,stopdevenda,alvodevenda,ORDER_TIME_SPECIFIED,TimeTradeServer()+meuTempo,"Venda"))
         Print("Ordem de venda executada");
         Print(stopdevenda, " - Stop da operação");
         Print(alvodevenda, " - Alvo da operação");
         Print(posicaovenda, " - Entrada certa");
         Print(saldo, " - Saldo na conta");
         Print(riscoporoperacao, " - Risco da operação na moeda da conta");
         Print(diferenca, " - Distância do stop");
         Print(lote, " - Lote ideal"); 
     }
  }

Obs.: No BT funcionou tudo perfeitamente.


Obrigado desde já.

 

Verifica o log nas abas Experts e diário para vê se há alguma mensagem lá.

 
Adailton Silva #:

Verifica o log nas abas Experts e diário para vê se há alguma mensagem lá.

Olá,


Verifiquei e não aparece absolutamente nada. Parece que o caso é que ele apenas não identifica a ordem. Poderiam ser as condições?

 
Matheus #:

Olá,


Verifiquei e não aparece absolutamente nada. Parece que o caso é que ele apenas não identifica a ordem. Poderiam ser as condições?

Debug o EA em tempo real e coloque pontos de interrupção nesta função.

Pode também adicionar comentário com Print() nas passagens de seu interesse para verificar se os dados estão sendo lidos naquela determinada linha de código.

Observe que há um return em uma condição relacionada ao número mágico do EA, caso esteja sendo verdadeiro, pelo que entendi, ele não vai entrar na condição que recebi a função Sinaldevenda()  no seu código...

Enfim, faça uma depuração em tempo real ou com print's que certamente vai encontrar o motivo. 

Razão: