Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 624
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
So können Sie Folgendes ändern
es gibt viele Fehler im Code, in
es ist besser, die Preise zu normalisieren, dann werden sie funktionieren, dann wird der Server einen Fehler von "falschen Preisen" ausgeben, es ist wünschenswert,StopLoss_SELL zu normalisieren
und höchstwahrscheinlich müssen Sie prüfen, ob der StopLoss gleich Null ist - es ist nicht wünschenswert, reelle Zahlen zu vergleichen, um gleich zu sein, Sie sollten versuchen, reelle Zahlen mit > oder < zu vergleichen
Helfen Sie mir, einen Fehler im Indikator zu beheben. Er zeichnet nicht das Tageshoch und -tief, wenn er sich auf der letzten Kerze der Stunde befindet.
Ich habe den Indikator skizziert, Ihr Code mag die Arbeit mit Strings nicht, ich würde ihn einfacher schreiben, hier ist ein Beispiel. Wenn Ihre Aufgabe jedoch darin besteht, die Zeitverschiebung des Servers zu berücksichtigen, dann ist der umgekehrte Weg erforderlich.
Mein Beispiel ist auch kein Beispiel, ich habe es schnell geschrieben, ich denke, ich hätte beim ersten Durchlauf nicht vom Ende der Historie bis zum Anfang zählen sollen, sondern vom Null-Balken bis zur Historie, dann wäre der Code kürzer gewesen und hätte den aktuellen Tag schneller berechnen können - der Zyklus wäre kürzer gewesen,
Aber ich habe es im Tester überprüft, es scheint ohne Probleme zu funktionieren, lass es so sein, es ist spät, ich bin müde... Ich habe ein schlechtes Beispiel gegeben (((
der Code enthält eine Menge Fehler, in
es ist besser, die Preise zu normalisieren, dann werden sie funktionieren, dann wird der Server einen Fehler von "falschen Preisen" ausgeben, es ist wünschenswert,StopLoss_SELL zu normalisieren
Und höchstwahrscheinlich müssen Sie prüfen, ob der StopLoss gleich Null ist, und es ist nicht wünschenswert, reelle Zahlen zu vergleichen, um gleich zu sein, sollten Sie versuchen, reelle Zahlen zu vergleichen, um > oder <
Das ist richtig. Ich habe soeben eine Stelle im Code aufgezeigt, warum er Marktaufträge nicht modifiziert: Die Anforderung eines Stopps vom Markt ergibt 0.
Hier ist ein skizzierter Indikator, ich mag deinen Code mit Strings nicht, ich würde ihn einfacher schreiben, hier ist ein Beispiel. Wenn Ihre Aufgabe jedoch darin besteht, die Zeitverschiebung des Servers zu berücksichtigen, müssen Sie es anders machen.
Mein Beispiel ist auch kein Beispiel, ich habe es schnell geschrieben, ich denke, ich hätte beim ersten Durchlauf nicht vom Ende der Historie bis zum Anfang zählen sollen, sondern vom Null-Balken bis zur Historie, dann wäre der Code kürzer gewesen und hätte den aktuellen Tag schneller berechnen können - der Zyklus wäre kürzer gewesen,
Aber ich habe es im Tester überprüft, es scheint ohne Probleme zu funktionieren, lass es so sein, es ist spät, ich bin müde... Schlechtes Beispiel gegeben (((
Es ist nicht mein Code, ich habe ihn im Internet gefunden, ich kann keine Indikatoren schreiben. :)
Für was es wert ist ein schlechtes Beispiel, ich wirklich mochte Ihre Indikator, es funktioniert in der Strategie-Tester und auf realen Charts.
Vielen Dank für die schnelle Hilfe!
Darf ich Sie außerdem bitten, die Linien, die den Kanal zeichnen, zu entfernen? Ich habe sie auf dem Screenshot mit roten Pfeilen markiert.
Und wenn es nicht zu viel Mühe macht, fügen Sie bitte eine Funktion hinzu, mit der Sie die Linienbildung am aktuellen Tag aus- und einschalten können. Ich habe sie auf dem Bildschirmfoto mit blauen Pfeilen markiert. https://prnt.sc/kuuj3e
Vielen Dank im Voraus!
Hallo Liebes!
Bitte geben Sie an, wie die OnInit()-Prozedur ausgeführt werden soll;
nachdem die Variablen des Expert Advisors geändert wurden!?
Wenn der Expert Advisor auf dem Chart platziert wird, gibt es OnInit(); aber wenn Variablen geändert werden, gibt es kein OnInit!?
Wie kann man das Ereignis der Variablenänderung des Expert Advisors erkennen?
Bitte helfen Sie mit Ratschlägen, oder besser gesagt mit Code, wie man es macht!?
Hallo Liebes!
Bitte geben Sie an, wie die OnInit()-Prozedur ausgeführt werden soll;
nachdem die Variablen des Expert Advisors geändert wurden!?
Wenn der Expert Advisor auf dem Chart platziert wird, gibt es OnInit(); aber wenn Variablen geändert werden, gibt es kein OnInit!?
Wie kann man das Ereignis der Variablenänderung des Expert Advisors erkennen?
Bitte helfen Sie mit Ratschlägen, oder besser gesagt mit Code, wie man es macht!?
Experimentieren Sie mit diesem Code, lesen Sie die Meldung im EA-Log (wechseln Sie die TF, geben Sie die Variable ein, starten Sie das Terminal neu, ohne den EA zu schließen...)
und die zweite Option besteht darin, eine Variable im globalen Bereich mit dem Modifikator static zu beschreiben
Experimentieren Sie mit einem solchen Code, lesen Sie die Meldung im Log des Expert Advisors (wechseln Sie die TF, geben Sie die Variable ein, laden Sie das Terminal neu, ohne den Expert Advisor zu schließen...)
und die zweite Option besteht darin, eine Variable im globalen Bereich mit dem Modifikator static zu beschreiben
Im globalen Bereich mit dem Modifikator static????? Das ist eine Art Perversion.
Auf globaler Ebene mit dem statischen Modifikator static????? Das ist eine Art Perversion.
Aber aus meiner Erfahrung, als MT4-Builds oft aktualisiert wurden, ist es besser, sie nach klassischem C++ zu schreiben, als bei der Kommunikation mit den Entwicklern die Antwort zu bekommen "schreibe den Code richtig".
ZS: Ich erinnere mich, warum ich angefangen habe, den statischen Modifikator global zu schreiben, wenn ich sichergehen will, dass ich den Variablenwert während des MQL-Programmlaufs nicht "verliere". Früher (vor etwa 5 Jahren) gab es die #property strict Precompiler-Direktive nicht und beim Aktivieren von Dateien (#include oder library - ich weiß es nicht mehr) habe ich einmal "meine Variable verloren", da die Variablennamen mit dem Variablennamen übereinstimmten.Ich wurde von MQL verflucht, aber später fand ich diesen Fehler zufällig. Aber wenn ich einen statischen Modifikator schreiben würde, würde der Compiler auch in diesem Fall einen Kompilierungsfehler anzeigen.
Der aktuelle MT4-Compiler ist ziemlich praktisch und zuverlässig, und mit der #property strict-Direktive brauche ich solche Vorsichtsmaßnahmen vielleicht nicht, aber ich schreibe aus Gewohnheit statisch, wenn ich den Wert einer Variablen nicht "verlieren" will
ZZZY: dieser Modifikator hat keinen Einfluss auf die Ausführungsgeschwindigkeit des MQL-Programms, und es ist bequem für mich, meinen Code später zu öffnen, und nachdem ich statisch gesehen habe, werde ich genau wissen, dass diese Variable einen Wert hat, der wichtig ist, um während der Programmausführung nicht zu verlieren".
Aber aus meiner Erfahrung, als MT4-Builds oft aktualisiert wurden, ist es besser, sie nach klassischem C++ zu schreiben, als bei der Kommunikation mit Entwicklern auf die Antwort "schreibe den Code richtig" zu hören
ZS: Ich erinnere mich, warum ich angefangen habe, den statischen Modifikator global zu schreiben, wenn ich sichergehen will, dass ich den Variablenwert während des MQL-Programmlaufs nicht "verliere". Früher (vor etwa 5 Jahren) gab es die #property strict Precompiler-Direktive nicht und beim Aktivieren von Dateien (#include oder library - ich weiß es nicht mehr) habe ich einmal "meine Variable verloren", da die Variablennamen mit dem Variablennamen übereinstimmten.Ich wurde von MQL verflucht, aber später fand ich diesen Fehler zufällig. Aber wenn ich einen statischen Modifikator schreiben würde, würde der Compiler auch in diesem Fall einen Kompilierungsfehler anzeigen.
Der aktuelle Compiler ist MT4, ziemlich handlich und zuverlässig, und mit der Direktive #property strict, vielleicht brauche ich nicht solche Vorsichtsmaßnahmen, aber ich schreibe statisch als Gewohnheit, wenn ich nicht will, "verlieren einen Wert" einer Variablen
ZZZY: dieser Modifikator beeinträchtigt nicht die Ausführungsgeschwindigkeit des MQL-Programms, und es ist bequem für mich, meinen Code nach einiger Zeit zu öffnen, und nachdem ich statisch gesehen habe, werde ich genau wissen, dass diese Variable einen Wert hat, der wichtig ist, um während der Programmausführung nicht zu verlieren".
Der Compiler gibt eine Warnung aus, wenn die Variablennamen mit denen in der Include-Datei übereinstimmen. Für mich ist eine Warnung gleichbedeutend mit einem Fehler, und ich reagiere darauf auch so. Und globale Level-Variablen mit einem statischen Modifikator sind wie Butter.
Aber... Wenn Sie so schreiben wollen, kann Ihnen das niemand verbieten.
Aber... Aber... wenn Sie es so schreiben wollen, kann Ihnen das niemand verbieten.
Ich habe Zweifel an meiner Einzigartigkeit in dieser Angelegenheit... Ich bin nicht der einzige, Suche durch die MQL5-Ordner fand ich solche Deklarationen mit statischen Modifikator auf globaler Ebene in mehreren Quellen von MT5 Lieferung
Sogar im Artikel "RANDOM DECISION FOREST IN THE SUMMARY" habe ich im Quellcode eine Deklaration auf der globalen Ebene gefunden: static datetime last_time=0;
so schrieb ich, wie ich es für richtig halte, zuzuordnen und werden, ich nicht 100% der Variablen auf der globalen Ebene zu beschreiben als statisch
Gott beschützt die Bedürftigen, sagte die Nonne... ))))