Die Sprache MQL5 von Grund auf selbst erlernen - Seite 47

 

Vladimir Simakov:

Mein Kumpel sah sich diesen Mist an und sagte: 250 Riesen für mich und je 75 Riesen für meine beiden Dschunken, und in sechs Monaten schreiben wir den Scheiß neu oder werden ihn los.

Dies ist die richtige Entscheidung, wenn man sich die Struktur ansieht, denn mit dem beschriebenen Ansatz wird es immer Probleme mit den Hausärzten geben.

 
MrBrooklin:

Ich habe alle Beiträge über globale Variablen gelesen und verstanden, was die Teilnehmer an dieser Diskussion mir sagen wollten. Ich werde lernen, wie man Programmcode schreibt, ohne globale Variablen zu verwenden. Ich danke Ihnen allen für diese konstruktiven Ratschläge!

Mit freundlichen Grüßen, Vladimir.

Programmierer schrecken vor der Verwendung globaler Variablen zurück, weil bei der Änderung ihrer Werte Fehler gemacht werden können. Dies führt dazu, dass ein Fehler schwer zu lokalisieren ist, da jede Funktion sie verändern kann. Natürlich dürfen nur die Variablen im globalen Bereich existieren, die alle Programmfunktionen sehen müssen. Es kann nicht anders sein.

Ich habe immer gerne globale Variablen verwendet, weil sie ein schnelles Wachstum der Funktionalität sicherstellten, während das Programm zu einer riesigen, aktiven Baustelle wurde. Die Leute werfen mir oft vor, dass ich Code schreibe, aber das ist der Grund, warum es eine Baustelle ist: Man räumt auf, nachdem die grundlegenden Bauarbeiten erledigt sind, und wenn das Haus fertig ist, kann man mit dem Fliesenlegen, Streichen und Aufräumen beginnen. Bis dahin gilt es, die Schalung zu montieren und Beton zu gießen).

Programmierer denken jedoch anders. Sie werden ihren Code "säubern" und "schrubben", auch wenn es nur zweieinhalb Zeilen sind. Sie werden ihren Code schrubben, auch wenn er zweieinhalb Zeilen lang ist, aber er wird glänzen wie eine neue Münze). Diese Einstellung zum Code ist durch ihren Beruf gerechtfertigt, den sie ausüben, aber vom kreativen Standpunkt aus sind sie steif und schlecht entwickelt. So ist das nun mal...

Mein Rat: Lernen Sie, wie man richtig schreibt, aber erlauben Sie sich manchmal, von den Regeln abzuweichen und zu experimentieren, um eine vielfältigere Erfahrung zu machen. Das wird Ihnen das Lernen erleichtern und Sie werden schneller lernen.
 
MrBrooklin:

Ich lerne weiter die Programmiersprache MQL5. Ich füge den überarbeiteten Code des Skripts noch einmal ein und berücksichtige dabei die Tipps der Teilnehmer dieses Threads. Ich habe das Skript in allen Modi getestet. Keine Probleme festgestellt. Zunächst habe ich die minimale Anzahl von Eingabeparametern verwendet. Der Skriptcode ist auf Englisch geschrieben, die Kommentare zum Code sind auf Russisch, damit er leichter zu verstehen ist. Wie ich vorhin versprochen habe, habe ich versucht, das Skript so zu beschreiben, dass es für einen Schüler der 1. Klasse der Programmierschule verständlich ist.

Ich hoffe, ich habe es so gemacht, wie es mir von den Teilnehmern dieses Threads gesagt wurde, aber ich könnte mich irren.

Mit freundlichen Grüßen, Vladimir.

Es ist toll, dass Sie selbst herausgefunden haben, wie und wohin Sie die globale Variable bool enough_time verschieben können. Sie machen Fortschritte.
 
Реter Konow:
Es ist toll, dass Sie herausgefunden haben, wie und wohin Sie die globale Variable bool_timе verschieben können. Sie machen einen großartigen Job.

Ich danke dir, Peter, für deine Unterstützung und Hilfe. Ich habe die globalen Variablen innerhalb der Funktion verschoben, dank der Tipps, die mir zuvor von den Teilnehmern dieses Threads gegeben wurden. Jetzt, wo die Informationen in meinem Kopf geordnet sind, fällt es mir viel leichter, die neuen Dinge zu erfassen.

Mit freundlichen Grüßen, Vladimir.

 

Guten Morgen allerseits und gute Laune!

Liebe Programmierungsexperten! Für alle Hinweise und konstruktiven Ratschläge, die Sie mir geben, möchte ich mich herzlich bedanken!

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Guten Morgen allerseits und gute Laune!

Liebe Programmierungsexperten! Ich möchte mich ganz herzlich für alle Hinweise und konstruktiven Ratschläge bedanken, die Sie mit mir teilen!

Mit freundlichen Grüßen, Vladimir.


Sie sind schnell unterwegs ... :-)
Das liegt an meiner technischen Grundausbildung, wenn ich mich nicht irre...

 
Aleksey Masterov:

Du bist schnell unterwegs... :-)
Das liegt an der technischen Grundausbildung, wenn ich mich nicht irre...

Hallo Alexey, ja, das stimmt, ich habe eine sowjetische technische Hochschulausbildung, die mit der Automatisierung von Prozessen in der Produktion zu tun hat, und Erfahrung als Elektronikingenieur in einer Organisation, die sich zu Sowjetzeiten mit der Reparatur von ECM beschäftigt hat.

Mit freundlichen Grüßen, Vladimir

 
MrBrooklin:

Hallo Alexey! Ja, das stimmt, ich habe eine höhere technische Ausbildung, die mit der Automatisierung von Prozessen in der Produktion verbunden ist, und Arbeitserfahrung als Elektronikingenieur in einer Organisation, die sich zu Sowjetzeiten mit der Reparatur von ECM beschäftigt hat.

Mit freundlichen Grüßen, Vladimir.


Es fällt einem sofort auf, für mich... Das Niveau und die Geschwindigkeit Ihres Fortschritts in dieser "Kunst" der Übersetzung von Fantasien in Code, insbesondere solcher philosophischer Art wie in Ihrem neuesten Skript! :-)
IMHO, wenn Sie in diesem Tempo weitermachen, werden Sie vielen a la Programm-Experten hier unter die Nase reiben ... :-)
Bewerben Sie sich für einen Remote-Job beim MT5 methaquotes Team!!!
 
Vasiliy Sokolov:

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 offensichtlich 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 der funktionalen Programmiersprache Haskell zum Beispiel gibt es 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, eine vollständige Turing-Programmiersprache nur mit Funktionen und ohne Zuweisungen 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, so dass es zumindest nicht weitsichtig ist, Funktionen und die mathematische Grundlage dahinter aufzugeben. Deshalb lege ich so viel Wert auf die Funktionen. Es spielt keine Rolle, wie gut Sie die Array-Struktur verstehen, es spielt keine Rolle, wenn Sie einen Fehler bei einem 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 sind wirklich scheinbar einfach (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 wahrscheinlich später schreiben.

Hallo Vasiliy! Bitte, wenn es Ihnen nicht schwer fällt, schreiben Sie eine Fortsetzung über die Eigenschaften von Funktionen. Für mich, wie auch für andere Anfänger in der Programmierung, ist es sehr wichtig und nützlich zu wissen, dass Funktionen bestimmte Eigenschaften haben müssen und sich auf eine bestimmte Art und Weise miteinander verbinden.

Alle Ihre Nachrichtenblöcke, die sich auf Funktionen beziehen, sind bereits in einem einzigen Word-Dokument für mich gesammelt.

Mit freundlichen Grüßen, Vladimir.

 
Aleksey Masterov:

... Bewerben Sie sich für einen Remote-Job beim MT5 methaquotes Team!!!

Alexej, machst du Witze? Ja, ich möchte zuerst die Grundlagen lernen!

Mit freundlichen Grüßen, Vladimir.