![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
Gutes Argument. Es wäre schön, wenn die Argumente durch Code untermauert würden, statt nur bla, bla, bla.
Rückendeckung.
Hier ist meine CMyObject-Klasse:
Am Ende ist auch das Makro CONVERT_OBJECT_WITH_CHECK definiert, das für die DEBUG-Version eine zusätzliche Zeigerumwandlungsprüfung auf der Grundlage des Objekttyps durchführt
Sicherung der Daten.
Hier ist meine CMyObject-Klasse:
Am Ende ist auch das Makro CONVERT_OBJECT_WITH_CHECK definiert, das in der DEBUG-Version eine zusätzliche Prüfung der Zeigerumwandlung auf der Grundlage des Objekttyps durchführt
Es ist wunderschön. Das ist natürlich eine Frage des Geschmacks. Aber basierend auf der MQL-Syntax würde ich es so schreiben:
Es ist wunderschön. Das ist natürlich eine Frage des Geschmacks. Aber basierend auf der MQL-Syntax würde ich es so schreiben:
Ja, das ist richtig.
Aber das ist mein seniler "Programmierstil" (hallo, Volchansky mit seinem jüngsten Thread).
Ich habe alle Aufzählungen - beginnen Sie mit E, und dann mit "Buckel" Notation - Name. Und die Typen selbst in der Aufzählung beginnen mit einer Abkürzung (bis zu vier Buchstaben) des Aufzählungstyps.
Da es sich bei der Aufzählung um EMyObjectType handelt, beginnen alle Werte mit MOT_
Sind Sie ein Idiot? )) Ich habe kein einziges schlechtes Wort über F# gesagt. Lernen Sie, zu lesen und zu verstehen, was man Ihnen sagt, bevor Sie Ihre dummen Kommentare abgeben.
Wenn man OOP mit FP vergleicht, ist es sinnvoller, es mit einer reinen FP-Sprache zu vergleichen, z.B. Haskel. F# ist bereits sehr gut, während Python und R überhaupt nicht gut sind. Das ist es, was ich meine. Andernfalls könnten wir an einen Punkt kommen, an dem C++ auch eine FP-Sprache ist.Sie sind ein ungebildeter Troll. Alle aufgeführten Sprachen sind auf die eine oder andere Weise funktional. Lernen Sie das Fachgebiet kennen. Die Frage wurde gestellt, um zu verstehen, in welchem BezugsrahmenAndrei wahrscheinlich eine der RP-Sprachen praktiziert, daher war die Auflistung sehr allgemein.
Was soll das denn heißen?
Was sollte Ihrer Meinung nach im "Basisobjekt" enthalten sein?
Ich persönlich habe fast ALLE Objekte in allen meinen Projekten - geerbt von CMyObject: public CObject, (in meinem Objekt sind zwei weitere Felder hinzugefügt - Klassenname und Instanz-ID), und immer wieder festgestellt, dass ich CObject::Compare() Funktionalität sehr viel brauchen. Ein paar Mal waren Listenhinweise auch sehr nützlich.
CObject hat ein Ziel - die Typkontrolle. Und es gelingt ihm nur zögerlich. Methoden wie Next(), Prev() usw. sind für sehr spezielle Sammlungen gedacht. Sie gehören nicht zu CObject. Das Gleiche gilt für die Methoden Speichern und Laden. Es wäre auch schön, wenn Comparer nicht dabei wäre, aber dies ist die einzige Lösung ohne Schnittstellen.
Die Methode Type() bietet keine strenge Typisierung, da sie die übliche Zahl zurückgibt. Sie können am Beispiel Ihres eigenen Codes sehen. Sie definieren eine neue Methode GetType(), die den Typ als Aufzählung zurückgibt. Es gibt wirklich keinen anderen Weg, ich mache es selbst. Deshalb muss das Standard-CObject angehängt werden, und das ist falsch.
Lassen Sie uns mit CObject::Compare() fortfahren.
Ich habe ein solches Objekt CFactoryBalanceResultSeries - es handelt sich um eine Serie mit Bilanzergebnissen mit Bezug auf das Factory-Objekt des Expert Advisors. Eigentlich handelt es sich um eine Gleichgewichtskurve in der Historie mit Bezug auf den Expert Advisor, der sie gehandelt hat.
Ich habe also ein Skript, in dem ich diese sehr ausgewogenen Serien vergleiche.
Solange es nur zwei Serien gibt, ist es einfach, sie zu vergleichen. Aber wenn es Dutzende von ihnen gibt, kann man nicht nach Augenmaß vergleichen, sondern braucht einen formaleren Vergleich.
Und nur um diesen Prozess zu automatisieren, musste ich eine Funktion schreiben, die genau diese Serien sortiert. Und hier war es nützlich, denn die Klasse CFactoryBalanceResultSeries ist ein Erbe von CObject mit seiner Vergleichsfunktion. Wenn wir diese Funktion außer Kraft setzen, haben wir eine fertige Möglichkeit, Serien zu sortieren.
So sieht diese Funktion in meinem Fall aus:
Das heißt, je nach Art der Sortierung wählen wir die erforderliche Vergleichsfunktion, die in der allgemeinen Sortierfunktion verwendet wird.
Wenn wir z.B. die Saldenreihe nach dem Anteil der letzten Inanspruchnahme am Maximum sortieren wollen, werden die folgenden Funktionen verwendet:
Ich werde mit CObject::Compare() fortfahren.
Aus der jüngsten
Das ist nicht sehr hübsch, finde ich.
Sie könnten einen Zeiger auf eine Funktion verwenden.
Ja, das ist richtig.
Aber das ist mein seniler "Programmierstil" (hallo, Wolchansky mit seinem jüngsten Thread).
Ich habe alle Aufzählungen - beginnen Sie mit E, und dann "Buckel" Notation - der Name. Und die Typen selbst in der Aufzählung beginnen mit einer Abkürzung (bis zu vier Buchstaben) des Aufzählungstyps.
Da die EMyObjectType-Aufzählung - alle Werte beginnen mit MOT_ - dementsprechend
Ja, ich habe die gleiche Aufzählung.
ZS: Ich bin jetzt gerade am Computer. Wie zu erwarten war, ist dieser Thread schnell in Müll ausgeartet). Ich werde versuchen, die Geschichte über die virtuellen Funktionen später zu beenden. Wir sollten dieses Forum Blah Blah Blah Blah nennen.)
Ich habe die unterschiedlichen Interessen aller gelesen... Ich bin gerade dabei, eine Klasse neu zu gestalten, um ein virtuelles Gitter einzurichten und zu verwalten, ich brauche es.