Die Sprache MQL5 von Grund auf selbst erlernen - Seite 29

 
Реter Konow:
Sie haben einen Neuling mit nutzlosen Informationen versorgt.)

Ob die Informationen nützlich sind oder nicht, muss der Anfänger selbst entscheiden

Vasiliy Sokolov:

Gut gesagt, informativ, danke

 
Alexey Viktorov:

Das bedeutet, dass Sie Ihre Begierde nicht auf diese Weise zur Schau stellen sollten. Vladimir hätte genauso gut Fragen zu dieser oder jener Funktion stellen können und nützliche Ratschläge erhalten, anstatt den Unsinn von "Experten" wie C++ lernen oder Assembler lernen. Sie könnten mit dem Studium von Lochkarten beginnen.

Ich bin dafür, dass TC nach seinem Plan studiert und nicht über seinen Kopf hinweg "springt". Alles zu seiner Zeit. Und man muss MQLs lernen, und zwar in der richtigen Reihenfolge, versteht sich. Die oben genannte Philosophie (von Vasily und mir) kann helfen, das Wissen zu strukturieren, aber nicht zu entleeren. Und während der Schüler ganz am Anfang des Lernens steht, muss er versuchen, die Leerheit entsprechend unserer philosophischen Notation zu strukturieren.

Gehen Sie zurück zum Lehrbuch und vergessen Sie den ganzen hochtrabenden Kram für den Moment.
 
Vasiliy Sokolov:

Es geht weiter:

  • Da es viele Ereignisse gibt, gibt es auch viele Ereignisbehandler. Da Ereignisse inkonsistent aufgerufen werden, werden auch ihre Ereignisbehandler inkonsistent aufgerufen. Da die Aufrufe nicht konsistent sind, können die Ereignisbehandler nicht voneinander abhängen, und sie können auch nicht von den Daten des jeweils anderen abhängen. Das einzige Konstrukt, das diese strengen Anforderungen erfüllt, ist eine Funktion.
  • Funktionen können nicht voneinander abhängen. Wenn eine Funktion die Summe a+b zurückgibt und die zweite Funktion das Produkt a*b, dann hängt das Ergebnis dieser beiden Funktionen nicht von der Reihenfolge der Aufrufe ab. Wir können die erste Funktion mit den Argumenten 3 und 5 aufrufen und erhalten 8. Dann rufen Sie die zweite Funktion mit denselben Argumenten auf und erhalten 24. Tauschen Sie dann ihre Anrufe aus. Die Ergebnisse werden die gleichen sein. Die Additionsfunktion gibt bei den Argumenten 3 und 5 immer 8 zurück. Die Multiplikationsfunktion gibt immer 24 mit denselben Argumenten zurück.
  • Aus den obigen Ausführungen wird deutlich, dass der Event-Handler nur eine Funktion sein kann. Tritt ein neues Tick-Ereignis ein, wird dies von der Funktion OnTick behandelt. Wenn das Start-Ereignis (ein einmaliger Start des Skripts) eintritt, wird dies von der speziellen Funktion OnStart behandelt.
  • Diese Funktion ist universell. Diese Funktion kann nicht nur Ereignisse verarbeiten. Die Funktion kann etwas Nützliches zurückgeben, z. B. die aktuelle Uhrzeit. Eine Funktion kann komplexe Berechnungen mit den ihr übergebenen Argumenten durchführen und das Endergebnis dieser Berechnungen als einen einzigen Wert zurückgeben. Schließlich kann eine Funktion auch ein Datenlieferant sein: Sie rufen die Funktion auf und erhalten von ihr die benötigten Daten, wie z. B. Zitate.
  • Intern besteht der MetaTrader aus Tausenden von Funktionen, von denen etwa 1500 Tausend den Benutzern zur Verfügung stehen. Dies sind sehr nützliche Funktionen. Sie ermöglichen es Ihnen, die Systemzeit zu überprüfen und die Daten für ein Instrument, das Sie interessiert, zu erhalten. Die Funktionen werden verwendet, um Handelsaufträge zu senden. Sie können das ICL-Handbuch öffnen und sehen, dass es aus Funktionen und ihren Argumenten besteht. Der MetaTrader ist also, was die Benutzerprogramme betrifft, ein einziger großer Satz von Funktionen.
  • Universelle Funktionen sind nicht genug. Ganz gleich, wie viele neue Funktionen dem System hinzugefügt werden, es wird immer einen Mangel an ihnen geben. Der Grund dafür ist, dass jeder Mensch andere Bedürfnisse hat. Es gibt keine Einheitsgröße, die für alle Gelegenheiten geeignet ist. Die meisten allgemeinen und universellen Funktionen sind bereits im MetaTrader enthalten und werden uns freundlicherweise zur Verfügung gestellt. Die Bedürfnisse der Nutzer sind jedoch endlos. MetaQuotes kann nicht auf die individuellen Bedürfnisse von 100.000 Nutzern ihres Terminals eingehen. Stattdessen haben sie etwas Flexibleres gemacht: Sie lassen die Nutzer die Funktionen, die sie wollen, selbst erstellen. Dies kam den Nutzern zugute. Anstatt eine Systemfunktion zu verwenden, die für sie nicht geeignet ist, können sie ihre eigene Funktion schreiben, die ihr Problem perfekt löst. Keine Systemfunktion ist aufgrund ihrer Universalität perfekt.
  • Die Fähigkeit eines Benutzers, seine eigenen Funktionen zu schreiben und zu verstehen, wie sie funktionieren, zeigt, wie gut ein Programmierer ist. Wenn er/sie versteht, dass ein Programm eine unzusammenhängende Menge von Handlern (in Form von Funktionen) ist, die eingehende Ereignisse nicht konsistent behandeln, ist es gut. Wenn er weiß, wie man seine eigenen Funktionen schreibt, ist das ein weiterer Pluspunkt. Wenn er die Arbeit mehrerer Funktionen (sowohl seiner eigenen als auch der Systemfunktionen) in einem gemeinsamen Algorithmus zusammenfassen kann, ist das ein weiterer Pluspunkt für ihn.
  • Wenn Sie verstehen, dass alles im MetaTrader (der vierte und fünfte) irgendwie auf Funktionen, Funktionen und Funktionen basiert, wird plötzlich alles klar. Die Hilfe wird nicht mehr als dickes Buch mit einem Haufen verstreuter Codeschnipsel präsentiert, sondern als Leitfaden für die verfügbaren Funktionen und ihre Funktionen. Alles andere, wie Datentypen, Arrays, Strukturen, Klassen, ist irrelevant. Es geht darum, Funktionen zu unterstützen, damit sie etwas zurückgeben und etwas annehmen können.

(vorläufig)

Toll!!! Vasily, Sie haben ein natürliches Talent zum Unterrichten. Alles ist klar und verständlich, vor allem für diejenigen, die noch ganz am Anfang stehen. Haben Sie jemals daran gedacht, ein Buch zu schreiben, das dem MQL4 Tutorial von Sergey Kovalev ähnelt, nur dass es jetzt MQL5 Tutorial von Vasily Sokolov heißen würde?

Glauben Sie, dassdieses Thema einen Anreiz für eine solche Initiative bieten wird, Vasily?

Mit freundlichen Grüßen, Vladimir.

 
Vasily lenkt Ihre Aufmerksamkeit nur auf einige bestimmte Aspekte, die er für wichtiger hält als andere. Zum Beispiel, Funktion oder Ereignis. Lesen Sie über Funktionen in der Arbeit von S.Kovalev und Sie werden nicht weniger (und sogar mehr) detaillierte und zugängliche Erklärungen finden, aber ohne sich auf sie zu konzentrieren, zum Nachteil der anderen Bereiche. Deshalb müssen Sie das Lehrbuch lesen.

Ja, Vasiliy hat sehr gut geschrieben, aber es ist ein bisschen "verzerrt" durch sein subjektives Verständnis.

Ich sage nicht: "Lernt von mir, ich weiß, wie man es richtig macht!", ich sage: "Lernt aus einem Lehrbuch und lernt die Grundlagen richtig, nicht meine vorschnell formulierten Vorstellungen von dem, was mich jetzt in dem Fach interessiert".

P.S. Aber das bleibt Ihnen überlassen.
 
Реter Konow:
Vasily lenkt Ihre Aufmerksamkeit nur auf einige bestimmte Aspekte, weil er glaubt, dass diese wichtiger sind als andere. Zum Beispiel, eine Funktion oder ein Ereignis. Lesen Sie über Funktionen von S. Kovalev und Sie werden nicht weniger (und sogar mehr) detaillierte und zugängliche Erklärungen finden, aber ohne sich auf sie zu konzentrieren, zum Nachteil der anderen Bereiche. Deshalb müssen Sie das Lehrbuch lesen.

Ja, Vasiliy hat sehr gut geschrieben, aber es ist ein bisschen "verzerrt" durch sein subjektives Verständnis.

Ich sage nicht: "Lernt von mir, ich weiß, wie man es richtig macht!", ich sage: "Lernt aus einem Lehrbuch und lernt die Grundlagen richtig, nicht meine vorschnell formulierten Vorstellungen von dem, was mich jetzt in dem Fach interessiert".

P.S. Wie auch immer, es liegt an Ihnen.

Und du, Peter, kannst vorschlagen, dass du und Vasily zusammen eine gute Arbeit machen und ein solches Buch über MQL5 schreiben.

DasSchreiben eines Buches ist der beste Weg, um eine Spur in der Geschichte der Menschheit zu hinterlassen, insbesondere in der Geschichte der Programmierung. Denken Sie darüber nach!

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Peter, ich schlage vor, dass Sie und Vasily zusammen eine gute Arbeit leisten und ein solches Buch über MQL5 schreiben.

Ein Buch zu schreiben ist der beste Weg, um in derGeschichte der Menschheit Spuren zu hinterlassen, insbesondere in der Geschichte der Programmierung. Denken Sie darüber nach!

Mit freundlichen Grüßen, Vladimir.

Danke für die Anregung, aber Vasiliy hat mich mit dem klassischen Ansatz, der für ein solches Buch erforderlich ist, leicht überholt". Ich kann nur ein abstraktes Verständnis von Objekt und Umgebung in ihrer dynamischen Interaktion durch das Prisma der Programmierung bieten, aber das wird das letzte Kapitel sein. ))))
 
Реter Konow:
Danke für das Angebot, aber Vasily "schlägt" mich einfach mit einem klassischen Ansatz, was genau das ist, was ich in einem solchen Buch brauche. Ich kann nur ein abstraktes Verständnis von Objekt und Umgebung in ihrer dynamischen Interaktion durch das Prisma der Programmierung bieten, aber das wird das letzte Kapitel sein. ))))

Ich verstehe. Jetzt würde ich gerne wissen, was Vasily über meinen Buchvorschlag denkt.

Im Moment studiere ich seinen Artikel "Universal Trading Expert Advisor: Arbeiten mit Custom Trailing Stops (Teil 6)".

Mit freundlichen Grüßen, Vladimir.

 

Fortgesetzt unter

Aus dem obigen Beitrag ging klar hervor, dass der Schwerpunkt auf den Funktionen lag. Alles war ihnen gewidmet und nichts als ihnen. Man könnte meinen, dass es sich hierbei um eine offensichtliche subjektive Voreingenommenheit oder eine obskure "Philosophie" handelt. Hier gibt es jedoch keine Philosophie. Und diese Aufmerksamkeit für die Funktionen ist nicht zufällig. Der Punkt ist, dass bei der Programmierung die Funktion von grundlegender Bedeutung ist. Außerdem ist die Funktion ein sehr wichtiger und grundlegender Begriff in der Mathematik. In den 20er Jahren des letzten Jahrhunderts entwickelte Alonzo Church ein auf Funktionen basierendes Kalkülsystem. Dies wurde Lambda-Kalkül genannt. Dieses System formalisierte den Begriff der Berechenbarkeit und schuf eine enge Verbindung zwischen Computerberechnungen und Mathematik. Die führenden Programmierer der Welt entwickelten so genannte funktionale Programmiersprachen auf der Grundlage des Lambda-Kalküls, in denen Funktionen die Hauptrolle spielen. In einer funktionalen Haskell-Programmiersprache gibt es zum Beispiel nicht einmal eine for-Schleife oder etwas Ähnliches. Stattdessen wird vorgeschlagen, eine Funktion auf besondere Weise rekursiv aufzurufen, um den gewünschten Wert zu berechnen. Es kann bewiesen werden, dass es möglich ist, mit nur Funktionen und ohne Zuweisung eine vollständige Turing-Programmiersprache zu schreiben. Dies ist eine Sprache, die es erlaubt, alles zu schreiben, was in jeder anderen Turing-kompletten Sprache möglich ist, wie z.B. prozedurale oder OOP-Sprachen.

MQL ist keine funktionale, sondern eine prozedurale Sprache, erweiterbar durch Klassen, mit strenger Typisierung und reichhaltiger subjektorientierter API (in Form der gleichen Funktionen, oh Überraschung). Andererseits basiert die Funktionstheorie auf einer soliden mathematischen Grundlage und bietet einfache und effektive Muster für die Verwendung jeder Programmiersprache, in der es Funktionen gibt. Deshalb lege ich so viel Wert auf die Funktionen. Es spielt keine Rolle, wie gut Sie das Array-Design verstehen oder ob Sie einen Fehler bei einem bestimmten Datentyp machen. Dies kann schnell behoben werden. Aber wenn Sie nicht verstehen, wie Funktionen funktionieren und wie sie zusammenhängen, werden Sie nicht einmal ein durchschnittlicher Programmierer werden.

Um also zu lernen, wie man normalerweise prog, d.h. linear über die Zeit, die Funktionalität Ihres Programms erweitert, müssen Sie Folgendes lernen:

  • Stellen Sie das Ereignismodell von MetaTrader 4.5 eindeutig (wenn auch nicht gründlich, aber eindeutig notwendig) dar.
  • Wissen, wie man mit den Systemfunktionen arbeitet. Fassen Sie ihre Ergebnisse in ihren eigenen Funktionen zusammen. Kombinieren Sie die Aufrufe von Systemfunktionen in Ihre eigenen Funktionen.
  • Die Fähigkeit und Lust, eigene Funktionen zu schreiben.
  • Funktionsaufrufketten verstehen können: z. B. wenn die Funktion a() die Funktion b(), b() die Funktion c() und e() die Funktion c() aufruft.
  • Wissen, wie man saubere Funktionen schreibt, und verstehen, warum man saubere Funktionen schreiben sollte. Ich werde später erklären, was eine reine Funktion ist.

Die Funktionen scheinen einfach zu sein. "Was gibt es da zu lernen. Sie müssen hier nur einen Absatz lesen, das ist alles. Und dann Arrays, für, während..." - Nein, das sind sie nicht. Die Funktionen scheinen einfach zu sein (und das ist gut so). Damit sie aber wirklich effizient Aufgaben lösen können, müssen die Funktionen bestimmte Eigenschaften haben und auf eine bestimmte Weise miteinander kombiniert werden. Wie man das alles macht, werde ich vielleicht später schreiben.

 
MrBrooklin:

Ich verstehe. Jetzt würde ich gerne wissen, was Vasily über meinen Buchvorschlag denkt.

Ich studiere gerade seinen Artikel "Universal Trading Expert Advisor: Arbeiten mit Custom Trailing Stops (Teil 6)".

Mit freundlichen Grüßen, Vladimir.

Nein. Es wird kein Buch geben. Vielleicht einige Artikel. Aber mit Sicherheit nicht in nächster Zeit.

 
MrBrooklin:

Peter, ich kann Ihnen und Vasily vorschlagen, gemeinsam eine gute Arbeit zu leisten und ein solches Buch über MQL5 zu schreiben.

Das glaube ich nicht. Meine Ansichten mit Peter und mir sind zu unterschiedlich. Sie können einen Blick auf einige unserer Codes werfen, um zu sehen, wie unterschiedlich sie sind).