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
Igor, der Wunsch, die Sprache MQL5 zu erlernen, ist nicht verloren, im Gegenteil, er wird nur noch stärker. Ich bin nur hin- und hergerissen, warum ich so dumm bin und einfache Dinge mit diesem Schleifenoperator nicht verstehe. Die Hauptsache ist, dass der Code ohne den Schleifenoperator perfekt funktioniert, aber mit der Schleife ist es ein völliges Durcheinander. Ich werde der Sache trotzdem auf den Grund gehen. Allerdings habe ich viel weniger Zeit für das Selbststudium, seit die Quarantänezeit vorbei ist und ich bei der Arbeit nur noch selten Zeit habe, die Sprache zu lernen. Meistens lerne ich die Sprache am Abend und spät in der Nacht.
Ich muss 2 Aufgaben lösen, um endlich den Trailing-Stop-Code schreiben zu können:
Vladimir, du gerätst in eine seltsame Situation. Sie haben eine Vorlage erhalten: https://www.mql5.com/ru/forum/352460/page58#comment_18726492 Sie haben sie ignoriert und beschlossen, mit Ihrem Verstand weiterzumachen. Dieser Weg ist schwierig und kann Jahre dauern. Unterwegs lernen Sie C, C++, Rust, C#, Polymorphismus, Vererbung, Dereferenzierung von Zeigern, dynamische Typkonvertierung: Prüfen oder fahren. Sie müssen den kürzesten Weg zum Ziel nehmen. Wenn Sie einen Nachsatz wollen, schreiben Sie einen Nachsatz. Sie müssen dafür nicht C und C++ studieren. Das alles als Wahlfach, wenn Sie Lust dazu haben.
Die Situation mit der for-Schleife ist anschaulich. Es handelt sich um eine leistungsfähige Konstruktion, die an der richtigen Stelle eingesetzt werden muss. Sie haben Netting und einen Hilfsalgorithmus. Deshalb gibt es keine Aufzählung von Positionen, es gibt keine Magier, also gibt es diese Schleife nicht. Natürlich funktioniert alles auch ohne, aber die Schleife sorgt nur dafür, dass man sich wie Öl fühlt. Aber man versucht hartnäckig, es zu nutzen, es scheint ein Selbstzweck zu sein: so viel und so viel wie möglich zu nutzen, so viel wie möglich zu haben.
Vladimir, du gerätst ein wenig in einen Trott. Sie haben eine Vorlage erhalten: https://www.mql5.com/ru/forum/352460/page58#comment_18726492. Sie haben sie ignoriert und beschlossen, mit Ihren Gedanken weiterzumachen. Dieser Weg ist schwierig und kann Jahre dauern. Unterwegs lernen Sie C, C++, Rust, C#, Polymorphismus, Vererbung, Dereferenzierung von Zeigern, dynamische Typkonvertierung: Prüfen oder fahren. Sie müssen den kürzesten Weg zum Ziel nehmen. Wenn Sie einen Nachsatz wünschen, schreiben Sie einen Nachsatz. Sie müssen dafür nicht C und C++ studieren. Das alles als Wahlfach, wenn Sie Lust dazu haben.
Die Situation mit der for-Schleife ist anschaulich. Es handelt sich um eine leistungsfähige Konstruktion, die an der richtigen Stelle eingesetzt werden muss. Sie haben Netting und einen Hilfsalgorithmus. Deshalb gibt es keine Aufzählung von Positionen, es gibt keine Magier, also gibt es diese Schleife nicht. Natürlich funktioniert alles auch ohne, aber die Schleife sorgt nur dafür, dass man sich wie Öl fühlt. Aber Sie versuchen hartnäckig, es zu verwenden, so dass es ein Selbstzweck zu sein scheint: Sie können so viel wie möglich von allem, was Sie auf Lager haben, verwenden.
Hallo, Wassili!
Vielen Dank, dass Sie sich rechtzeitig in das Thema eingearbeitet haben und mich wie immer auf den richtigen Weg geführt haben. Lassen Sie mich nun alles in einer Reihenfolge erklären:
Vasily, ich bin Ihnen sehr dankbar für Ihre Beratung und konstruktive Kritik! Mein Dank gilt auch allen Teilnehmern dieses Themas, die mir bei meinem Selbststudium der Programmiersprache MQL5 von Grund auf geholfen haben.
Das Selbststudium geht weiter. Fortsetzung folgt.
Mit freundlichen Grüßen, Vladimir.
Guten Tag zusammen!
Wenn ich noch etwas Interessantes hinzufügen wollte, so halte ich die Idee des "Selbsttrainings in MQL5 von Grund auf" für nicht ganz richtig. Wenn eine Person 0 in der Programmierung ist, muss sie zuerst lernen, wie man programmiert. Wenn das Ziel ist zu lernen, wie man in MQL von Grund auf zu programmieren, muss eine Person zuerst lernen, wie manin C zu programmieren, zumindest die Grundlagen, und dann lernen, in MQL zu schreiben, weil MQL ist in der Tat C, aber es ist für eine bestimmte Aufgabe spezialisiert, eine Person nicht verstehen, wie Schleifen arbeiten, und bereits versuchen, Programme zu schreiben. Das ist, als würde man versuchen, Latein zu lernen, ohne Russisch zu können...
Ein weiterer Punkt ist, dass C keine sehr freundliche Sprache ist, um das Programmieren zu lernen, sie ist zwar einfach, aber zu prägnant, es ist schwierig für einen Anfänger, den Code zu lesen und zu verstehen, ohne ein Grundverständnis von Algorithmen, Datentypen und Boolescher Algebra zu haben. In C können drei Zeichen in einer Reihe mehrere Strings in einer anderen Sprache bedeuten.
Um einfach von Grund auf programmieren zu lernen, für die Basis, um zu lernen, mit einem Computer in einer (egal welcher) Sprache zu sprechen, würde ich empfehlen, mit Pascal zu beginnen, das einfachste Buch, um damit zu beginnen (2-3 Wochen mit Leichtigkeit), dann C (dort nach Pascal max Woche mit Fleiß, beherrschen die Syntax, ich meine die grundlegenden Sprachkenntnisse!) und dann auf spezialisierte Sprachen wie MQL zurückgreifen, denn MQL ist C, das eine kleine Wendung und Vereinfachung aufweist, da es für eine einzige Aufgabe konzipiert ist und der Compiler das Offensichtliche kennt. Und C wiederum ist eine Art RAR-komprimiertes Pascal, aber Pascal ist fast Englisch =).
Nun zu den Schleifen:
Als ich das Programmieren lernte, half mir die Analogie zu den Summen in der Algebra, wo man den Anfangswert von n, den Endwert von n und die Formel mit diesem n angibt, um zu rechnen.
Hallo Andrey, ich stimme mit dir völlig überein, was die Grundlage betrifft. Ich habe es nicht und hatte es nie. Aber wie man so schön sagt: Moskau wurde nicht auf einmal gebaut! Ich danke Ihnen für Ihre Ratschläge und Tipps!
Mit freundlichen Grüßen, Vladimir.
Ja, ich stimme zu - seine Codes sind auch gut! Du regst dich wegen nichts auf. Nehmen Sie sich die Zeit, den Code zu sortieren, ohne zu hetzen, und das war's. Hier ist eine elementare Sache hier - wählen Sie und trawl: (wie viel einfacher - nur Ihr Thema der Auswahl der NEED Position... :-))
Abgesehen davon bedeuten Include-Dateien, dass sie auch als Funktionen in Ihrem Code enthalten sind, und das war's.
Danke, Roman, für die Codes und Links! Ich gehe mit den Codes ruhig um und habe es sicher nicht eilig!
Mit freundlichen Grüßen, Vladimir.
Guten Tag und gute Laune allerseits!
Ich studiere weiterhin die Programmiersprache MQL5 . Wie versprochen poste ich heute, damit alle den Code der Expert Advisor- Vorlage sehen können, die zum Schreiben eines Trailing-Stops entwickelt wurde. Da sich der EA-Template-Code als ziemlich umständlich herausstellte, mussten wir die Kommentare so weit wie möglich reduzieren. Die Vollversion des Expert Advisors mit detaillierten Kommentaren zu jeder Codezeile, in einer Präsentation, die einem Schüler der 1. Klasse einer Programmierschule zugänglich ist, wird später in Form einer Datei mit dem Arbeitsnamen Trailing_Stop.mq5 veröffentlicht um auf der Baustelle kein weiteres "Fußtuch" zu produzieren.
Vor der Veröffentlichung des Codes wurde der EA im Strategietester getestet. Es wurden keine Probleme festgestellt. Der EA verwendet ein Netting-Positionsabrechnungssystem. Dieses Abrechnungssystem impliziert, dass es auf dem Konto zu einem Zeitpunkt nur eine offene Position für dasselbe Symbol (Finanzinstrument) geben kann.
Im Moment hat der EA folgende Möglichkeiten:
Darüber hinaus verfügt der EA über eine vorinstallierte Vorlage, die freundlicherweise von Vasily Sokolov zur Verfügung gestellt wurde und die während des Selbstlernprozesses mit Code gefüllt wird.
EINE WARNUNG!!!
Der Expert Advisor wird nach dem Selbststudienplan für ein Demokonto und nur für Bildungszwecke entwickelt! Nicht für den Handel mit einem echten Konto und die Erzielung von Gewinn gedacht!
Mit freundlichen Grüßen, Wladimir.
Guten Tag und gute Laune an alle!
Ich lerne weiter die Programmiersprache MQL5. Gestern habe ich den Code für Stop Loss at Breakeven für Sell- und Buy-Positionen geschrieben. Ich füge den Code noch unkommentiert ein. Ich werde die Vollversion des Expert Advisors mit einer detaillierten Beschreibung jeder einzelnen Codezeile in einer für Schüler des 1. Schuljahres der Programmierschule zugänglichen Form später in der Datei mit dem Arbeitstitel Trailing_Stop.mq5 veröffentlichen. Vor der Veröffentlichung des Codes haben wir die Leistung des Expert Advisors im Strategietester überprüft. Es wurden keine Probleme festgestellt.
Mit freundlichen Grüßen, Vladimir.
Guten Tag und gute Laune an alle!
Ich lerne weiter die Programmiersprache MQL5. Heute, wie versprochen, füge ich den Code der Vorlage meines Expert Advisors ein, der für das Schreiben eines Trailing Stops entwickelt wurde. Da der Code der EA-Vorlage recht umständlich ist, musste ich die Kommentare so kurz wie möglich halten. Die vollständige Version des Expert Advisors mit detaillierten Kommentaren zu jeder Zeile des Codes, in einer Form, die einem Schüler der 1. Klasse zugänglich ist, wird später als Datei mit dem Arbeitsnamen Trailing_Stop.mq5 veröffentlicht, um eine weitere Verunreinigung der Website zu vermeiden.
...
Sehr gut. Der Grundgedanke wird gut erfasst. Besonders gut gefällt mir der Entwicklungsprozess:
Guten Tag und gute Laune an alle!
Ich lerne weiter die Programmiersprache MQL5. Gestern habe ich den Code für Stop Loss at Breakeven für Kauf- und Verkaufspositionen geschrieben.
D.h. alles ist korrekt. Sie müssen das Problem nicht auf einmal an einem Ort lösen. Sie sollten es nach und nach lösen, so wie Sie es getan haben. Zunächst beschreiben Sie die grundlegende Logik in der OnTick-Funktion und grundlegende Funktionen wie OpenBUY, OpenSELL, TickUP, TickDown.
Wenn dieser grundlegende Code fehlerfrei ist, kompiliert wurde und im Rahmen seiner Möglichkeiten funktioniert, beginnen Sie mit der Beschreibung der anderen Funktionen. Dies kann am nächsten Tag oder sogar eine Woche später geschehen. Das bedeutet, dass Sie den Hauptcode nicht ändern müssen. Ich denke, Sie können verstehen, warum.
Nun müssen Sie diese Art der Entwicklung verfeinern: Schreiben Sie weiterhin Funktionen und verknüpfen Sie diese mit dem bestehenden Code. Das vorhandene Programm sollte korrekt funktionieren. Die Komplexität sollte nicht zunehmen. Die hinzuzufügenden Funktionen müssen einfache und klare Ergebnisse liefern. Ihre Namen sollten für Sie einfach und klar sein. Wenn Sie das nicht können, liegt es vielleicht daran, dass Sie nicht nur eine, sondern zwei oder sogar drei Funktionen schreiben müssen, um das Problem zu lösen. Der Gesamtrahmen der Anwendung ist anfangs schwer zu definieren. Deshalb ist es besser, wenn Sie sich von erfahrenen Kollegen beraten lassen. Mit der Zeit werden Sie lernen, solche Vorlagen selbst zu entwickeln.
Im Laufe der Zeitwerden Sie immer mehr Sprachkonstrukte innerhalb von Funktionenverwenden müssen, um sie an Ihre Bedürfnisse anzupassen.An diesem Punkt werden Sie schrittweise und vor allem organisch Ihr Wissen über Sprachkonstrukte erweitern, Schleifen, Arrays und sogar die Arbeit mit Zeigern lernen.
Den schwierigsten Teil des Programmierens haben Sie bereits gelernt, auch wenn Sie das Gelernte noch nicht gefestigt haben. Alles, was Sie jetzt noch tun müssen, ist, es viele Male zu wiederholen, um es zu festigen. Von hier aus gibt es nichts grundlegend Neues, alles ist gleich: Allgemeine Vorlage -> Beschreibung der Namen der Funktionen und ihrer Parameter-> Schreiben der Inhalte dieser Funktionen -> Anordnung dieser Funktionen in der zentralen Einheit. Das war's. Alles, was bleibt, ist, die Fähigkeit zu perfektionieren und beständig zu sein. Verschiedene zusätzliche Konstruktionen, die Sie verwenden, wie Schleifen und Arrays, sind nur Details, manchmal clever gemacht, aber nichts weiter als Details.
Da es keine Grenzen der Perfektion gibt, werde ich noch ein paar Kommentare zum Code hinzufügen:
Ich habe zwei nicht-triviale Stellen gelb markiert.
1) Beachten Sie, dass der Code im ersten if und im nächsten else wiederholt wird. Der einzige Unterschied besteht in der letzten Zeile und der Endaktion (OpenBUY, OpenSell).
2) Die Bedingungen, um in den else-Block zu gelangen, sind nicht offensichtlich. Sie sind nicht sichtbar, weil die vielen ? Tatsächlich hängen sie nur von der letzten Zeile ab:
Dies ist ein sicheres Zeichen dafür, dass hier eine Funktion fehlt.
Wir müssen eine Funktion schreiben, die true zurückgibt, wenn der Zeitpunkt der Positionseröffnung mit dem angegebenen übereinstimmt (ich werde sie später schreiben)
Sehr gut. Der wichtigste Punkt ist richtig erfasst. Besonders gefallen hat mir der Entwicklungsprozess:
Das heißt, alles ist richtig. Sie müssen das Problem nicht auf einmal an einem Ort lösen. Sie tun es schrittweise, so wie es in Ihrem Fall geschehen ist. Zunächst beschreiben Sie die grundlegende Logik in der OnTick-Funktion und grundlegende Funktionen wie OpenBUY, OpenSELL, TickUP, TickDown.
Wenn dieser grundlegende Code fehlerfrei ist, kompiliert wurde und im Rahmen seiner Möglichkeiten funktioniert, beginnen Sie mit der Beschreibung der anderen Funktionen. Dies kann am nächsten Tag oder sogar eine Woche später geschehen. Das bedeutet, dass Sie den Hauptcode nicht ändern müssen. Ich denke, Sie können verstehen, warum.
Nun müssen Sie diese Art der Entwicklung verfeinern: Schreiben Sie weiterhin Funktionen und verknüpfen Sie diese mit dem bestehenden Code. Das vorhandene Programm sollte korrekt funktionieren. Die Komplexität sollte nicht zunehmen. Die hinzuzufügenden Funktionen müssen einfache und klare Ergebnisse liefern. Ihre Namen sollten für Sie einfach und klar sein. Wenn Sie das nicht können, müssen Sie vielleicht nicht eine, sondern zwei oder sogar drei Funktionen schreiben, um das Problem zu lösen.
Damit eine Funktion die ihr zugedachten Aufgaben erfüllen kann,müssen Sie mit der Zeit immer mehr Sprachkonstrukte in solchen Funktionen verwenden. Dabei werden Sie schrittweise und vor allem organisch Ihre Kenntnisse über Sprachkonstruktionen erweitern, Schleifen, Arrays und sogar die Arbeit mit Zeigern lernen.
Hallo, Wassili! Vielen Dank für Ihre rechtzeitigen Vorschläge und Ihre Unterstützung. Ihre Kommentare über die Rolle der Funktionen und die Prinzipien der Programmcodekonstruktion haben mir beim Erlernen der Programmiersprache MQL5 sehr geholfen:
Jetzt, da die Informationen in meinem Kopf strukturiert sind, ist es einfacher, den Code zu verstehen, der nicht nur von mir, sondern auch von anderen Programmierern geschrieben wurde. Ich hoffe, dass dieses Thema eine gute Hilfe für diejenigen sein wird, die die MQL5-Programmiersprache von Grund auf erlernen wollen.
Mit freundlichen Grüßen, Vladimir.