Características da linguagem mql5, subtilezas e técnicas - página 179

 
Konstantin Nikitin:

Como opção.

Não funciona.

 
fxsaber:

Não funciona.

Parece que o perito do terminal permaneceu. Quando alterei a conta, apaguei-a do gráfico. A única coisa que tenho de jogar com o nome global para cada variante do Expert Advisor. É possível adicioná-lo ao nome de char. Não me dei ao trabalho de o fazer.

 
Konstantin Nikitin:

Penso que sobrecarreguei o terminal e o perito ficou. Quando alterei a conta, apaguei-a do gráfico. A única coisa que tenho de jogar com o nome global para cada variante do Expert Advisor. Posso adicioná-lo ao nome de char. Não me dei ao trabalho de o fazer.

Precisa do Consultor Especialista para trabalhar num gráfico não funcional. E oferecemos opções com horário de trabalho.

 
Konstantin Nikitin:

Penso que sobrecarreguei o terminal e o perito ficou. Quando alterei a conta, apaguei-a do gráfico. A única coisa que tenho de jogar com o nome global para cada variante do Expert Advisor. Posso adicioná-lo ao nome de char. Não me dei ao trabalho de o fazer.

  1. Abrir demonstração em ForexTimeFXTM-Demo01.
  2. Executar o consultor especializado no símbolo Brent.
  3. Mudar para MQ-Demo.
  4. Utilizar PKM no menu de Peritos para ver se o Expert Advisor está ou não a funcionar.
 
fxsaber:

  1. Abrir demonstração em ForexTimeFXTM-Demo01.
  2. Executar o consultor especializado no símbolo Brent.
  3. Mudar para MQ-Demo.
  4. Utilize o PCM no menu Expert para ver se o Expert Advisor está pendurado ou não.


fxsaber:

Em geral, chamar ExpertRemove on REASON_ACCOUNT é uma coisa absolutamente inútil.


Verifiquei-o, penso que é ainda mais triste, mesmo erros críticos não descarregam a minha EA

const long login = AccountInfoInteger(ACCOUNT_LOGIN);
//+------------------------------------------------------------------+
int OnInit()
{
   Print(__FUNCTION__);
   Print("_StopFlag = ",_StopFlag);
   Print("_UninitReason = ",_UninitReason);
   Print("login = ",login);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   Print(__FUNCTION__);
   Print("_StopFlag = ",_StopFlag);
   Print("_UninitReason = ",_UninitReason);
   Print("login = ",login);
   if(_StopFlag && _UninitReason == 6) {int i=1; int j = 10/--i;}
}
//+------------------------------------------------------------------+

mas o âmbito global é completamente apagado quando a conta é alterada

2020.05.21 14:30:17.303 tst1 (EURUSD,H1) OnDeinit

2020.05.21 14:30:17.303 tst1 (EURUSD,H1) _StopFlag = 1

2020.05.21 14:30:17.303 tst1 (EURUSD,H1) _UninitReason = 6

2020.05.21 14:30:17.303 tst1 (EURUSD,H1) login = 21796970

2020.05.21 14:30:17.303 tst1 (EURUSD,H1) divisão zero em 'tst1.mq5' (25,60)

2020.05.21 14:30:17.373 Peritos negociação automática está desactivada porque a conta foi alterada

2020.05.21 14:30:17.797 tst1 (EURUSD,H1) OnInit

2020.05.21 14:30:17.797 tst1 (EURUSD,H1) _StopFlag = 0

2020.05.21 14:30:17.797 tst1 (EURUSD,H1) _UninitReason = 0

2020.05.21 14:30:17.797 tst1 (EURUSD,H1) login = 500030706

2020.05.21 14:30:24.492 Peritos o comércio automatizado está activado

 
Igor Makanu:

Verifiquei-o, acho que é ainda mais triste, mesmo os erros críticos não descarregam a minha EA

mas o âmbito global é completamente apagado quando eu mudo a conta

Tudo funciona lá logicamente (mas incómodo nos locais). Só é preciso compreender o mecanismo.

 
fxsaber:

Tudo funciona lá logicamente (mas de forma estranha nos locais). Só é preciso compreender o mecanismo.

Bem, o mecanismo está na ajuda, mas a ajuda não tem em conta todos os casos em trabalho - esta informação foi dada pelo administrador, mas depois o moderador foi envolvido e os dois chegaram ao veredicto - você está a delirarhttps://www.mql5.com/ru/forum/334269/page53#comment_16412120


dar o mecanismo, a ajuda foi impotente ;)

 
Igor Makanu:

dar mecanismo, a ajuda foi impotente ;)

Quando aREASON_ACCOUNT(mesmo que a conta não seja alterada, basta voltar a registar), a EA é completamente descarregada e uma nova cópia é carregada.

Por esta razão, ExpertRemove em OnDeinit não tem qualquer efeito sobre a nova cópia, uma vez que diz respeito à cópia descarregada.


Se o símbolo estiver em falta, a nova cópia é carregada sem qualquer execução.

E o problema era descarregar uma nova cópia que está pendurada, mas não está a funcionar.


Uma cópia pendurada significa que se houver uma mudança para outra conta onde existe um símbolo, a EA começará.

 
fxsaber:

Porquê descarregá-lo se não funciona de todo?

 
Andrey Khatimlianskii:

E porquê descarregá-lo se não funciona de todo?

Deve haver um controlo total.

Razão: