Errori, bug, domande - pagina 1538

 

Cari sviluppatori.

Edificio 1281 MT5 Windows 7 64

ha avuto un aggiornamento oggi


Il processo sembra essere infinito :-)

Dopo il riavvio vuole ripartire di nuovo e così via.

2016.03.30 10:33:31.903 Rete '3143179': il trading è stato abilitato - modalità netting

2016.03.30 10:33:31.903 Rete '3143179': terminale sincronizzato con MetaQuotes Software Corp.

2016.03.30 10:33:31.829 Rete '3143179': precedente autorizzazione riuscita eseguita il 2016.03.30 10:33:05

2016.03.30 10:33:31.829 Rete '3143179': autorizzato su MetaQuotes-Demo via Access Point EU Frankfurt (ping: 70.19 ms)

2016.03.30 10:33:31.759 LiveUpdate nuova build 1286 del terminale (IDE: 1286, Tester: 1286) è disponibile

 
Vladislav Andruschenko:

Cari sviluppatori.

Edificio 1281 MT5 Windows 7 64

ha avuto un aggiornamento oggi


Il processo sembra essere infinito :-)

dopo il riavvio vuole riavviare di nuovo e così via

2016.03.30 10:33:31.903 Rete '3143179': il trading è stato abilitato - modalità netting

2016.03.30 10:33:31.903 Rete '3143179': terminale sincronizzato con MetaQuotes Software Corp.

2016.03.30 10:33:31.829 Rete '3143179': autorizzato su MetaQuotes-Demo via Access Point EU Frankfurt (ping: 70.19 ms)

2016.03.30 10:33:31.759 LiveUpdate nuova build 1286 del terminale (IDE: 1286, Tester: 1286) è disponibile

Portate i registri completi.
 
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:
Questi non sono registri completi. Scrivete a servicedesk.
 
comp:

È vero che quando un indicatore viene rimosso manualmente mentre OnCalculate è in esecuzione, OnDeinit viene eseguito immediatamente, a volte contemporaneamente a OnCalculate, che non è ancora finito?

Questo sembra essere il caso. Una classe ha un array dinamico di istanze di un'altra classe che viene rilasciato nel distruttore.

Il distruttore è chiamato solo in OnDeinit attraverso la cancellazione.

Così, quando lo deseleziono durante OnCalculate, l'array di cui sopra inizia a cancellarsi, come se qualcuno chiamasse il distruttore. Questo qualcuno - OnDeinit.

Come risultato, otterrò NULL invece di istanze della classe.

Ho provato a usare _StopFlag in OnCalculate, ma non aiuta.

Come fare in modo che OnDeinit venga eseguito non durante l'esecuzione di OnCalculate ma dopo?

Se rimuovo la cancellazione da OnDeinit smetto di ottenere NULL. Ma nel registro ottengo una memoria logicamente fuoriuscita. Quindi è certamente OnDeinit. Ho provato a metterci dentro Sleep. Ma sembra che Sleep non funzioni negli indicatori. Ho anche provato così

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

L'indicatore sembra ignorare anche questo.

 
comp:

Uso macro predefinite quando faccio il debug. È anche possibile scoprire comodamente chi ha chiamato la funzione/metodo senza passargli il relativo parametro?

Non potete usare gli strumenti MQL integrati, dovete farlo voi stessi, per esempio, per la versione di debug aggiungete il parametro "nome della funzione chiamata".
 
comp:

Questo sembra essere il caso. La classe ha un array dinamico di istanze di un'altra classe, che viene rilasciato nel distruttore.

Il distruttore è chiamato solo in OnDeinit attraverso la cancellazione.

Così, quando lo deseleziono durante OnCalculate, l'array di cui sopra inizia a cancellarsi, come se qualcuno chiamasse il distruttore. Questo qualcuno - OnDeinit.

Come risultato, otterrò NULL invece di istanze della classe.

Ho provato a usare _StopFlag in OnCalculate, ma non aiuta.

Come fare in modo che OnDeinit venga eseguito non durante l'esecuzione di OnCalculate ma dopo?

Se rimuovo la cancellazione da OnDeinit smetto di ottenere NULL. Ma nel registro ottengo una memoria logicamente fuoriuscita. Quindi è certamente OnDeinit. Ho provato a metterci dentro Sleep. Ma sembra che Sleep non funzioni negli indicatori. Ho anche provato così

L'indicatore sembra ignorare anche questo.

Aprite una richiesta a servicedesk e date il codice della funzione OnDeinit
 
Ilyas:
Per favore aprite una richiesta a servicedesk e datemi il codice della funzione OnDeinit

Potete consigliarmi come far funzionare artificialmente OnCalculate per molto tempo? È un problema di slittamento.

Sta giocando solo in indicatori complessi (molti calcoli). Quando rimuovo i calcoli - tutto va bene, poiché OnCalculate viene eseguito quasi istantaneamente.

 
comp:

Come posso fare in modo che OnDeinit venga eseguito dopo OnCalculate invece che durante?


OnDeinit viene sempre eseguito dopo OnCalculate
 
comp:

Potete consigliarmi come far funzionare artificialmente OnCalculate per molto tempo? È un problema di slittamento.

Sta giocando solo in indicatori complessi (molti calcoli). Quando rimuovo i calcoli - tutto va bene, perché OnCalculate viene eseguito quasi istantaneamente.

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



 kernel32::Sleep(10000);