Fehler, Irrtümer, Fragen - Seite 1538

 

Liebe Entwickler.

Build 1281 MT5 Windows 7 64

heute ein Update erhalten


Der Prozess scheint endlos zu sein :-)

Nach dem Neustart will er wieder neu starten und so weiter.

2016.03.30 10:33:31.903 Netzwerk '3143179': Der Handel wurde aktiviert - Netting-Modus

2016.03.30 10:33:31.903 Netzwerk '3143179': Terminal synchronisiert mit MetaQuotes Software Corp.

2016.03.30 10:33:31.829 Netzwerk '3143179': vorherige erfolgreiche Autorisierung durchgeführt am 2016.03.30 10:33:05

2016.03.30 10:33:31.829 Netzwerk '3143179': autorisiert auf MetaQuotes-Demo über Access Point EU Frankfurt (ping: 70.19 ms)

2016.03.30 10:33:31.759 LiveUpdate neue Terminal-Build 1286 (IDE: 1286, Tester: 1286) ist verfügbar

 
Vladislav Andruschenko:

Liebe Entwickler.

Build 1281 MT5 Windows 7 64

heute ein Update erhalten


Der Prozess scheint endlos zu sein :-)

will nach dem Neustart wieder neu starten und so weiter

2016.03.30 10:33:31.903 Netzwerk '3143179': Der Handel wurde aktiviert - Netting-Modus

2016.03.30 10:33:31.903 Netzwerk '3143179': Terminal synchronisiert mit MetaQuotes Software Corp.

2016.03.30 10:33:31.829 Netzwerk '3143179': autorisiert auf MetaQuotes-Demo über Access Point EU Frankfurt (ping: 70.19 ms)

2016.03.30 10:33:31.759 LiveUpdate neue Terminal-Build 1286 (IDE: 1286, Tester: 1286) ist verfügbar

Bringen Sie die vollständigen Protokolle mit.
 
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:
Dies sind keine vollständigen Protokolle. Schreiben Sie an servicedesk.
 
comp:

Stimmt es, dass, wenn ein Indikator manuell entfernt wird, während OnCalculate läuft, OnDeinit sofort ausgeführt wird, manchmal gleichzeitig mit OnCalculate, das noch nicht beendet ist?

Das scheint der Fall zu sein. Eine Klasse hat ein dynamisches Array von Instanzen einer anderen Klasse, das im Destruktor freigegeben wird.

Der Destruktor wird nur in OnDeinit durch delete aufgerufen.

Wenn ich also die Markierung während OnCalculate aufhebe, beginnt das oben erwähnte Array, sich selbst zu löschen, als ob jemand den Destruktor aufgerufen hätte. Dieser jemand - OnDeinit.

Infolgedessen erhalte ich NULL anstelle von Instanzen der Klasse.

Ich habe versucht, _StopFlag in OnCalculate zu verwenden, aber das hilft nicht.

Wie lässt man OnDeinit nicht während der Ausführung von OnCalculate, sondern danach laufen?

Wenn ich delete aus OnDeinit entferne, bekomme ich nicht mehr NULL. Aber im Protokoll erhalte ich ein logisches Speicherleck. Es ist also sicherlich OnDeinit. Ich habe versucht, ihn mit Schlaf zu füllen. Aber es scheint, dass Sleep in Indikatoren nicht funktioniert. Ich habe es sogar folgendermaßen versucht

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

Der Indikator scheint auch dies zu ignorieren.

 
comp:

Ich verwende beim Debuggen vordefinierte Makros. Ist es auch möglich, auf bequeme Weise herauszufinden, wer die Funktion/Methode aufgerufen hat, ohne ihr den entsprechenden Parameter zu übergeben?

Sie können die eingebauten MQL-Tools nicht verwenden, Sie müssen es selbst tun, z.B. für die Debug-Version den Parameter "Name der aufgerufenen Funktion" hinzufügen
 
comp:

Dies scheint der Fall zu sein. Die Klasse hat ein dynamisches Array von Instanzen einer anderen Klasse, das im Destruktor freigegeben wird.

Der Destruktor wird nur in OnDeinit über delete aufgerufen.

Wenn ich also die Markierung während OnCalculate aufhebe, beginnt das oben erwähnte Array, sich selbst zu löschen, als ob jemand den Destruktor aufgerufen hätte. Dieser jemand - OnDeinit.

Infolgedessen erhalte ich NULL anstelle von Instanzen der Klasse.

Ich habe versucht, _StopFlag in OnCalculate zu verwenden, aber das hilft nicht.

Wie lässt man OnDeinit nicht während der Ausführung von OnCalculate, sondern danach laufen?

Wenn ich delete aus OnDeinit entferne, bekomme ich nicht mehr NULL. Aber im Protokoll erhalte ich ein logisches Speicherleck. Es ist also sicherlich OnDeinit. Ich habe versucht, ihn mit Schlaf zu füllen. Aber es scheint, dass Sleep in Indikatoren nicht funktioniert. Ich habe es sogar folgendermaßen versucht

Der Indikator scheint auch dies zu ignorieren.

Bitte öffnen Sie eine Anfrage an servicedesk und geben Sie den Code der Funktion OnDeinit an
 
Ilyas:
Bitte öffnen Sie eine Anfrage an servicedesk und geben Sie mir den Code der Funktion OnDeinit

Können Sie empfehlen, wie man OnCalculate künstlich für eine lange Zeit laufen lassen kann? Das mit dem Ausrutschen ist eine Katastrophe.

Es spielt nur bei komplexen Indikatoren (viele Berechnungen). Wenn ich die Berechnungen entfernen - alles ist in Ordnung, wie OnCalculate fast sofort ausgeführt wird.

 
comp:

Wie kann ich OnDeinit dazu bringen, nach OnCalculate und nicht währenddessen zu laufen?


OnDeinit wird immer nach OnCalculate ausgeführt
 
comp:

Können Sie empfehlen, wie man OnCalculate künstlich für eine lange Zeit laufen lassen kann? Das mit dem Ausrutschen ist eine Katastrophe.

Es spielt nur bei komplexen Indikatoren (viele Berechnungen). Wenn ich die Berechnungen entferne, ist alles in Ordnung, weil OnCalculate fast sofort ausgeführt wird.

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



 kernel32::Sleep(10000);