Codeproblem mit mehreren Warnungen und zeitversetzten Warnungen — Code Problem with multiple alerts and timeshifted alerts
Im deutschen Forum schreiben Sie bitte auf Deutsch. Verwenden Sie entweder das automatische Übersetzungstool oder posten Sie in einem der anderen Sprachforen.
On the German forum, please write in German. Either use the automatic translation tool, or post in one of the other language forums.
Hallo, wir können hier Deutsch reden :)
Starte den Debugger kurz bevor der Alert kommen soll, gehe Befehl für Befehl durch Deinen Code und verfolge die relevanten Variablen. So kannst Du leicht feststellen, warum Dein EA nicht tut, was er soll.
HowTo: https://www.metatrader5.com/de/metaeditor/help/development/debug
Tips und Links für den Neuling: https://www.mql5.com/de/forum/455957#comment_50048608
Zum Überfliegen und landen bei dem, was man braucht.
- 2023.10.19
- www.mql5.com
Im deutschen Forum schreiben Sie bitte auf Deutsch. Verwenden Sie entweder das automatische Übersetzungstool oder posten Sie in einem der anderen Sprachforen.
On the German forum, please write in German. Either use the automatic translation tool, or post in one of the other language forums.
Hallo, wir können hier Deutsch reden :)
Starte den Debugger kurz bevor der Alert kommen soll, gehe Befehl für Befehl durch Deinen Code und verfolge die relevanten Variablen. So kannst Du leicht feststellen, warum Dein EA nicht tut, was er soll.
HowTo: https://www.metatrader5.com/de/metaeditor/help/development/debug
Tips und Links für den Neuling: https://www.mql5.com/de/forum/455957#comment_50048608
Zum Überfliegen und landen bei dem, was man braucht.
Hinweis: Es ist kein EA. Es ist nicht angedacht derzeit das der Indicator von alleine Handelt. Er soll mir nur ein PING geben.
Na ich versuche es nochmal.
Kann man den Zwischenbuffer der ganzen Alerts eigentlich löschen?
Hallo, wir können hier Deutsch reden :)
Starte den Debugger kurz bevor der Alert kommen soll, gehe Befehl für Befehl durch Deinen Code und verfolge die relevanten Variablen. So kannst Du leicht feststellen, warum Dein EA nicht tut, was er soll.
HowTo: https://www.metatrader5.com/de/metaeditor/help/development/debug
Tips und Links für den Neuling: https://www.mql5.com/de/forum/455957#comment_50048608
Zum Überfliegen und landen bei dem, was man braucht.
Gedankenfehler gefunden. Da onCalculate jeden Tick berecchnet so wird auch bei jedem Tick der gesamte Array gefüllt, und so entstehen auch weitere Signale, sofern bei aufeinanderfolgenden Ticks die buy oder sell Konditionen erhalten geblieben sind. Wie kann ich diese Funktion testen? eine Funktion NewBar oder newCandle im Chart muss her: Wie kann ich den Code prüfen? Im Debugger geht der nie da rein.
oid OnTick() { if(barOpen1 != Open[0] || barOpen2 != Open[5]) //If any of the statements pass, a new candle must have opened changing the index number. { NewBar = true; barOpen1 = Open[0]; // Update variables with current prices barOpen2 = Open[5]; } }
Gedankenfehler gefunden. Da onCalculate jeden Tick berecchnet so wird auch bei jedem Tick der gesamte Array gefüllt, und so entstehen auch weitere Signale, sofern bei aufeinanderfolgenden Ticks die buy oder sell Konditionen erhalten geblieben sind. Wie kann ich diese Funktion testen? eine Funktion NewBar oder newCandle im Chart muss her: Wie kann ich den Code prüfen? Im Debugger geht der nie da rein.
Das ist eine Frage, über die jeder stolpert und die bereit vielfach beantwortet wurde: https://www.mql5.com/de/search#!keyword=NewBar&module=mql5_module_codebase
Danke für den Hinweis, ja, ich habe mich länger durch diverse Forumseinträge in DE und EN durchgebohrt und gelesen.
was mir leider noch nicht klar ist, worin besteht der Unterschied im OnCalculate und OnTick? Brauche ich wirklich OnTick für die "new-candle" Function oder könnte ich das direkt in die OnCalculate() Funktion auch integrieren?
Früher hieß es einfach OnStart, aber die ScriptSprache hat sich da offenbar in den letzten 10 Jahren weiterentwickelt. Ich bin schon zu sehr auf Pine Script eingeschworen und muss mein altes Wissen hier wieder ausgraben.
Es ist irgendwie echt lästig, dass das mit den Pfeilen auf Anhieb gut funktioniert hat, jedoch beim Alarm scheitere ich. Ich muss weitersuchen, es muss eine andere / parallele Möglichkeit geben, den Alarm nur 1x pro Kerze auszugeben.
OnTick() ist die Funktion für EAs und OnCalculate() die für Indikatoren, OnStart() ist für Skripts.
Einfach mal den Kursor jew. auf die Funktion stellen und F1 drücken...
So findest Du viele Antworten Deiner Fragen.
OnTick() ist die Funktion für EAs und OnCalculate() die für Indikatoren, OnStart() ist für Skripts.
Einfach mal den Kursor jew. auf die Funktion stellen und F1 drücken...
So findest Du viele Antworten Deiner Fragen.
Danke für die Antwort,
Ich habe jetzt mal einen anderen Indikator zerlegt und mache reverse engineering, meine Hoffnung ist, dass ich meine Signale da rein coden kann, dann könnte es vielleicht funktionieren.
Frohes Schaffen und möge der Trend mit Dir sein,
Peter
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Automatisierte Übersetzung durch den Moderator. Im deutschen Forum schreiben Sie bitte auf Deutsch. Verwenden Sie entweder das automatische Übersetzungstool oder posten Sie in einem der anderen Sprachforen.
Automated translation applied by moderator. On the German forum, please write in German. Either use the automatic translation tool, or post in one of the other language forums.
Hallo liebe MQL4-Programmierer,
Ich habe Probleme mit meinem Handelsindikator. Eigentlich ist es ganz einfach, aber die Alerts funktionieren nicht so, wie ich es möchte.
Unter bestimmten Bedingungen (Kreuzung mit EMA50-Band usw.) wird ein Kauf- oder Verkaufssignal generiert. Die Pfeile sind korrekt gezeichnet.
Die Warnung zu diesem Pfeil wird jedoch nicht ausgelöst. Entweder fehlt der Meta-Trader (falsche Pufferlänge oder ein Echtzeitfehler) oder es liegt ein Problem in meinem Code bzw. meinem Verständnis dafür vor, wie diese Warnungen ausgelöst werden.
Zur besseren Lesbarkeit kürze ich den Code.
Ich habe dort einige boolesche Flags hinzugefügt, um den Abstand zwischen den Handelssignalen im Diagramm zu wahren
Wenn ein Verkaufs- oder Kaufsignal ausgelöst wurde, möchte ich verhindern, dass durch einen chaotischen Chart ein weiteres Signal für die nächsten 5 Kerzen ausgelöst wird.
Der gesamte Code basiert auf OnCalculate()... ich verstehe also, dass mit jedem Tick die for(i = limit....)-Hauptschleife ausgelöst wird. Für jedes i steht eine Kerze.
Wenn ich also zwei close[i+1] > xyz[i+1] && close[i+2] < xyz[i+2] vergleiche, gehe ich davon aus, dass das Signal nur dann gesendet werden sollte, wenn der Balken die Kerze schließt [1], eine neue Kerze[0] wurde erstellt.
Ich habe es mit den Pfeilen beobachtet, es funktioniert,
aber die Warnung davor ist wahnsinnig. Ich weiß nicht, was ich tun soll.
Bitte helfen und beraten Sie. Ich möchte nur einen Alarm pro Kerze und nur, wenn ein Pfeil erstellt wurde.
Danke