MetaEditor. Probleme und Lösungen. - Seite 6

 
1
Liric86 2011.02.27 14:15 2011.02.27 14:15:10

Hallo! Nachdem ich MQL5 installiert habe, bin ich auf einige Fehler bei der Anzeige von Programmtexten während der Bearbeitung gestoßen. Wenn ich den Cursor auswähle, ändert sich die Position des Textes, neue Zeichen erscheinen auf der Tastatur und nicht an der Position des Cursors. Eine Neuinstallation der Software hilft nicht. Wie kann ich das Problem beheben?



 
Können Sie mir sagen, ob es möglich ist, das Orderbuch im Handel (EA) zu verwenden?
 
Liric86:

1
Liric86 2011.02.27 14:15 2011.02.27 14:15:10

Hallo! Nachdem ich MQL5 installiert habe, bin ich auf einige Fehler bei der Anzeige von Programmtexten während der Bearbeitung gestoßen. Wenn ich den Cursor auswähle, ändert sich die Position des Textes, neue Zeichen erscheinen auf der Tastatur und nicht an der Position des Cursors. Eine Neuinstallation der Software hilft nicht. Wie kann das Problem gelöst werden?

Die von Ihnen gewählte Schriftart ist nicht mono-white.

Bitte ändern Sie Ihre Schriftart auf Courier New mit einer Schriftgröße von 10 Punkt.

 
todem:
Können Sie mir sagen, ob Sie das Orderbuch im Handel (mit EA) verwenden können?

Das können Sie, aber nicht im Handelsstrategie-Tester.

Im Moment gibt es nur wenige (Alpari ist im Testmodus), die Forex-Stacks anbieten.

 
Was im Debugger fehlt, ist ein Schrittzähler. Und einen voreingestellten Parameter, um die erste Pause bei einem bestimmten Schritt zu machen.
 
Urain:
Was im Debugger fehlt, ist ein Schrittzähler. Und einen voreingestellten Parameter, um die erste Pause bei einem bestimmten Schritt zu machen.

Breaks sind derzeit nicht an Bedingungen geknüpft, aber es ist möglich, diese Einschränkung mit DebugBreak() zu umgehen.
Документация по MQL5: Общие функции / DebugBreak
Документация по MQL5: Общие функции / DebugBreak
  • www.mql5.com
Общие функции / DebugBreak - Документация по MQL5
 
mql5:
Breaks sind derzeit nicht an Bedingungen geknüpft, aber wir können diese Einschränkung mit DebugBreak() umgehen.

All das ist so, aber ich stand vor einer Situation, in der es viele Aufrufe einer universellen Klasse gibt, die in einer zu verknüpfenden Datei beschrieben ist. Und verschiedene Bedingungen führen zu Aufrufen von nicht existierenden Array-Zellen dieser Klasse. Das Programm selbst enthält Tausende von Algorithmus-Schritten, so dass es sehr schwierig ist, mit DebugBreak()+F11 zu verfolgen, bei welchem Schritt ein Fehler auftritt.

Natürlich habe ich mich auf die altmodische Art und Weise aus der Situation befreit (mit Fingerabdrücken und logischen Überlegungen). Aber die Kosten dafür, viele Stunden Arbeit. Das Hauptproblem bestand nicht darin, welche Funktion einen Fehler verursachte, sondern darin, welche Funktion den Wert nicht korrekt berechnet, was dann zu einem Fehler in einer anderen Funktion führt. Das heißt, wir brauchten nicht den Fehlerpunkt selbst, sondern das Wissen, was unmittelbar davor passiert ist.

Deshalb brauchen wir einen internen Schritt-für-Schritt-Tracer und die Möglichkeit, nach einem Neustart sofort zum angegebenen Schritt zu gehen (nachdem alle vorherigen Schritte zurückgespult wurden).

 
Ich habe mich auf einen Entwurf wie diesen bezogen:

if(step==123124) DebugBreak();
 
mql5:

Ich meinte eine solche Konstruktion:

if(step==123124) DebugBreak();


Ja, das habe ich auch gemeint. Es in jede Zeile von 5.000 Zeilen Code zu packen, ist ein Problem. Und die Zwischenlokalisierung funktionierte nicht, weil die Referenz ständig zwischen den einzelnen Teilen springt, so dass eine erste grobe Schätzung für eine genauere Lokalisierung nicht möglich war.

Ich habe diese Überlastung am Anfang der Datei beschrieben:

ulong cntDebugBreak=0;
void DebugBreak(ulong step)
  {
   if(step>=cntDebugBreak){cntDebugBreak++;DebugBreak();}
   else cntDebugBreak++;
  }

aber wenn der Aufruf unsichtbar (im Debugger), vor jedem Ausdruck wäre sehr cool.

PS: Der Code wurde korrigiert.

 

MetaEditor 4 hatte eine geniale Lösung für die Platzierung des Hilfefensters im Werkzeugfenster, so dass die Hilfe immer direkt im Textbearbeitungsfenster zur Hand war. Kann das Hilfefenster auch in MetaEditor 5 platziert werden?

Grund der Beschwerde: