![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
Ich habe eine Standardvorlage erstellt. Hier habe ich angefangen, den Code zu schreiben, und hier habe ich begonnen, die bereits geschriebenen Fragmente zu veröffentlichen. Ich habe noch nicht über den Algorithmusrahmen mit meinen eigenen Funktionen nachgedacht, danke für den Tipp! Danke auch für den Tipp mit dem Verrechnungskonto!
Es gibt eine solche Technik aus der Alphabetisierungsprogrammierung - sie ermöglicht es, sehr schnell und verständlich zu schreiben.
Schreiben Sie im Allgemeinen in literarischem Stil in die Kommentare, was Sie tun werden (nur die wichtigste direkte Folge)
// тралим стоп-лосс единственного ордера по сигналу от тиков
// прим.) трал - подтягиваем стоп-лосс следом за ценой,
void TrallOnTick() {
// берём рыночный ордер (для 5-ки позицию)
// смотрим сколько пунктов от текущей цены до стоп-лосс
// если больше чем требуемая дистанция
// переносим стоп-лосс
}
Im Grunde alle. Außerdem schreiben Sie nach jedem Kommentar einen Code von 3-5 (im Allgemeinen etwas) Zeilen. Ihre gesamte Funktion sollte von Anfang bis Ende in den Bildschirm passen, den Sie sehen. Wenn Sie mehr erhalten, bedeutet dies, dass die Fragmente in separate Funktionen/Methoden aufgeteilt werden müssen.
Wenn eine so elementare Sache im Tester zu funktionieren beginnt, kann man verallgemeinern, Bedingungen aus dem wirklichen Leben hinzufügen, z.B. Schrittwechsel oder Frequenz, Marktbedingungen berücksichtigen, der Perfektion sind keine Grenzen gesetzt...
abstrakt gibt es eine Alphabetisierungsmethode, mit der man sehr schnell und deutlich schreiben kann.
Schreiben Sie im Allgemeinen in literarischem Stil in die Kommentare, was Sie tun werden (nur die wichtigste direkte Folge)
// тралим стоп-лосс единственного ордера по сигналу от тиков
// прим.) трал - подтягиваем стоп-лосс следом за ценой,
void TrallOnTick() {
// берём рыночный ордер (для 5-ки позицию)
// смотрим сколько пунктов от текущей цены до стоп-лосс
// если больше чем требуемая дистанция
// переносим стоп-лосс
}
Im Grunde alle. Außerdem schreiben Sie nach jedem Kommentar einen Code von 3-5 (im Allgemeinen etwas) Zeilen. Ihre gesamte Funktion sollte von Anfang bis Ende in den Bildschirm passen, den Sie sehen. Wenn Sie mehr erhalten, bedeutet dies, dass die Fragmente in separate Funktionen/Methoden aufgeteilt werden müssen.
Wenn eine so elementare Sache im Tester zu funktionieren beginnt, kann man sie verallgemeinern, Bedingungen aus dem wirklichen Leben hinzufügen, z.B. Schrittwechsel oder Frequenz, Marktbedingungen berücksichtigen, der Perfektion sind keine Grenzen gesetzt...
Hallo Maxim, du bist sehr hilfreich mit deinem Tipp! Ich sitze hier und frage mich, wie man eine Standard-EA-Vorlage ausfüllt.
Mit freundlichen Grüßen, Vladimir.
Liebe Programmierungsexperten!
Bitte erläutern Sie zwei Fragen:
Vielleicht habe ich ein falsches Verständnis von der Anwendung der Magischen Zahl in der Programmierung.
Mit freundlichen Grüßen, Vladimir.
Wenn ein Auftrag zur Ausführung angenommen wird, werden alle seine Merkmale (Symbol, Zeit, Auftragsart, Ticket) vom Terminal zugewiesen (vom Benutzer angefordert und vom Terminal zugewiesen) und nicht vom Benutzer. Das Gleiche gilt für die Position, die Informationen über ihre Aufträge speichert, von denen es jedoch viele geben kann. Und die magische Zahl ist eine Benutzerkennung. Zitat:
Wenn wir einen neuen schwebenden Auftrag erstellen, müssen wir ihn irgendwie kennzeichnen - damit das Programm weiß, dass dieser bestimmte Auftrag von NAMI für diesen bestimmten schwebenden Auftrag erteilt wurde - das heißt, wir müssen einen Auftrag oder eine Position eindeutig identifizieren und mit einem bestimmten schwebenden Auftrag verknüpfen.
NAMI fehlt in seiner Bedeutung. Und dann gibt Artem die Klassifizierung der Aufträge in die Magik-Nummer ein. Warum nicht, die ersten 2 Ziffern geben etwas an, z.B. die Auftragsart, die nächsten 4 Ziffern geben das Datum des Auftrags an.
In Bezug auf den Algorithmus von etwas. Legen Sie zunächst die Anfangsbedingungen fest. Es gibt Aufträge, die auf unserem Symbol stehen und die wir nicht berücksichtigen oder die wir berücksichtigen. Ohne Anfangsbedingungen Nacharbeit bei der Erstellung des Algorithmus, und noch mehr so kann der Code ewig sein)
abstrakt gibt es eine Alphabetisierungsmethode, mit der man sehr schnell und deutlich schreiben kann.
Schreiben Sie in den Kommentaren, was Sie tun werden (nur die wichtigste direkte Sequenz) ...
... Im Grunde alle. Als Nächstes schreiben Sie nach jedem Kommentar 3-5 (im Allgemeinen nicht viel) Zeilen Code. Die gesamte Funktion vom Anfang bis zum Ende sollte in den Bildschirm passen, den Sie sehen. Wenn Sie mehr erhalten, bedeutet dies, dass Sie die Fragmente in separate Funktionen/Methoden aufteilen müssen.
Maxim, bitte überprüfen Sie, ob ich Ihren Hinweis richtig verstanden habe, oder gibt es noch etwas, das ich hinzufügen muss? Ich meine den Testteil, denn ich habe die Codes noch nicht geschrieben.
Mit freundlichen Grüßen, Vladimir.
Maxim, bitte sehen Sie nach, ob ich Ihren Hinweis richtig verstanden habe, oder gibt es noch etwas, das ich hinzufügen muss? Ich meine den Testteil, abgesehen von den Codes.
Mit freundlichen Grüßen, Vladimir.
Ausgangsbedingungen. Wir berechnen, dass es eine Position auf unserem Symbol gibt, und wir sehen sie auf dem Chart.
Wenn wir eine Position haben, ist es nur eine, entweder kaufen oder verkaufen. Wir beginnen daher mit der Suche nach Positionen auf unserem Symbol. Merkmale anfordern/erhalten. Bestimmung der Positionsart - Kauf oder Verkauf. Und so geht es weiter durch den Text.
Wenn ein Auftrag zur Ausführung angenommen wird, werden alle seine Merkmale (Symbol, Ausstellungszeitpunkt, Auftragsart, Ticket) vom Terminal zugewiesen (vom Benutzer angefordert und vom Terminal zugewiesen), nicht vom Benutzer, und dasselbe gilt für die Position, die Informationen über ihre Aufträge speichert, von denen es jedoch viele geben kann. Und die magische Zahl ist eine Benutzerkennung. Zitat:
Wenn wir einen neuen schwebenden Auftrag erstellen, müssen wir ihn irgendwie kennzeichnen - damit das Programm weiß, dass dieser bestimmte Auftrag von NAMI für diesen bestimmten schwebenden Auftrag erteilt wurde - das heißt, wir müssen einen Auftrag oder eine Position eindeutig identifizieren und mit einem bestimmten schwebenden Auftrag verknüpfen.
NAMI fehlt in seiner Bedeutung. Und dann gibt Artem die Klassifizierung der Aufträge in die Magik-Nummer ein. Warum nicht, die ersten 2 Ziffern geben etwas an, z.B. die Auftragsart, die nächsten 4 Ziffern geben das Datum des Auftrags an.
In Bezug auf den Algorithmus von etwas. Legen Sie zunächst die Anfangsbedingungen fest. Es gibt Aufträge, die auf unserem Symbol stehen und die wir nicht berücksichtigen oder die wir berücksichtigen. Ohne die Überarbeitung der Ausgangsbedingungen bei der Erstellung des Algorithmus kann der Code ewig dauern)
Vielen Dank, Valeriy, für die ausführliche Antwort. Vieles ist klarer geworden. Ich denke genauso über den Algorithmus, aber Vassily hat bereits erklärt, warum wir die Magic Number in diesem EA nicht brauchen.
Mit freundlichen Grüßen, Vladimir
Vielen Dank, Valery, für die ausführliche Antwort. Es hat sich viel geklärt. Ich habe die gleiche Meinung über den Algorithmus, aber Vasiliy hat bereits erklärt, warum wir die Magic Number in diesem EA nicht brauchen.
Mit freundlichen Grüßen, Vladimir.
Wir haben ein Diagramm geöffnet und es gibt eine Position auf dem Diagrammsymbol, wir wissen nicht, was es ist, und wir wollen es zum Break-Even eröffnen und dann SL nachziehen, um Verluste zu reduzieren, falls der Preis umkehrt.
Mit den Korrekturen von Valery hat die EA-Vorlage mit Kommentaren ein neues Aussehen bekommen.
Mit freundlichen Grüßen, Vladimir.
Vladimir, du musst sie nicht lange nutzen. Auf geht's ins Getümmel. Ich habe eine Vorlage für das gewünschte Trailing für Sie geschrieben:
Alles, was Sie tun müssen, ist, die Funktionen mit der Logik zu füllen, die ihren Namen entspricht. Wie Sie sehen können, ist die Vorlage elementar. Und strukturell ähnlich wie die ToR.
Beachten Sie, dass sich dieser Code kompilieren lässt, d. h. aus Sicht des Compilers ist er korrekt. Streben Sie immer diesen Zustand an: d.h. nehmen Sie während der Entwicklung kleine Änderungen vor, so dass der Code danach kompiliert werden kann. Streben Sie auch an, dass der Compiler "0 Fehler, o Warnungen" meldet. Es ist klar, dass man das Programm nicht mit Fehlern laufen lassen kann, aber die Warnungen des Compilers sollten als unser Vaterunser aufgefasst werden: wenn es eine Warnung gibt, muss sie korrigiert werden. Diese Vorlage wird mit "0 Fehler, o Warnungen" erstellt- speichern Sie diesen Status bis zum Ende der Entwicklung.
Wenn wir die Logik und den Compiler verstanden haben, müssen wir nur noch die Funktionen mit der notwendigen Logik ausstatten.
Der zweite Parameter, der Trail-Wert, wird vorerst in die nächste Version verschoben. Dazu sind zusätzliche Berechnungen erforderlich. Aus diesem Grund ist sie in dieser Vorlage nicht enthalten. Das Schleppnetz wird jede Sekunde hochgezogen.
Vladimir, du musst sie nicht lange nutzen. Auf geht's ins Getümmel. Ich habe eine Vorlage für das gewünschte Trailing für Sie geschrieben:
Alles, was Sie tun müssen, ist, die Funktionen mit der Logik zu füllen, die ihren Namen entspricht. Wie Sie sehen können, ist die Vorlage elementar. Und strukturell ähnlich wie die ToR.
Beachten Sie, dass sich dieser Code kompilieren lässt, d. h. aus Sicht des Compilers ist er korrekt. Streben Sie immer diesen Zustand an: d.h. nehmen Sie während der Entwicklung kleine Änderungen vor, so dass der Code danach kompiliert werden kann. Streben Sie auch an, dass der Compiler "0 Fehler, o Warnungen" meldet. Es ist klar, dass man das Programm nicht mit Fehlern laufen lassen kann, aber die Warnungen des Compilers müssen als unser Vaterunser aufgefasst werden: Wenn es eine Warnung gibt, muss sie korrigiert werden. Diese Vorlage wird mit "0 Fehler, o Warnungen" erstellt- speichern Sie diesen Status bis zum Ende der Entwicklung.
Wenn wir die Logik und den Compiler verstanden haben, müssen wir nur noch die Funktionen mit der benötigten Logik versehen.
Der zweite Parameter, der Trail-Wert, wird vorerst in die nächste Version verschoben. Dazu sind zusätzliche Berechnungen erforderlich. Aus diesem Grund ist sie in dieser Vorlage nicht enthalten. Das Schleppnetz wird jeden Tick aktualisiert.
Vasiliy, ich möchte dir natürlich für deine Arbeit danken, aber es hilft mir nicht zu verstehen, woher diese Funktionen und Operatoren kommen und vor allem, warum sie da sind. Es wäre richtiger gewesen, den Code zu schreiben, wie Sie es mir vorgeschlagen haben. Ich wollte unbedingt selbst so weit kommen, und das will ich jetzt auch.
Ich verstehe, dass Sie, wie viele andere, es leid sind, dass ich ständig alle Codezeilen buchstabiere und auf der Stelle trete, aber das Problem ist, dass ich immer noch nicht verstehe, wie alles aufgebaut ist, vom Algorithmus bis zum Schreiben des Codes. Hinzu kommen mangelnde Englischkenntnisse, denn ich muss fast alle Compiler-Fehler- und Warnmeldungen sowie andere englische Wörter in Google Translator kopieren und einfügen. Übrigens, wenn jemand versucht hat, diese Mikro- oder sogar Nano-Codes auszuführen, die ich in diesem Thread gepostet habe, haben sie alle die Kompilierung mit "0 Fehler, 0 Warnungen" bestanden.
Jetzt brauche ich etwas Zeit, um zu erkennen oder besser gesagt zu verstehen, warum diese Funktionen und Operatoren erschienen sind. Kurz gesagt, es ist ein stiller Horror. Und ich bin ein schlechter Schüler, wenn ich elementare Dinge nicht verstehe.
Ich danke Ihnen und allen anderen Programmierern dafür, dass Sie meine Langsamkeit toleriert haben. Allerdings ist mir klar, dass Ihre Geduld nicht grenzenlos ist.
Mit freundlichen Grüßen, Vladimir.