EA parado de executar ao colocar validação de conta de usuário

 

Amigos, boa tarde !


Tenho um EA que está funcionando perfeitamente na OnTick(), porém para repassar para lguns amigos e até comercializar coloquei uma validação de conta que encontrei aqui no grupo mesmo :

#include <Trade\Trade.mqh>
#include <Trade/SymbolInfo.mqh>

CTrade  trade;
   string  v_trade;
   int v_take = 0, v_loss = 0, v_dia, v_mes, v_dia_atual, v_mes_atual,v_ticket, v_pontos_gain = 50, v_pontos_loss = 200, v_contratos = 1;
   double v_preco, v_tempo = 0, v_recupera = v_pontos_loss/v_pontos_gain, v_vlr_ordem;

   MqlTradeRequest     m_request;         // request data
   MqlTradeResult      m_result;          // result data

//=================================================================================
// -----------   BLOCO PARA LIBERAÇÃO DE CONTA -----------------------------------=
//=================================================================================

long periodo_licenca=60;  // Qtd dias licença
datetime dt_expiracao=__DATE__+PeriodSeconds(PERIOD_D1)*periodo_licenca;
int liveAccountNumber = 1111;  // Liberar conta um
int liveAccountNumber2 = 222222; //  Liberar conta dois 


 int OnInit() {
 
  dt_expiracao=__DATE__+PeriodSeconds(PERIOD_D1)*60; // Expira 60 dias após a compilação

      if(TimeCurrent()>dt_expiracao)

        {
        Alert(__FUNCTION__,": Licença expirada");

         return(INIT_FAILED);

        }

if(( AccountInfoInteger(ACCOUNT_LOGIN) == liveAccountNumber) || ( AccountInfoInteger(ACCOUNT_LOGIN) == liveAccountNumber2))
{
   Print("Conta validada com sucesso.");
   Alert("Conta validada com sucesso.");
   return(1);
}
   else
{
   Print("Conta não reconhecida, verifique sua licença.");
   Alert("Conta não reconhecida, verifique sua licença.");
   return(-1);

}
}
//=================================================================================
// -----------  FIM BLOCO PARA LIBERAÇÃO DE CONTA --------------------------------=
//=================================================================================

void OnTick() {

O restante do meu código está no OnTick, a validação de conta funciona mas o robo para de funcionar. o nome do robo desaparece do gráfico como se não existisse.. Nenhuma mensagem na aba experts.

Na aba Diário aparece :


2020.06.03 14:30:20.892 Experts initializing of Recompensa_Cinquenta_WIN (WINM20,M5) failed with code 1

2020.06.03 14:30:20.903 Experts expert Recompensa_Cinquenta_WIN (WINM20,M5) removed


Podem me ajudar por favor ?


Obrigado !

Carlos


 
Carlos Martins:


troque return 1 e 0 por

return(INIT_FAILED);

return(INIT_SUCCEEDED);


E a sua validação de data não esta sendo usada.

 
Jonathan Pereira:

troque return 1 e 0 por


E a sua validação de data não esta sendo usada.

Muito Obrigado funcionou !!!!

agora a validação de data está nesse trecho, segundo a explicação está validando a data atual com a data de compilação do EA :

  dt_expiracao=__DATE__+PeriodSeconds(PERIOD_D1)*60; // Expira 60 dias após a compilação

      if(TimeCurrent()>dt_expiracao)

        {
        Alert(__FUNCTION__,": Licença expirada");

         return(INIT_FAILED);

        }

Isso não vai funcionar ?

 
Carlos Martins:

Muito Obrigado funcionou !!!!

agora a validação de data está nesse trecho, segundo a explicação está validando a data atual com a data de compilação do EA :

Isso não vai funcionar ?

Sim, mas tem que estar dentro do seu if de validação 
Razão: