![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ich bitte die Moderatoren, alle Diskussionen in einen separaten Thread zu stellen. Es gibt wahrscheinlich Dutzende solcher Threads, in denen die Vorteile von OOP diskutiert werden.
Eine weitere Frage: Was ist der Unterschied zwischen der Deklaration einer Variablen, dem Erhalten/Erstellen eines Zeigers und dem Erstellen einer Objektinstanz? Es geht nicht um den Unterschied, sondern darum, in welchen Fällen es besser ist, es zu verwenden. Es reicht zum Beispiel aus, eine Variable für die Eröffnung einer Position zu deklarieren.
Und in welchen Fällen es besser ist, den Zeiger zu verwenden, und in welchen Fällen wir auf die Objektinstanz nicht verzichten können.
Was sind die Vor- und Nachteile der einen oder anderen Methode?
1. Wenn sich ein Objekt im globalen Bereich befindet, ist es ein statisches Objekt. Sie wird im statischen Speicher abgelegt und existiert so lange, wie das Programm existiert.
Sein Konstruktor wird vor dem Aufruf der ersten Funktion des Programms aufgerufen. Der Destruktor wird nach OnDeinit() aufgerufen.
Zum Beispiel so:
Oder sogar so:
Sie wird beim Verlassen des Blocks zerstört. Wenn es zerstört wird, wird der Destruktor aufgerufen.
Da die Größe des Stapels in der Regel begrenzt ist, können sehr große Objekte nicht auf dem Stapel abgelegt werden.
Beispiel:
In diesem Beispiel werden zwei Variablen erstellt. Ein Objekt der Klasse MyClass im Heap.
Und die Variable pObject ist ein Zeiger auf MyClass. Dieser Variablen wird die Adresse des Objekts im dynamischen Speicher zugewiesen.
Beim Verlassen der Funktion wird die Variable pObject zerstört, aber das Objekt bleibt im dynamischen Speicher.
Um ihn löschen zu können, muss seine Adresse irgendwo gespeichert sein.
Wenn sie erstellt und zerstört werden, werden auch der Konstruktor und der Destruktor aufgerufen.
Der Zugriff auf dynamische Variablen dauert in der Regel länger als auf lokale Variablen.
All dies sollten Sie bei der Erstellung eines Objekts berücksichtigen.
1. Befindet sich ein Objekt im globalen Bereich, ist es ein statisches Objekt. Sie wird im statischen Speicher abgelegt und existiert so lange, wie das Programm existiert.
...
Gehe ich recht in der Annahme, dass mit dieser Option
ohne die Warnung des Compilers zu berücksichtigen, kann die Position mit einer magischen Zahl ungleich 123 beginnen ?
Das heißt, dass in der OnTick-Funktion ein neues Objekt erstellt wird und der Zauberer darin nicht gleich 123 ist.
Gehe ich recht in der Annahme, dass mit dieser Option
ohne die Warnung des Compilers zu berücksichtigen, kann die Position mit einer anderen magischen Zahl als 123 beginnen ?
Das heißt, dass in der OnTick-Funktion ein neues Objekt erstellt wird und der Zauberer darin nicht 123 entspricht.
SetExpertMagicNumber
Gehe ich recht in der Annahme, dass mit dieser Option
ohne die Compilerwarnung zu berücksichtigen, kann die Position mit einem magischen not 123 ?
Das heißt, in der Funktion OnTick wird ein neues Objekt erstellt, das nicht die MagicNumber 123 hat.
Ja, das ist richtig. Es handelt sich um zwei verschiedene Objekte. Da das lokale Objekt in OnTick den gleichen Namen wie das globale Objekt hat, kann in der OnTick-Funktion nur auf dieses zugegriffen werden. Das globale Objekt befindet sich außerhalb des Geltungsbereichs. Daher wurde für das lokale Handelsobjekt die MagicNumber noch nicht festgelegt.
Gehe ich recht in der Annahme, dass mit dieser Option
ohne die Compilerwarnung zu berücksichtigen, kann die Position mit einem magischen not 123 ?
Das heißt, dass in der OnTick-Funktion ein neues Objekt erstellt wird und der Zauberer darin nicht 123 ist.
Es ist genau dasselbe wie bei den Variablen.
Und Konzentration:
Warum wird dieseSetExpertMagicNumber überhaupt benötigt?
Es setzt eine magische Zahl auf das Objekt der Handelsklasse. Es kann mehr als ein CTrade-Klassenobjekt für das gesamte Programm geben, wie es jetzt in kodobase der Fall ist. Dies ist ein Objekt. Dieses Objekt wird für die Durchführung vonHandelsgeschäften verwendet. Es ist nicht notwendig, ein Objekt für das gesamte Programm zu erstellen und es jedes Mal neu zu erstellen, wenn ein neuer Zauberer, Schlupf und andere Parameter, die während der Initialisierung festgelegt werden, geändert werden müssen. Es ist möglich, ein separates Handelsobjekt für jedes gehandelte Symbol zu erstellen, die notwendigen Parameter dafür entsprechend den Eigenschaften des Symbols zu setzen, zu dem dieses spezifische Objekt der CTrade-Klasse gehört, und einfach zu handeln, indem man einen Zeiger auf das notwendige Objekt der notwendigen Handelsklasse von dem notwendigen Symbol erhält, ohne die dort gesetzten Parameter zu überschreiben.
Um mit einem anderen Magier zu arbeiten, kann ein separates Handelsobjekt mit entsprechenden Einstellungen definiert werden. Es kann mehrere Assistenten in einem EA geben.
Es hängt alles davon ab, was wir verstehen und wie wir es nutzen.
Sie setzt eine Magie für ein Objekt der Handelsklasse. Es kann nicht nur ein Objekt der Klasse CTrade für das gesamte Programm geben, wie es normalerweise in kodobase der Fall ist. Dies ist ein Objekt. Dieses Objekt wird für die Durchführung von Handelsgeschäften verwendet. Es ist nicht notwendig, ein Objekt für das gesamte Programm zu erstellen und es jedes Mal neu zu erstellen, wenn ein neuer Zauberer, Schlupf und andere Parameter, die während der Initialisierung festgelegt werden, geändert werden müssen. Es ist möglich, ein separates Handelsobjekt für jedes gehandelte Symbol zu erstellen, die notwendigen Parameter dafür entsprechend den Eigenschaften des Symbols zu setzen, zu dem dieses spezifische Objekt der CTrade-Klasse gehört, und einfach zu handeln, indem man einen Zeiger auf das notwendige Objekt der notwendigen Handelsklasse von dem notwendigen Symbol erhält, ohne die dort gesetzten Parameter zu überschreiben.
Um mit einem anderen Magier zu arbeiten, kann ein separates Handelsobjekt mit entsprechenden Einstellungen definiert werden. Schließlich kann es in einem EA mehrere Assistenten geben.
Es hängt alles davon ab, was wir verstehen und wie wir es nutzen.
Ist es in diesem Fall
SetExpertMagicNumber Устанавливает идентификатор эксперта
falsche Beschreibung?
Meines Erachtens sollten alle Aufträge/Positionen diese Magie haben, wenn sie für EA eingestellt sind. ((