Erros, bugs, perguntas - página 1538

 

Caros programadores.

Construir 1281 MT5 Janelas 7 64

recebeu hoje uma actualização


O processo parece ser interminável :-)

Depois de reiniciar, quer reiniciar novamente e assim por diante.

2016.03.30 10:33:31.903 Rede '3143179': o comércio foi activado - modo de rede

2016.03.30 10:33:31.903 Rede '3143179': terminal sincronizado com MetaQuotes Software Corp.

2016.03.30 10:33:31.829 Rede '3143179': autorização prévia bem sucedida realizada em 2016.03.30 10:33:05

2016.03.30 10:33:31.829 Rede '3143179': autorizado no MetaQuotes-Demo via Access Point EU Frankfurt (ping: 70.19 ms)

2016.03.30 10:33:31.759 LiveUpdate novo terminal construído 1286 (IDE: 1286, Testador: 1286) está disponível

 
Vladislav Andruschenko:

Caros programadores.

Construir 1281 MT5 Janelas 7 64

recebeu hoje uma actualização


O processo parece ser interminável :-)

depois de reiniciar quer reiniciar novamente e assim por diante

2016.03.30 10:33:31.903 Rede '3143179': o comércio foi activado - modo de rede

2016.03.30 10:33:31.903 Rede '3143179': terminal sincronizado com MetaQuotes Software Corp.

2016.03.30 10:33:31.829 Rede '3143179': autorizado no MetaQuotes-Demo via Access Point EU Frankfurt (ping: 70.19 ms)

2016.03.30 10:33:31.759 LiveUpdate novo terminal construído 1286 (IDE: 1286, Testador: 1286) está disponível

Traga os registos completos.
 
2016.03.30 10:48:54.402 Network '3143179': trading has been enabled - netting mode
2016.03.30 10:48:54.402 Network '3143179': terminal synchronized with MetaQuotes Software Corp.
2016.03.30 10:48:54.301 Network '3143179': previous successful authorization performed from  on 2016.03.30 10:33:30
2016.03.30 10:48:54.301 Network '3143179': authorized on MetaQuotes-Demo through Access Point EU Frankfurt (ping: 70.19 ms)
2016.03.30 10:48:54.230 LiveUpdate      new terminal build 1286 (IDE: 1286, Tester: 1286) is available
2016.03.30 10:48:54.021 MQL5.community  activated for 'Vladon', balance: 98.50
2016.03.30 10:48:53.122 Terminal        G:\РАБОТА\expforex\!!!$$$---MQL5---!!!\ROBOFOREX MT5
2016.03.30 10:48:53.122 Terminal        Windows 7 Ultimate (x64 based PC), IE 11.00, Intel Core i7-6700  @ 3.40 GHz, RAM: 21297 / 32684 Mb, HDD: 9730 / 1498122 Mb, GMT+02:00
2016.03.30 10:48:53.115 Terminal        MetaTrader 5 - RoboForex x64 build 1281 started (ROBOFOREX LP)
 
Vladislav Andruschenko:
Estes não são registos completos. Escrever para Servicedesk.
 
comp:

É verdade que quando um indicador é removido manualmente enquanto o OnCalculate está em funcionamento, o OnDeinit é executado imediatamente, por vezes simultaneamente com o OnCalculate, que ainda não terminou?

Parece ser esse o caso. Uma classe tem uma matriz dinâmica de instâncias de outra classe que é libertada no destruidor.

O destruidor é chamado apenas em OnDeinit através da eliminação.

Assim, quando o desmarco durante a OnCalculate, o conjunto acima mencionado começa a limpar-se, como se alguém chamasse o destruidor. Este alguém - OnDeinit.

Como resultado, obterei o NULL em vez de instâncias da classe.

Tentei usar _StopFlag na OnCalculate, mas não ajudou.

Como fazer funcionar o OnDeinit não durante a execução do OnCalculate, mas depois?

Se eu remover o apagar do OnDeinit deixo de receber o NULL. Mas em registo obtenho uma memória lógica vazada. Portanto, é certamente OnDeinit. Tentei dormir nele. Mas parece que o Sono não funciona em indicadores. Até o experimentei assim

  void MySleep( const uint Pause ) const
  {
    const uint StartTime = GetTickCount();
    
    while(GetTickCount() - StartTime < Pause)
      ;
      
    return;
  }

O indicador parece ignorar isto também.

 
comp:

Utilizo macros pré-definidas na depuração. Também é possível descobrir convenientemente quem chamou a função/método sem lhe passar o parâmetro relevante?

Não pode usar as ferramentas MQL integradas, tem de o fazer você mesmo, por exemplo, para a versão de depuração adicione o parâmetro "nome da função chamada".
 
comp:

Este parece ser o caso. A classe tem uma matriz dinâmica de instâncias de outra classe, que é libertada no destruidor.

O destruidor é chamado apenas no OnDeinit através da eliminação.

Assim, quando o desmarco durante a OnCalculate, o conjunto acima mencionado começa a limpar-se, como se alguém chamasse o destruidor. Este alguém - OnDeinit.

Como resultado, obterei o NULL em vez de instâncias da classe.

Tentei usar _StopFlag na OnCalculate, mas não ajudou.

Como fazer funcionar o OnDeinit não durante a execução do OnCalculate, mas depois?

Se eu remover o apagar do OnDeinit deixo de receber o NULL. Mas em registo obtenho uma memória lógica vazada. Portanto, é certamente OnDeinit. Tentei dormir nele. Mas parece que o Sono não funciona em indicadores. Até o experimentei assim

O indicador parece ignorar isto também.

Favor abrir um pedido ao servicedesk e dar o código da função OnDeinit
 
Ilyas:
Por favor, abra um pedido ao servicedesk e dê-me o código da função OnDeinit

Pode recomendar como fazer correr artificialmente a OnCalculate durante muito tempo? É uma chatice com deslize.

Está a jogar apenas em indicador complexo (muitos cálculos). Quando eu retiro os cálculos - tudo está bem, pois OnCalculate é executado quase instantaneamente.

 
comp:

Como posso conseguir que o OnDeinit corra atrás do OnCalculate em vez de durante o mesmo?


OnDeinit é sempre executado após OnCalculate
 
comp:

Pode recomendar como fazer correr artificialmente a OnCalculate durante muito tempo? É uma chatice com deslize.

Está a jogar apenas em indicador complexo (muitos cálculos). Quando retiro cálculos - tudo está bem, porque a OnCalculate é executada quase instantaneamente.

#import "kernel32.dll"
    void Sleep(uint);
#import



 kernel32::Sleep(10000);