Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ja, das ist eine weitere Frage, die immer wieder auftaucht und auf die es keine klare Antwort gibt. Wenn Sie Ihre eigene Klasse erben müssen - was ist besser, sie zu erben oder eine neue erweiterte Version Ihrer Klasse zu schreiben.
Es hängt alles von der allgemeinen Vorstellung ab, was Sie letztendlich wollen, imho
wenn Sie die Klasse an anderer Stelle verwenden wollen, müssen Sie sie ohne Vererbung vervollständigen
in meinem Beispiel kann die CError-Klasse GetLastError(), unset mit einer Beschreibung und den Wert (int) des Fehlers zurückgeben. Ich plane, es überall zu verwenden, sowieso gibt es nur einen Konstruktor, der die Sprache in einer statischen Variable und den Fall, der den Fehlertext zurückgibt definiert
Aber es gibt noch eine andere nützliche Methode - bool ServerDisable(); - sie definiert die Verfügbarkeit des Servers (Multiplattform MT4/МТ5-Code), eine sehr gute Funktion, sie scheint an anderer Stelle im Code benötigt zu werden, aber ich dachte, dass ich sie trotzdem für Handelsoperationen verwenden werde - ich habe sie in die COrder-Klasse eingebaut
.....
und wenn ich es zum Nachziehen verwenden möchte? .... - viel Raum für Phantasie, aber letztendlich wird es als Objekt in COrder verwendet - wo sonst könnte es verwendet werden?
imho sieht alles umständlich aus, es ist einfacher, die Service-Funktionsbibliothek mit dem Linker einzubinden, und der Compiler wird die unbenutzten Teile nicht von selbst in die ausführbare Datei einbinden
die ganze Klasse wäre recht kompakt im prozeduralen Stil, ich habe ein Beispiel für eine Funktion zum Öffnen einer Bestellung gezeigt, die in statischen Konstanten das Bestellvolumen speichern kannhttps://www.mql5.com/ru/forum/85652/page17#comment_12805083
Ist es wirklich wichtig, die Grenzen einzuhalten? Wenn es wichtig ist, sich in Grenzen zu halten, können Sie auch Funktionen schreiben.
Ich habe im Zusammenhang mit Ihrer Aussage geantwortet, dass Sie sich, wenn Sie keine Klassen verwenden, mit unbequemen Aufrufsignaturen herumschlagen müssen. Ich habe gezeigt, dass Sie sich nicht darum kümmern müssen.
Was hindert Sie daran, dem Konstruktor einen Symbolnamen zu übergeben, um die Klasse flexibel und vielseitig einsetzbar zu machen? Sie ziehen die Möglichkeit des Portfoliohandels grundsätzlich nicht in Betracht?
alles in Betracht ziehen,
Aber bisher habe ich mich an die Forschung gehalten - jetzt bin ich fast bereit, 1000 und 1 Wege des MM zu erforschen und alle Arten von Tricks mit Ordnungssystemen )))
Aber ich denke immer noch, dass es am Ende nicht zu flexibel wäre, ich habe oben schon 2 mal geschrieben, dass ein prozeduraler Stil + kleine Klassen mit gut abgestimmten Funktionen der Auftragsabwicklung besser wäre.
ich werde jetzt erst einmal dazu übergehen, meine Ideen zu testen, und dann werde ich sehen, was ich oft im Code ändere und was ich unangetastet lasse
.....
Was ist, wenn ich es zum Nachziehen verwenden möchte? .... Hier ist mehr Raum für Phantasie, aber letztendlich wird es immer noch als Objekt in der COrder verwendet - wo sonst könnte es verwendet werden?
Nachlaufende Balken sind separat, da sie nichts mit der Hauptlogik zu tun haben. Es kann sein, dass sie gar nicht existieren.
***
Nachlaufende Balken und andere ähnliche Unterstützungsfunktionen sollten als Abkömmlinge einer Klasse angelegt werden, und ihre Instanzen sollten in einem Array erstellt werden. Wenn eine Funktion aktiviert ist, wird dem Array eine Instanz hinzugefügt und ausgeführt. Wenn alle Funktionen deaktiviert sind, ist das Array leer und unnötige ifs werden nicht ausgeführt. Sie können mindestens 100 Trailing Bars in den EA einfügen, ohne dass dies die Ausführungsgeschwindigkeit beeinträchtigt.
So wird das nicht gemacht. Sie müssen zumindest sowohl Bid() als auch Ask() aufrufen. Ihr Code sieht aus wie eine Variable, die den Anschein erweckt, dass ihr Wert unverändert bleibt, obwohl das in Wirklichkeit nicht der Fall ist.
ach, es war schon immer auf diese Weise getan, in MT4 ist es immer noch Bid und Ask und keine Launen des Schöpfers zu ruinieren diese einfache Nutzung und immer aktuelle Preise ;)
Ich habe das folgende Schema, bei dem ich keine Probleme hatte.
Reden wir über diesen Code?https://www.mql5.com/ru/code/22770
wirklich wie die Umsetzung. wirklich gut für Tester und Optimierer, ich werde es wahrscheinlich als Basis verwenden, der Code ist kurz und lesbar, um ehrlich zu sein bin ich überrascht, Ihren Code zu lesen, Sie haben viel mehr anspruchsvolle Stil des Schreibens, ich in der Regel Plug and Play, ich weiß, ich kann nicht verstehen, die Logik
ach, es war schon immer so, in MT4 bleibt es Bid und Ask und kein Schöpfer Launen zerstören diese einfache Nutzung und immer aktuelle Preise ;)
Aber ihre Werte sind innerhalb der aktuellen Ereignisverarbeitung unveränderlich (es sei denn, Sie rufen RefreshRates zwangsweise auf). Sie sind also Variablen, keine Funktionen. Und Ihre Funktionen sehen wie Variablen aus
Geben Sie FPs eine echte Aufgabe der Verwaltung und Verarbeitung von Arrays von Hunderten von Megabytes oder Gigabytes von Daten und alle ihre Märchen Nachricht Modell (Daten sind unveränderlich) wird zur Hölle gehen.
Das sind Theoretiker, die gerade noch rechtzeitig aus den Aufgaben der realen Welt ausbrechen und in ihrem fiktiven Universum senden können :) Telekom-Geschichten sind dämliche Datenpässe.
Die einzige Möglichkeit, die Komplexität zu bekämpfen, besteht darin, sie in Objekte zu packen.Aber ihre Werte bleiben innerhalb der aktuellen Ereignisverarbeitung unverändert (es sei denn, Sie rufen RefreshRates zwangsweise auf). Es handelt sich also um Variablen, nicht um Funktionen. Und Ihre Funktionen sehen aus wie Variablen
Ich weiß nicht einmal, wie ich das in Ihrem Beispiel diskutierte Problem erklären soll, ich werde versuchen, es menschlich zu erklären - für mich, als jemand, der den ersten Pentium-90 PC hatte, schmerzt es zu sehen, dass, um eine bequeme Verwendung zu erhalten, ein zusätzlicher Funktionsaufruf, der impliziert, dass Werte von Registern auf den Stack gelegt werden, hinzugefügt wird... und ...los geht's.
Ich weiß, dass jetzt alles wiederholt auf Prozessorebene zwischengespeichert wird, und ich vermute, dass die Compiler-Entwickler den "Funktionsaufruf von Funktionsaufruf" effizienter gestalten werden.
dann sollte Ihr Beispiel wie folgt aussehen:
Oder so:
Vasiliy, dieser Artikel wäre sehr nützlich für dich - um dich nicht zu quälen, indem du OOP um der OOP willen ausquetschst.
Ich habe eine Idee für einen funktionalen Rahmen für MT. Dort wird es fast kein OOP geben. Nur Funktionen, "Monaden" und andere Pseudo-FP-Funktionalität. Ich schreibe alles in Anführungszeichen, da es unmöglich ist, ein vollwertiges FP in MQL zu erstellen.
Kommentare sind überflüssig.
ihr mögt euch nicht so sehr, oder vielleicht ist es das Gegenteil von 2 Schwulen, die einen Ausweg für sich selbst suchen)
Ich mochte übrigens Ihre Artikel, die Experten sind lahm, schwach, aber ich mag ihn genauso,
und ich bin nicht schwul.