Erros, bugs, perguntas - página 2611

 
RickD:

Também não existem pastas no testador para Consultores Especialistas. Mas a MQLInfoString(MQL_PROGRAM_NAME) retorna o mesmo valor ao testar um Expert Advisor.

E preciso do mesmo valor para associar a versão em teste com a versão no gráfico, utilizando canais nomeados.

Fixado por
 
Comentários não relacionados com este tópico foram movidos para"Quaisquer perguntas de novatos sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos".
 

Estou a executar a EA em modo de depuração. Preciso de fazer um ponto de paragem no momento exacto em que desencadeie manualmente a EA. Como é que faço isso?


A questão é que o Terminal fica permanentemente suspenso quando eu retiro a EA. Preciso de compreender onde isso acontece.

 
fxsaber:

Eu dirijo a EA em modo de depuração. Preciso de fazer um ponto de paragem no momento exacto em que desencadeie manualmente a EA. Como é que faço isso?

Escrevi o seguinte código:

int OnInit()
  {
     if(IsStopped()) DeInitEA(1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(IsStopped()) DeInitEA(2);

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsStopped()) DeInitEA(3);
  }
//+------------------------------------------------------------------+

void DeInitEA(const int callfunc)
{
   string s = "";
   switch (callfunc)
   {
      case 1: s = "OnInit"; break;
      case 2: s = "OnDeinit"; break;
      case 3: s = "OnTick"; break;
   }
   Print(s + " , остановка работы советника");
   
}

definir ponto de quebra na corda s = ""; - voltou a ME sem problemas, surgiram janelas de depuração, bem, tudo é como de costume

 

Primeiro cortaram as estatísticas e agora mataram-nos por completo?


 
Igor Makanu:

escreveu o seguinte código:

definir ponto de quebra na corda s = ""; - voltou a mim sem problemas, surgiram janelas de depuração, bem, tudo como de costume

Com esta abordagem, temos de colocar uma verificação do ponto de parada após cada operador. Não encaixa.

 
TheXpert:

Primeiro cortaram as estatísticas e agora mataram-nos por completo?

está a funcionar

 
fxsaber:

Com esta abordagem, é necessário pôr um fim à verificação após cada operador. Não adequado.

Não precisa de o fazer após cada declaração, use a verificação de meia divisão - no início, no fim e no meio do código, depois quando encontrar a metade certa, repita novamente e divida o código em duas partes, acho que é rápido

 
Igor Makanu:

depois de cada declaração não ser necessária, colocar uma verificação de meia divisão - no início, no fim e no meio do código, depois encontrar a metade direita do código repetir a divisão do código em duas partes, penso que é rápido

É um grande programa. Demora cerca de 30 segundos de cada vez a reproduzir o desligamento.

 
fxsaber:

Eu dirijo a EA em modo de depuração. Preciso de fazer um ponto de paragem no momento exacto em que desencadeie manualmente a EA. Como é que faço isso?


A questão é que o Terminal fica permanentemente suspenso quando eu retiro a EA. Preciso de compreender onde isso acontece.

É completamente fixo ou demora algum tempo até que a EA seja descarregada? Se este último, procure um laço.
Razão: