Einzelnen Beitrag anzeigen
  #9 (permalink)  
Alt 12.10.22
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Das Ausgeben von Print-Meldungen solltest Du Dir angewöhnen, dann kannst Du besser nachprüfen, was im Code passiert und ob es das ist, was Du beabsichtigst. Die Ausgabe siehst Du im Terminal Tab Experten. Wenn dann alles korrekt läuft, kannst Du die Print Befehle kommentieren (nicht einfach löschen, so kannst Du später mal nachsehen oder sie als Vorlage verwenden).
Wenn Du viele Print-Ausgaben im Code hast (ganz besonders wenn sie in der OnCalculate Funktion stehen), werden die Dateien ziemlich schnell groß. Daher hin und wieder die alten Dateien löschen (die vom aktuellen Tag kann man erst dann löschen, wenn MetaEditor und MetaTrader geschlossen sind):
Datei - Speicherort öffnen
Dort (wo auch die terminal.exe und metaeditor.exe liegen), gehst Du in den Ordner MQL4.
Dort findest Du einen Ordner Logs, in dem alle Ausgaben, die Du im Terminalfenster unter Experten siehst, gespeichert werden.

Hast Du schon mal im MetaEditor die F1 Taste gedrückt? Dann sollte eigentlich ein Fenster aufgehen, mit der gesamten Dokumentation.

Noch was: erst einen Plan machen, dann coden
1. was genau soll berechnet werden
2. wie sollen die Daten angezeigt werden
3. alles testen

zu 1.
Du hast hier eine Benutzerangabe "Perioden=1500". Was für "Perioden" sollen das sein, Heizperioden, Hoch-/Tiefperioden, Chartperioden? All Deine anderen Variablen benennst Du sehr genau (das finde ich super).
"Perioden" wird nirgends im Code benutzt. Derzeit ist diese Zeile also überflüssig.
zu 2.
Deine Daten (also Linien) werden über Buffer gezeichnet. Jetzt sehe ich in Deinem Code
ObjectSetInteger(0, "_HighestCandle", OBJPROP_RAY, true);
Hier gibst Du einem Linienobjekt die Eigenschaft, die Linie zu verlängern. Es gibt aber gar kein Linienobjekt.
zu 3.
Nimm einen neuen Chart, schmeiß Deinen Indikator drauf.
Bevor Du auf Ok drückst, lies Dir alle Tabs durch, was dort steht.
Dann lege über Deine Buffer-Linien von Hand eine waagerechte Linie.
Nun ändere die Kerzengröße (+ Zeichen oder - Zeichen drücken).
Danach mache die Fensterbreite kleiner (rechten Fensterrand nach links schieben).
Wo sind Deine von Hand gezeichneten Linien jetzt? Mit der Änderung der Kerzengröße oder der Fensterbreite ändert sich auch die Anzahl der sichtbaren Kerzen im Chart (und nur über diese Anzahl berechnest Du zur Zeit Deine Höchst- und Tiefstlinien).
Zum Schluß mach die Fensterbreite ganz klein, stell die Zeit auf eine Minute, nimm die größte Kerzengröße und beobachte ein paar Minuten, wie sich die Linien verhalten.
Ist es das, was Du mit Deiner Berechnung willst?

Im Anhang erst mal eine kommentierte Version Deiner letzten (testNefastus2).
Und dann eine Version mit allen Print-Ausgaben, die bereinigt ist (Nefastus3) und ein Bild wie es in 4 unterschiedlichen Märkten aussieht (beachte im Gold die erste halbe Kerze im Chart: sie wird nicht mitberechnet, soll das so sein?).

Damit hast Du erst mal viel zu lesen, zu verstehen und zu testen
AVT
Angehängte Grafiken
Dateityp: jpg Nefastus3.JPG (129,0 KB, 6x aufgerufen)
Angehängte Dateien
Dateityp: mq4 testNefastus2.mq4 (30,0 KB, 1x aufgerufen)
Dateityp: mq4 Nefastus3.mq4 (34,1 KB, 2x aufgerufen)