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
Handelt es sich um einen reinen Testkurs oder werden Sie ihn wirklich nutzen?
Diezweite, ich schreibe sowieso unter MT4, auch für mich selbst - es funktioniert nicht in den Tester für ein paar Symbole, wenn ich etwas Nützliches in MT4 sehen, werde ich auf MT5 mit MT4Orders wechseln - ich habe meine "kreative Arbeit" ohne Probleme mit dieser Bibliothek überprüft
zuerst möchte ich die Idee eines richtigen OOP sehen - deshalb teste ich es, um zu sehen, was dabei herauskommt, bisher läuft es ziemlich chaotisch.... Wir werden sehen, ich habe Zeit. Hier ist das Ladegerät, das ich mir selbst gebaut habe ))))
Ich weiß, es ist nicht der beste Weg, um vor dem Start des Hauptcodes zu initialisieren, oder eher ich verwendet, um so zu denken, aber ich habe es nie überprüft, egal wie viele neue Builds ich hatte - in MQL ist alles immer verfügbar, auch auf globaler Sichtbarkeit Ebene, ich sah die Quellen Leute gehen direkt an die Spitze und schreiben es so:
und diese ungültigen Initialisierungen funktionieren seit Jahren von Build zu Build. Also haben die Entwickler die Leute bis auf die Knochen verwöhnt ))))
SZZY: hier im Allgemeinen, wie immer bei der Verwendung von OOP - die Hauptsache ist, das Problem richtig in komplexe Elemente zu unterteilen und nicht von allem zu erben. Ich weiß nicht, wo die Textausgabe von Fehlern "setzen" - es muss überall, in jeder Klasse und an jeder Stelle des Programms, höchstwahrscheinlich müssen Sie eine Basisklasse erstellen, wie@Vladimir Simakov oben seinen Code zeigte
pp 1-3 alles lösbar, ABER... OK, hier mit der Statik geholfen, lassen Sie es so sein, weil es eine Hilfe ist, zumindest etwas, um seine Entscheidung zu rechtfertigen, jetzt der Code ist die folgende:
3 Instanzen von Cdeal erstellt, in das Protokoll aufgenommen:
...
Bis jetzt funktioniert alles wie vorgesehen!
Aber trotzdem war Ihre ursprüngliche Version besser. Opfern Sie nicht die Zuverlässigkeit, um eine Zeile Code zu sparen)
Welche? - Ich habe das halbe Thema in meinen Variationen ))))
aber ja, du hast hundertprozentig recht!
SZY:
der einfachste und zuverlässigste Weg - erstellen Sie eine Instanz der Klasse über neue in OnInit() - und kopieren Sie alle Terminal-Umgebungsvariablen sofort, aber es ist nicht der beste Weg - wenn ich plane, einen Auftrag sofort beim Start des Konstruktors in diesem Beispiel zu öffnen, dann wird diese Instanz der Klasse wahrscheinlich gelöscht und dann möglicherweise neu erstellt - dies bringt bereits einige Probleme wegen der wiederholten Aufrufe - ich fange an, das Terminal erneut zu laden, wieder verschwenden Speicher.... im Allgemeinen ist es auf diese Weise nicht lösbar
ZZZY: vielleicht einen weiteren Tag mit Experimenten, und schließlich nehmen Sie@Vladimir Simakov Beispiel - alles ist sehr klar dort
Ich habe meine Klasse skizziert, die Felder einmal mit konstanten Werten initialisieren soll, und es scheint wie vorgesehen zu funktionieren:
Ich mag 2 Dinge nicht:
1. ich wiederhole den Aufruf von SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP) - weil die Reihenfolge der Initialisierung nicht festgelegt ist, d.h. es ist nicht sicher, dass VolumeSTEP zuerst initialisiert wird und erst dann GetDigitsInVolumeStep() aufgerufen wird
2. ich möchte die statische Methode static int GetDigitsInVolumeStep() loswerden - ich habe ein Video auf youtube gesehen, in dem gesagt wird, dass man in reinem OOP keine statischen Methoden verwenden sollte, und jetzt kämpfe ich gegen Windmühlen
der Link zum Video, es ist im Wesentlichen das gleichehttps://youtu.be/lfdAwl3-X_c undhttps://youtu.be/zME4SOCHT0I
Wie kann ich diese 2 Punkte, die mir nicht gefallen, umformulieren?
1. Es ist nicht schlimm, diese Funktion zweimal aufzurufen.
2. verwirrt es Sie nicht, dass diejenigen, die gegen die Verwendung statischer Funktionen sind, nicht das geringste Argument anführen?
Schauen Sie sich lieber nicht irgendwelche Videos an, sondern lesen Sie Bücher.
2. Sind Sie nicht verwirrt, dass diejenigen, die gegen die Verwendung statischer Funktionen sind, nicht das geringste Argument anführen?
Und Sie sind der erste, der mich darin unterstützt, dass das Video nichts mit der Praxis zu tun hat, ich habe in einem anderen Thread meine Meinung über das Video geschrieben - der Sprecher konnte nicht einmal die Fragen der Schüler beantworten
und du bist der erste, der mir bestätigt, dass das Video nichts mit der Praxis zu tun hat. Ich habe in einem anderen Thread meine Meinung über das Video geschrieben - der Reporter konnte nicht einmal die Fragen der Schüler beantworten
Ich glaube nicht, dass es bei OOP darum geht, die eigenen Fähigkeiten einzuschränken, um blindlings den unbegründeten Postulaten einiger Internet-Mundstücke zu folgen, wo jeder auf seine Weise fegt.
Ich glaube nicht, dass OOP die Reduzierung der eigenen Fähigkeiten bedeutet, um blindlings den unbegründeten Postulaten einiger Internet-Mundstücke zu folgen, wo jeder auf seine Weise fegt.
Wenn Sie das Video gesehen haben, sollten Sie verstehen, dass das Ziel .... ist. Nun, im Allgemeinen verstehst du auch nichts und bist noch nicht reif genug - so hat es mir zumindest A100 erklärt
SZZ: Ich werde später noch ein wenig mit den Schnittstellen experimentieren, vielleicht erscheint dann eine "Entity-Schönheit" ))))
Ich habe mir sein Video über Statik angesehen, nur um so zu schreiben:
Nun, einen Wrapper über eine Statik zu schreiben ist ein Problem, nicht wahr?
class Stateless_with_state { Stateless q; Data d; call() {q::call(d);} };
Und durch Vorlagen ist die Effizienz deutlich höher. Die Frage aus dem Publikum hat mir gefallen https://www.youtube.com/watch?v=75U9eefFYoU#t=33m25s
ZS: Ich werde später noch ein wenig mit den Schnittstellen experimentieren, vielleicht erscheint dann eine "Entity-Schönheit" ))))
Geprüft, ob "OOP-Muster - Verhaltensmuster - Strategie" funktionieren wird
2019.08.31 21:04:40.441 tst (EURUSD,H1) Strategie_1::Strategie_1
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategie_1::Algorithmus
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategie_2::Strategie_2
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategie_2::Algorithmus
Funktioniert meiner Meinung nach ohne Probleme
geprüft, ob das "OOP-Pattern - Behavioural Patterns - Strategy (Strategie)" funktionieren wird
2019.08.31 21:04:40.441 tst (EURUSD,H1) Strategie_1::Strategie_1
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategie_1::Algorithmus
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategie_2::Strategie_2
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategie_2::Algorithmus
funktioniert bei mir ohne Probleme
Der new-Operator gibt einen Zeiger zurück. Natürlich haben die Entwickler bei der impliziten Dereferenzierung Mist gebaut und deshalb funktioniert Ihre Version, aber ich möchte mich nicht an undokumentierten Dingen aufhängen.
2. Es ist sicherlich nicht C++, aber es ist sehr ähnlich, so dass Initialisierungslisten (ich weiß nicht, ob sie effizient sind) koscher sind.