Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1591

 
Maxim Kuznetsov:

mit static in mql läuft alles und ist mit Fehlern behaftet. Der Code wird immer als Ganzes gebaut/kompiliert, ohne Zwischenobjekte, und die Angabe von static ist nur ein Tribut an die Tradition.

Wenn man statisch in mql verwendet - das ist fast 100% aus der C/C++/C# Welt ; oder man hat geguckt und lächerlich imitiert :-)

Aber es gibt auch __thread__ :-)

Wenn Sie statisch in einem Modul und nicht in Funktionen schreiben, ja. Der Codierer weiß höchstwahrscheinlich nicht, was er/sie tut. :) Und was lokale Variablen von Funktionen und,lokale Variablen von Klassenmethoden und auch Klassenfeldern betrifft, ist es sogar eine sehr nützliche Sache, denke ich.

Fehler können auch dadurch entstehen, dass das Konzeptder statischen Variablen falsch verstanden wird und sie infolgedessen falsch verwendet werden.
 
MakarFX:

nach

hinzufügen.

hat nicht geholfen), wo auch immer ich es hingelegt habe)

 
Mihail Matkovskij:

Wenn Sie statisch in einem Modul und nicht in einer Funktion schreiben, ja. Der Programmierer weiß wahrscheinlich nicht, was er tut. :) Und was lokale Variablen von Funktionen und,lokale Variablen von Klassenmethoden und auch Klassenfeldern betrifft, ist es sogar eine sehr nützliche Sache, meiner Meinung nach.

Einfache Namenskonflikte lassen sich durch Hinzufügen von m_ a_ bullshit zu Entitäten lösen, da der Compiler keine Kenntnis von scope und swears hat.

Zwei unabhängige Programmierer sollten Funktionen, Klassen und globale Variablen nicht auf dieselbe Weise benennen. Und Methoden- und Funktionsparameter müssen eindeutig sein. Dies gilt auch für lokale Variablen.

kein Rauschen hier :-)

Entschuldigung, ich habe es falsch verstanden.

 
законопослушный гражданин:

es hat nicht geholfen), wo auch immer ich es hingelegt habe)

Wenn Sie den Code verstehen wollen, sehen Sie sich die gesamte Logik des EA an, was er tut und unter welchen Bedingungen.

Ich habe den ganzen Berater sehr deutlich beschrieben, auch für Anfänger, wenn Sie nicht verstehen, fragen Sie.

Wenn Sie als "gesetzestreuer Bürger" einen EA für sich ausstellen lassen wollen, gehen Sie hier

 
Maxim Kuznetsov:

Der Weg, um einfache Namenskonflikte zu lösen, ist das Hinzufügen der m_ a_ bullshit zu Entitäten, weil der Compiler nicht weiß, wie man scope und schwört.

Zwei unabhängige Programmierer sollten Funktionen, Klassen und globale Variablen nicht auf dieselbe Weise benennen. Und Methoden- und Funktionsparameter müssen eindeutig sein. Dies gilt auch für lokale Variablen.

kein Rauschen hier :-)

Entschuldigung, ich habe es falsch verstanden.

Tasks können unterschiedlich sein und statische Variablen nur zur Lösung von Namensraumkonflikten verwenden, was man natürlich nicht tun sollte (aber das ist ungenau... :)). Sie können aber z. B. aufzeichnen, wie viele Objekte einer bestimmten Klasse erstellt wurden. Außerdem sind statische Konstanten eine sehr praktische Sache. Statische Methoden, etc. Sie können natürlich auch auf statische Daten verzichten. All dies hängt jedoch von vielen Faktoren ab. Die Aufgabenstellung und die Lösungsansätze. Nun, das hängt natürlich in erster Linie davon ab, wie dieProgrammierer das Konzept der Programmierung verstehen.

 
Mihail Matkovskij:

Aufgaben können unterschiedlich sein, und die Verwendung statischer Variablen, nur um Namensraumkonflikte zu lösen, ist sicherlich keine gute Idee (aber sie ist ungenau... :)). Aber Sie können zum Beispiel aufschreiben, wie viele Objekte einer bestimmten Klasse erstellt wurden. Außerdem sind statische Konstanten eine sehr praktische Sache. Statische Methoden, etc. Sie können dies natürlich auch ohne Statik tun. All dies hängt jedoch von vielen Faktoren ab. Die Aufgabenstellung und die Lösungsansätze. Nun, das hängt natürlich in erster Linie vom Verständnisdes Programmierers für das Programmierkonzept ab.

Nehmen Sie nun eine Bibliothek und #include sie...

Sie werden aus heiterem Himmel eine Menge Konflikte bekommen. Der Grund dafür ist, dass Sie und der Autor sich auf ein und dieselbe Sache als zwei vernünftige Menschen beziehen. In einem einfachen EA, Eingabe von Doppel-SL - und eine Menge von Warnungen.

Wie zum Teufel benenne ich einen Stop-Loss, so dass garantiert ist, dass er mit niemandem (sic!, mit den Namen der Parameter von Methoden) übereinstimmt, wenn er Stop-Loss heißt und genau das bedeutet?

Oh! Die Lösung ist inp_SL...und m_SL und a_SL von der Sichtbarkeit... lassen Sie die Entwickler die Metadaten und Definitionsbereiche in die Namen ziehen.

kein Ort, um wütend zu sein...

 
Maxim Kuznetsov:

Nun nehmen Sie eine Bibliothek und #include sie zu sich...

werden Sie aus heiterem Himmel eine Menge Konflikte haben. Nur weil zwei vernünftige Menschen, Sie und der Autor, ein und dieselbe Sache als ein und dieselbe Sache bezeichnet haben. In einem einfachen EA, Eingabe von Doppel-SL - und eine Menge von Warnungen.

Wie zum Teufel benenne ich einen Stop-Loss, so dass garantiert ist, dass er mit niemandem (sic!, mit den Namen der Parameter von Methoden) übereinstimmt, wenn er Stop-Loss heißt und genau das bedeutet?

Oh! Die Lösung ist inp_SL...und m_SL und a_SL von der Sichtbarkeit... lassen Sie die Entwickler die Metadaten und Definitionsbereiche in die Namen ziehen.

kein Platz für Wut...

Ich verwende selten String-Bibliotheken, da ich selten mit ihnen zufrieden bin. Ich ziehe es vor, meine eigenen zu machen. Aber ich kann eine Bibliothek eines Drittanbieters nur dann verwenden, wenn ich etwas erstellen muss, das bereitsviele Male vor mirerdacht wurde.Und dann müssen solche Bibliotheken von Drittanbietern oft angepasst werden (z. B. wenn plötzlich ein Fehler auftaucht oder mir einige benötigte Funktionen oder Methoden fehlen). Und wenn es zu viele solcher Konflikte gibt, wie Sie beschrieben haben, ist es besser, eine andere Bibliothek zu suchen. Oder ändern Sie die Namen im Extremfall durch automatische Ersetzung. Aber ich würde es nicht tun.

 
MakarFX:

Wenn Sie den Code verstehen wollen, gehen Sie die gesamte Logik des EAs durch, was er tut und unter welchen Bedingungen.

Ich habe die gesamte EA sehr klar zu Ihnen, auch für Anfänger, wenn Sie es nicht verstehen, fragen.

Wenn Sie einen EA für sich ausstellen lassen wollen, können Sie dies hier tun, wie ein "gesetzestreuer Bürger".

Nein, ich will es selbst herausfinden.

Das MQLQL-Handbuch ist in einer anderen Sprache als ich geschrieben, so dass ich einige Dinge nicht verstehe, aber der Expert Advisor ist erklärt, danke.

 
Maxim Kuznetsov:

Nun nehmen Sie eine Bibliothek und #include sie zu sich...

werden Sie aus heiterem Himmel eine Menge Konflikte haben. Nur weil zwei vernünftige Menschen, Sie und der Autor, ein und dieselbe Sache als ein und dieselbe Sache bezeichnet haben. In einem einfachen EA, Eingabe von Doppel-SL - und eine Menge von Warnungen.

Wie zum Teufel benenne ich einen Stop-Loss, so dass garantiert ist, dass er mit niemandem (sic!, mit den Namen von Parametern von Methoden) übereinstimmt, wenn er Stop-Loss genannt wird und genau das bedeutet?

Oh! Die Lösung ist inp_SL...und m_SL und a_SL von der Sichtbarkeit... lassen Sie die Entwickler die Metadaten und Definitionsbereiche in die Namen ziehen.

kein Platz für Wut...

Offenbar ist es ein kleines Ärgernis...)) Ich sehe keinen Sinn darin, große Binärcodes von jemand anderem in den Programmkörper einzufügen. Sie erfordern entweder echte Anweisungen, oder sie müssen erst zerlegt und verstanden werden)))

Der Generator für eindeutige Präfixe im Projekt ist unser alles))))

 

Ich verstehe nicht, warum alle von irgendwelchen Namenskonflikten sprechen...? Es muss sich um prozedurale Programmierung handeln... Soweit mir bekannt ist, lassen sich solche Konflikte, wenn es mehrere gibt, leicht mit Präfixen lösen. Das ist alles, was es zu sagen gibt... Warum müssen Sie so viel darüber schreiben...? :)

Außerdem haben die Entwickler vor langer Zeit so etwas wie Namespaces eingeführt. Ich weiß nicht, wie es mit der 4. Version aussieht, aber die 5. Ich sehe also kein so großes Problem.

Grund der Beschwerde: