Terminal Globals Problem

 

Hallo, Leute

ich habe ein Problem, das mich dazu bringt, mich von der MT-Programmierung zu verabschieden. Das Problem besteht darin, dass ich versuche, Terminal-Globals zu setzen. Was ich mache, ist ungefähr so:

BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);

Beim Setzen erhalte ich einen 4051-Fehler. Der erste Parameter ist ein String, der zweite ein Double, wie es sein sollte. Warum es immer wieder behauptet, dass ein Parametertyp ungültig ist, ist mir ein Rätsel. Beide Parameter haben den richtigen Typ. Ich verstehe nicht, warum es eine Sicherung durchbrennt, wenn die Parameter korrekt sind. Ich bin von Beruf Softwareentwickler und hatte vor, MT-Anwendungen in mein Angebot aufzunehmen. Wenn die Plattform unzuverlässig ist, werde ich sie nicht anfassen. Etwas, das unzuverlässig ist, lässt mich nur schlecht aussehen und sabotiert mein Geschäft. Wenn jemand einen Einblick in das Thema hat, wäre ich sehr dankbar.

Vielen Dank!

Prof.

 
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);

Entfernen Sie die Double-Deklaration. GV ist bereits double, so dass keine Notwendigkeit, es erneut zu deklarieren.



BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";

Auch dieser Code ist problematisch. Jemand anderes wird Sie darauf hinweisen, wenn er die Zeit hat.

 
ProfessorMetal:

Hallo, Leute

ich habe ein Problem, das mich dazu bringt, mich von der MT-Programmierung zu verabschieden. Das Problem besteht darin, dass ich versuche, Terminal-Globals zu setzen. Was ich mache, ist in etwa so:

Beim Setzen erhalte ich einen 4051-Fehler. Der erste Parameter ist ein String, der zweite ein Double, wie es sein sollte. Warum es immer wieder behauptet, dass ein Parametertyp ungültig ist, ist mir ein Rätsel. Beide Parameter haben den richtigen Typ. Ich verstehe nicht, warum es eine Sicherung durchbrennt, wenn die Parameter korrekt sind. Ich bin von Beruf Softwareentwickler und hatte vor, MT-Anwendungen in mein Angebot aufzunehmen. Wenn die Plattform unzuverlässig ist, werde ich sie nicht anfassen. Etwas, das unzuverlässig ist, lässt mich nur schlecht aussehen und sabotiert mein Geschäft. Wenn jemand einen Einblick in das Thema hat, wäre ich sehr dankbar.

Vielen Dank!

Prof.

Ich habe kein Problem mit diesem Code:

string BuyEntrySignalGiven = Symbol() + "BuyEntrySignalGiven";
GlobalVariableSet(BuyEntrySignalGiven, (double) 1.0);     
Welches Build verwenden Sie? Wie können Sie Ihr Problem reproduzieren?
 
Ich denke, es handelt sich um ein älteres Modell.
 

Der Doppelstich war ursprünglich nicht vorhanden. Ich habe ihn wegen des Fehlers hinzugefügt. Der zweite Parameter soll ein Double sein. Mein Hintergrund ist C++/C#, und ich dachte, dass es ausreichen würde, das Argument als 1.0 einzugeben. Ich habe den Cast hinzugefügt, weil der Aufruf fehlgeschlagen ist und ich mir nicht sicher war, ob es eine Eigenart von MQL4 ist. Ich habe bereits gesehen, dass sich MQL4 nicht immer an die erwarteten Regeln hält. Was die String-Zuweisung angeht, so habe ich einen anderen Indikator, den ich geschrieben habe, der demselben Format folgt und perfekt funktioniert. Ich kann da nichts Problematisches erkennen. Symbol() gibt eine Zeichenkette zurück, die Verkettung erfolgt mit einer Zeichenkette, was vollkommen akzeptabel ist, und die Variable, der der Ausdruck zugewiesen wird, ist ebenfalls eine Zeichenkette. Das einzige, was ich sehen kann, was ein Problem sein könnte, ist die Verkettung des Paarsymbols mit einer Zeichenkette, die mit dem GV-Namen übereinstimmt. Das sollte keine Rolle spielen, da die "fertige" Zeichenkette nicht mit dem GV-Namen identisch ist. Vielleicht ist das das Problem. Wenn es so ist, warum sagen Sie es nicht einfach?

Wie auch immer, danke für die Antwort

Prof.

 

Eigentlich hat MetaQuotes gesagt, dass Sie bei MQL4/5 keinen C++/C#-Codierungsstil und keine Regeln erwarten können.


Übrigens, Sie haben die Frage des Moderators nicht beantwortet.

 

Interessant, Leute. Ich verwende Build 646. Ich glaube nicht, dass das das Problem ist. Äh - ich glaube, ich habe es gerade herausgefunden. Ich bin nur müde und dumm. Die GV-Namen werden in einer Methode gesetzt, die ich von OnStart() aus aufrufen wollte, es aber nicht getan habe. DUH! Gib dem dummen Amerikaner eine Ohrfeige und sag ihm, er soll ins Bett gehen und etwas schlafen, bevor er noch mehr programmiert. Ich bin seit etwa 36 Stunden wach. Ihr habt mir auf jeden Fall geholfen, indem ihr mich dazu inspiriert habt, einen Schritt zurückzutreten und einen anderen Blick auf das zu werfen, was ich getan habe. Vielen Dank und gute Nacht, guten Tag - was auch immer es ist, wo Sie sind :-)

Prof.

 
Ich habe geantwortet, deysmacro. Sie haben meiner Antwort keine Zeit gegeben, sich zu zeigen. Wie ich schon sagte, ist das im Grunde kein Problem. Das Problem war ein Anfängerfehler meinerseits aufgrund von Müdigkeit. Übrigens weiß ich, dass nicht alle Dinge in MQL4/5 genauso funktionieren wie in C++/C#. Ich erinnere mich jedoch an eine Aussage, die besagt, dass mit den Änderungen an MQL4/5 unter anderem beabsichtigt wird, es C++ ähnlicher zu machen. Die Dokumentation könnte etwas besser organisiert und gründlicher sein. Fairerweise muss man sagen, dass dasselbe auch von Microsoft gesagt werden kann.
 
Es ist eigentlich ganz einfach. Wenn sie dir etwas beibringen oder eine gründliche Dokumentation erstellen, wird irgendwann ... ... ...
 

Um MetaQuotes gegenüber fair zu sein: Was sie tun, ist nicht trivial. Ich vermute, dass es immer die Norm sein wird, sich selbst etwas beizubringen. Um ehrlich zu sein, ist das für einen professionellen Entwickler ganz normal. Das gehört zum Job dazu. Die Dokumentation und die Interaktion mit anderen Entwicklern ist in der Regel die einzige "Lehre", die Sie erhalten werden. C'est la vie. :-)

Ich versuche immer noch herauszufinden, wie man das neue Debugging für MQL4 zum Laufen bringt. Ich bin dem gefolgt, was ich dachte, dass die Dokumentation mir sagt, was ich tun soll. Als ich versuchte, den Debugger zu starten, öffnete sich ein H1-Fenster und der Eigenschaftsdialog für den Indikator, den ich zu debuggen versuchte. Als ich das Dialogfeld mit OK beendete, wurde der Debugger geschlossen und das Fenster verschwand. Nun gut. Das ist ein Thema für einen anderen Thread, nehme ich an.

 
ProfessorMetal:

Um MetaQuotes gegenüber fair zu sein: Was sie tun, ist nicht trivial. Ich vermute, dass es immer die Norm sein wird, sich selbst etwas beizubringen. Um ehrlich zu sein, ist das für einen professionellen Entwickler ganz normal. Das gehört zum Job dazu. Die Dokumentation und die Interaktion mit anderen Entwicklern ist in der Regel die einzige "Lehre", die Sie erhalten werden. C'est la vie. :-)

Ich versuche immer noch herauszufinden, wie man das neue Debugging für MQL4 zum Laufen bringt. Ich bin dem gefolgt, was ich dachte, dass die Dokumentation mir sagt, was ich tun soll. Als ich versuchte, den Debugger zu starten, öffnete sich ein H1-Fenster und der Eigenschaftsdialog für den Indikator, den ich zu debuggen versuchte. Als ich das Dialogfeld mit OK beendete, wurde der Debugger geschlossen und das Fenster verschwand. Nun gut. Das ist ein Thema für einen anderen Thread, nehme ich an.


Es war ein langanhaltender Fehler, der vermieden werden konnte, wenn man einen anderen Bereich des Eingabedialogs als die Eingaben auswählte. Dann klappte der nächste Durchlauf. Mit dem 646er scheint er behoben zu sein. Leider gibt es nicht viele solcher Informationen auf dieser Seite. Normalerweise enden die meisten Probleme mit "Bericht an den Service Desk" ohne weitere Hinweise.