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
Aber man kann in MQL4 nicht mit OOP programmieren, deshalb ist es immer noch beliebter.
Ich habe meinen Code bereits gezeigt, und ich werde ihn noch einmal zeigen:
Dies ist die Schnittstelle des Handelsprozessors - sie ist für MT4 und MT5 identisch.
Der Benutzer erhält nur diese Schnittstelle - und hat alle Möglichkeiten für Handelsaktionen. Sie müssen nicht einmal wissen, ob es sich um MT4 oder MT5 handelt. Sie müssen kaufen - rufen Sie die Funktion Buy auf, die das Ticket für die offene Handelskomponente füllt (für MT4 ist es eine Order, für MT5 eine Position) und den Rückgabecode an den Handelsserver zurückgibt.
Sie müssen nicht einmal über den Unterschied zwischen MT4- und MT5-Protokollen nachdenken - die Schnittstelle bietet alles, was Sie brauchen.
Dies alles sind OOP-Fähigkeiten.
Ich habe meinen Code bereits gezeigt, und ich werde ihn noch einmal zeigen:
Dies ist die Schnittstelle des Handelsprozessors - sie ist für MT4 und MT5 identisch.
Der Nutzer erhält einfach diese Schnittstelle - und schon hat er alle Möglichkeiten für Handelsaktionen. Er muss nicht einmal wissen, ob er mit MT4 oder MT5 arbeitet.
Und das ist alles OOP zu verdanken.
Gibt es Anwendungsbeispiele für typische Fälle?
Wenn Ihre Theorie war, dass MQL4=MQL5, dann MQL4 könnte auf MT5 und umgekehrt ausgeführt werden.
Haben Sie Beispiele für die Verwendung in typischen Fällen?
Nun, nehmen wir an, meine Funktion sendet einen Antrag auf Änderung von TP-SL an den Handelsprozessor:
Erstens, EA part objects - form trade action requests (hier ist eine solche Anfrage, TP-SL zu ändern). Danach wird die Funktion ProceedRequestInto() für alle Anfragen aufgerufen, um Informationen über eine Handelsaktion an den Handelsverarbeiter zu senden.
Der Handelsabwickler selbst ist ein Objekt der folgenden Klasse:
Das heißt, je nach Plattform wird die Klasse CTradeProcessor entweder von der Klasse CMT5TradeProcessor oder von der Klasse CMT4TradeProceccor geerbt.
Natürlich könnte all dies auch ohne OOP, mit Hilfe von Schaltern und ifdefs geschehen. Aber meiner Meinung nach ist der OOP-Ansatz bequemer und klarer, und das Wichtigste ist, dass er es erlaubt, Entitäten voneinander zu isolieren und die Masse an globalen Variablen loszuwerden.
Ein weiteres "Echo von OOP" findet sich übrigens in den zusätzlichen Funktionen für die Arbeit mit den ausstehenden Aufträgen. Der Handelsprozessor - arbeitet mit Tickets von Geschäften, was unpraktisch ist - der Bezug auf das Ticket in MT4 und MT5 ist unterschiedlich. Aus diesem Grund gibt es die gemeinsame Klasse COrderInfoCore, die von der Auftragsschnittstelle abstammt. Es ist viel bequemer, dem Prozessor nur einen Zeiger auf dieses Objekt zu übergeben. Auf diese Weise umgehen wir die plattformabhängigen Fragmente.
Nun, nehmen wir an, meine Funktion sendet einen Antrag auf Änderung von TP-SL an den Handelsprozessor:
Erstens, EA part objects - form trade action requests (hier ist eine solche Anfrage, TP-SL zu ändern). Dann wird die Funktion ProceedRequestInto() für alle Anfragen aufgerufen, um Informationen über eine Handelsaktion an einen Handelsverarbeiter zu senden.
Mein Code läuft völlig unverändert auf MT4 und MT5.
Warum in verschiedenen Terminals laufen?
Ich denke, es ist zu kompliziert, um zu verstehen, was da wirklich vor sich geht... Und ohne zu verstehen, wie es funktioniert, wird es wohl niemand nutzen... Ist es nicht einfacher, eine separate Version für MT5 zu schreiben und diese bei Bedarf einzubinden?
George Merts:
Meiner Meinung nach ist der OOP-Ansatz jedoch viel praktischer und übersichtlicher, und - was am wichtigsten ist - er erlaubt es, Entitäten voneinander zu isolieren und die Massen an globalen Variablen loszuwerden.
Das ist der Punkt, wenn man alles von allem isoliert hat, wird es viel schwieriger sein, mit solchem Code umzugehen, ganz zu schweigen von der Unmöglichkeit, den Code angemessen zu debuggen, wenn man die aktuellen Werte aller erforderlichen Variablen kennen muss...
Warum in verschiedenen Terminals laufen?
Denn mein Hauptkonto ist auf MT4 eröffnet, und mein Strategietester ist viel besser auf MT5.
Es ist eine häufige Forderung der Kunden in Freelance - "es muss sowohl auf MT4 als auch auf MT5 funktionieren" - das bedeutet, dass es einen Grund dafür gibt. Ich selbst sehe keinen Grund, in der Freiberuflichkeit zu arbeiten, aber Sie können diejenigen, die dort arbeiten, fragen, warum Kunden plattformübergreifend arbeiten wollen.
Warum müssen wir "verstehen, was da drinnen eigentlich gemacht wird"? Es gibt eine feste Schnittstelle, die eine Aktion ausführt, unabhängig von der Plattform - das ist es, was wir verwenden. Und was gibt es, auf niedrigem Niveau - was macht das für einen Unterschied?