Ein Zwei meines EA wird anscheinend nie erreicht
Hallo,
Ich habe den unten geposteten EA geschrieben. Es handelt sich um einen kleinen EA, den ich lediglich zu Übungszwecken geschrieben habe. Ein Zweig des EA wird dabei anscheinend nie erreicht. Was der EA machen soll: Zitat:
Im Großen und Ganzen funktioniert der EA, z.B. erhalte ich die Bildschirmausgaben: "Es wurde ein Trade eröffnet!" und "OnInit() Methodenrumpf wurde durchlaufen!" Getestet habe ich das, indem ich die Systemzeit auf 9:xx Uhr eingestellt habe. --- Lediglich das Rücksetzen der Flag-Variablen ab 10 Uhr klappt noch nicht. Das Rücksetzen habe ich getestet, indem ich die Systemzeit auf 09:58 Uhr eingestellt, dann den EA gestartet und bis 10:01 gewartet habe. Es wird dann zunächst, wie erwartet, ein Trade eröffnet. Jedoch funktioniert das Rücksetzen der Flag-Variable offenbar nicht. Konsolenausgaben die bislang nämlich nicht auf der Konsole ausgegeben werden, sind diese: "Zweite IF-Anweisung Ausführungsteil wurde erreiche!" und Flag-Variable wurde wieder zurückgesetzt auf: 0 Der Zweig der offenbar nicht funktioniert oder nicht erreicht wird, ist in dem geposteten Code rot markiert. Daher habe ich den vermeintlich nicht funktionierenden oder nie erreichten Code in einen extra EA ausgelagert um ihn dort zu testen (das ist der zweite von mir gepostete Code). Der Code funktioniert dort bedingt. Ich habe zwei Sachen ausprobiert: Die Systemzeit auf 10 Uhr gestellt, den neuen EA gestartet. DER EA hat dann funktioniert, es kam die folgende Ausgabe: "Stelle 1 wurde erreicht!" "Stelle 2 wurde erreicht!" "Flag-Variable zurückgestellt auf: 0" Dann habe ich noch was probiert: Die Systemzeit auf 9:58 gestellt, den EA erneut gestartet und bis 10:02 gewartet. Ergebnis dann: Sofort nach dem Starten des EA (also um 9:58 Uhr) kam die Ausgabe "Stelle 1 wurde erreicht!" nach bzw. ab 10 Uhr kamen allerdings keine weiteren Ausgaben mehr. Insbesondere wurde offenbar die Flag-Variable nicht zurückgesetzt. Demnach wird womöglich vom EA, aus welchen Gründen auch immer, die Uhrzeit nicht richtig erkannt? Wie könnte ich das Problem lösen? (Worin besteht das Problem?) Die Uhrzeit zum Debuggen in einer globalen Konstante halten, wie in einem anderen Zusammenhang vorgeschlagen, möchte ich nur sehr ungern. Weil ich nach dem Debuggen den EA dann noch mal umstricken müsste (ebenjene Konstante durch TimeLocal() ersetzen. So wie ich mich kenne, würde ich dabei nur witere/neue Fehler einbauen. ;) --- Es folgt noch der angekündige Quellcode. Zunächst der ursprünglich zu debuggende EA, der Zwei der offenbar nie erreicht wird, ist in roter Schrift: Code:
Und hier noch der Code eines weitern EA. Der oben rot gehaltene Code wurde in diesen EA zu Testzwecken überführt: Code:
Ich freue mich über jeden konstruktiven Hinweis! :) Besten Dank und Grüße LQK |
int OnTick() ? :confused:
Warum ist der bool, ob an dem Tag schon ne Order geöffnet wurde, bei init? :confused: |
Du schreibst, dass du die Systemzeit auf die entsprechenden Uhrzeiten eingestellt hast. Die OnTick-Funktion wird nur bei einem Tick ausgeführt. Allerdings hast du sie auch "hart" in die OnInit() Funktion aufgerufen, d.h. beim ersten Aufruf von deinem EA wird die OnTick() Funktion auf jeden Fall aufgerufen, danach hängt es davon ab, ob du einen Tick bekommst oder eben nicht.
Kann es sein, dass du die Funktion testest, während der jeweilige Markt nicht aktiv ist oder du offline bist? |
Zitat:
Besten Dank für Deine Hilfe. Ich wäre nie von alleine auf die Idee gekommen, dass ein falscher Rückgabewert für OnTick() ein solches Phänomen verursacht. Ist mir im Grunde auch jetzt nicht klar, warum das so ist. Aber Hauptsache, das Problem ist gelöst. Besten Dank noch mal! :) |
Zitat:
Danke aber für den Hinweis, dass der harte Aufruf eigentlich unangemessen ist. Habe das jetzt beseitigt. Durch die Lösung des Grundproblems (siehe mein Post von gerade eben) ist der harte Aufruf auch nicht mehr erforderlich. Alle damit in Zusammenhang stehenden Bugs sind jetzt offenbar dauerhaft verschwunden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum