Fehler, Irrtümer, Fragen - Seite 2617

 
Stanislav Korotky:

Bitte überprüfen Sie den folgenden Fehler selbst. Die Anwendung verfügt über eine spezielle minimalistische Anzeige, deren einzige Aufgabe darin besteht, den Status der "Capslock"-Taste abzulesen. Sie wird im Protokoll und im Kommentar angezeigt.

Die Abfolge der Maßnahmen ist wie folgt.

  1. Kompilieren Sie den Indikator, platzieren Sie ihn auf dem Chart und stellen Sie sicher, dass 0 ("capslock" ist nicht aktiviert) gedruckt wird.
  2. Wechseln Sie zu ME, aktivieren Sie CapsLock und kompilieren Sie neu. Kehren Sie zum Terminal zurück. Überprüfen Sie die Protokolle, um sicherzustellen, dass der alte Indikator entladen und der neue geladen ist. Der "CapsLock"-Status wird jedoch weiterhin als 0 zurückgegeben.
  3. Wenn wir den Indikator aus dem Diagramm entfernen und erneut hochladen, wird das Capslock normal erkannt - es wird 1 angezeigt.

Was ist das Wunder? Beim Neustart durch Kompilierung werden einige Umgebungsvariablen nicht bereinigt oder was sonst?

Die Abfrage von Schlüsselzuständen ist ein besonderer Vorgang.

Der tatsächliche Tastenzustand wird nur für das aktive Fenster angegeben. Dies geschieht absichtlich, damit ein inaktives Fenster bei der Behandlung von OnChartEvent nicht gestört wird.

 

Benutzerdefiniertes Symbol, Ausgang im Logbuch gefunden Was bedeutet das?

2019.12.11 00:07:13.252 History 'DA6_CUSTOM' invalid container 2014.01.02 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.254 History 'DA6_CUSTOM' invalid container 2014.01.03 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.254 Geschichte 'DA6_CUSTOM' ungültiger Container 2014.01.05 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13254 History 'DA6_CUSTOM' invalid container 2014.01.06 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.255 History 'DA6_CUSTOM' invalid container 2014.01.07 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.255 History 'DA6_CUSTOM' invalid container 2014.01.08 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.255 History 'DA6_CUSTOM' invalid container 2014.01.09 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13.256 History 'DA6_CUSTOM' invalid container 2014.01.10 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13.256 History 'DA6_CUSTOM' ungültiger Container 2014.01.12 Symboleinstellungen - Ziffern: 4, Tickgröße: 0


 
Slava:

Die Abfrage des Tastenstatus ist ein besonderer Vorgang.

Der aktuelle Tastenzustand wird nur für das aktive Fenster angegeben. Dies geschieht absichtlich, damit das inaktive Fenster nicht gestört wird, wenn OnChartEvent verarbeitet wird.

Ist es geplant, OnChartEvent um Windows Events zu erweitern? Es kann vorkommen, dass einige Daten von außen kommen, und durch die DLL können Sie sofort ein Ereignis für das Diagramm generieren, um die Daten abzurufen, anstatt die Daten per Timer abzufragen. Sie könnten OnChartEvent auf ein Windows-Ereignis warten lassen, das seinen Namen trägt.

Früher haben wir in MT4 damit experimentiert, einen neuen Tick über PostMessage zu emulieren, um einen EA in einem Chart auszulösen.

 
Slava:

Die Abfrage des Status der Schlüssel ist ein besonderer Vorgang.

Der aktuelle Tastenzustand wird nur für das aktive Fenster angegeben. Dies geschieht absichtlich, damit das inaktive Fenster nicht gestört wird, wenn OnChartEvent verarbeitet wird.

Ja, dies ist einer der vielen Fälle, in denen die Dokumentation unvollständig ist. Einzelheiten werden erst nach und nach bekannt, wenn Probleme auftreten.

 

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Bibliotheken: MultiTester

fxsaber, 2019.12.13 10:24

Ich habe den Inhalt des KB-ZIP-Archivs überprüft. Es sieht so aus, als ob die Entwickler das Problem behoben haben, jetzt sind neue Versionen der Dateien in der ZIP-Datei enthalten. Nur die Dateidaten sind dort falsch. Und die Inhalte sind so, wie sie sein sollten.

 
Alain Verleyen:

Benutzerdefiniertes Zeichen, Ausgang im Logbuch gefunden Was bedeutet das?

2019.12.11 00:07:13.252 History 'DA6_CUSTOM' ungültiger Container 2014.01.02 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13.254 History 'DA6_CUSTOM' ungültiger Container 2014.01.03 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13.254 History 'DA6_CUSTOM' ungültiger Container 2014.01.05 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13.254 History 'DA6_CUSTOM' ungültiger Container 2014.01.06 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13.255 History 'DA6_CUSTOM' ungültiger Container 2014.01.07 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13.255 History 'DA6_CUSTOM' ungültiger Container 2014.01.08 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13.255 History 'DA6_CUSTOM' ungültiger Container 2014.01.09 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13.256 History 'DA6_CUSTOM' ungültiger Container 2014.01.10 Symboleinstellungen - Ziffern: 4, Tickgröße: 0
2019.12.11 00:07:13.256 History 'DA6_CUSTOM' ungültiger Container 2014.01.12 Symboleinstellungen - Ziffern: 4, Tickgröße: 0


Bedeutet, dass Ihr Protokoll einen Fehler meldet: Die Zeichen sind noch vier, aber die Häkchen fehlen noch.

 
Es wird wahrscheinlich um Container gehen. Brauchen Sie sie?
 

Leider ist diese Prüfung sehr selten, aber manchmal (zweimal in der letzten Woche, bei etwa hundert Durchläufen) schlägt sie fehl. Ich kann die Gründe dafür nicht verstehen - die Daten stammen aus der gleichen Datei/Struktur (?).

   datetime time[],
            START_H=D'01.02.2018';
   double   close[];

   int t=CopyTime (_Symbol,0,TimeCurrent(),START_H,time);
   int c=CopyClose(_Symbol,0,TimeCurrent(),START_H,close);

   if(t!=c) 
    {Print("Arrays (time & close) are not equal!!!"); return(false);}
 

Bitte prüfen/bestätigen/überprüfen Sie die Situation, dass der Versuch, das Diagramm über die empfohleneChartSetSymbolPeriod(0, NULL, 0); Methode zu aktualisieren, das Terminal für ein paar Sekunden hängen lässt (bei mir sind es ~15). Im Anhang finden Sie einen vereinfachten Indikator zur Reproduktion.

Folgendes war erforderlich (vorher funktionierte es gut): Es gibt eine vertikale Linie (Objekt) im Indikator und nachdem der Benutzer sie bewegt hat, wird der Indikator mit dem neuen Wert des Offset-Parameters neu aufgebaut, der von der Position der Linie genommen wird.

Der Indikator selbst ist primitiv: Er zeigt den aktuellen Kurs (mit Standardparametern) in einem Unterfenster an. Sie wird sofort berechnet.

Um das Problem zu lösen, genügt es, den Indikator auf das Diagramm zu setzen und die vertikale gelbe Linie ein paar Balken nach hinten zu verschieben.

Die Meldungen werden im Protokoll angezeigt:

- "Ziehen" sofort auf die Tatsache.

- Calc" nach einigen Sekunden - es wird bei jedem OnCalculate angezeigt.

Während des "Hängens" belastet das Terminal den CPU-Kern zu 100 %. Nach diesem Hänger wird der Indikator schließlich mit einem neuen Offset angezeigt. Aber der Sinn der Sache war es, den Indikator für neue Einstellungen sofort anzuzeigen, sobald der Benutzer die Linie bewegt.

Was ist das Problem? Wie kann man das beheben?

Vielen Dank im Voraus.

Dateien:
FMA.mq5  4 kb
IndArray.mqh  5 kb
 
Denis Nikolaev:

MT5

Gebäude 2280

Die Funktion, die die Anzahl der offenen Positionen mit dem angegebenen Symbol und der magischen Zahl zählt, wird wiederholt ausgelöst.

d.h. der erste Aufruf liefert den richtigen Wert, der zweite Aufruf liefert 0

Bitte geben Sie einen Beispielcode an und beschreiben Sie die Handelsumgebung. Beschreiben Sie es so, dass es reproduziert werden kann.