Zeichnen einer Linie wird im Strategy Tester Visualisation angezeigt, aber im realen Chartfenster nicht
- Schau mal in der Objektliste (Ctrl+B => List all) des Charts ob es nicht doch etwas gibt.
- Du prüfst nicht ob es den Objektnamen schon gibt.
- Gibt es einen Eintrag im Log?
- Warum druckst Du nicht aus: ... else { Print("Fehler beim Erstellen der Trendlinie. ",_LastError); }
- Schau mal in der Objektliste (Ctrl+B => List all) des Charts ob es nicht doch etwas gibt.
- Du prüfst nicht ob es den Objektnamen schon gibt.
- Gibt es einen Eintrag im Log?
- Warum druckst Du nicht aus: ... else { Print("Fehler beim Erstellen der Trendlinie. ",_LastError); }
Hallo Carl,
vielen Dank für Deine schnelle Antwort. Leider brachten alle Punkte keinen Erfolg.
Hier die Prüfungen im Detail:
- In der Objektliste gibt es einige wenige Einträge, wenn ich List all aktiviere. Aber "MyTrendLine" ist dort nicht vorhanden.
- Ja, korrekt. Der Code ist nicht ganz sauber. Mir ging es erst mal um das Prinzip. Um die Namensdopplung auszuschließen, hab ich die Linie nun mal als "MyTrendLine5511" benannt. Leider hat das nichts geändert.
- Im Log gibt es keine Fehlermeldung und es sieht alles normal aus. Aber nach meinem Verständnis ist es ja auch das Log des Strategy Tester Visualisation, oder? Dort funktioniert ja auch die Anzeige. Vermutlich gibt es daher keinen Fehlereintrag. Oder meinst Du ein anderes Logfile? Ich hätte vermutet, dass es eine Fehlermeldung im Experten oder Journal-Fenster des Metatrader geben müsste. Aber dort ist keine Fehlermeldung.
- Ja, danke für den Hinweis. Das hätte ich jetzt vermutlich vergessen. Jedoch kommt der Dubugger gar nicht in den Else-Zweig. Es liegt im Code somit kein Fehler vor. Das ist für mich auch nachvollziehbar, denn im Strategy Tester wir ja alles korrekt angezeigt.
Wenn ich Dich als Experte so recht verstehe, dann müsste der Code theoretisch gehen. Ich muss also nicht noch irgendwo was initalisieren oder das woanders eintragen - wie z.B. OnChartEvent. Verstehe ich das richtig?
Vielleicht habe ich mein Problem aber auch nicht korrekt beschrieben.
Daher noch mal kurz:
Im Chart des Strategy-Testers wird mir die Gerade angezeigt.
Wenn dieser Test fertig ist, öffnet sich ja in der Regel das gleiche Chart im Metatrader. Und dort wird die Gerade nicht angezeigt.....
Vielen Dank für die Begrifflichkeiten.
Damit kann ich das Thema doch noch mal etwas klarer beschreiben. 😀
Das Problem ist: Im Debugger-Chart wird die Linie angezeigt und im Terminal-Chart nicht.
Und nein, es ist kein Indikator, sonder die Linie ist im EA. Denn ich möchte die Linie bei einem Kauf einziehen und wollte daher dies im EA programmieren. So mein Gedanke. 😊
Oder kann man das mit dem EA nicht machen? Wie gesagt, im Debugger-Chart funktioniert es ja....
Klar kann der EA eine Linie zeichnen.
- Wann genau soll der der EA die Linie zeichnen?
- Bist Du vielleicht zu ungeduldig beim EA auf dem aktuellen Chart?
- Druckt der EA denn Print("Trendlinie erstellt zwischen ", time1, " und ", time2); in den Expert-Log?
- Schreib in den Comment() die Bedingungen die zum Zeichen der Linie führen sollen.
Erst mal gut zu wissen, dass der EA das kann 😃
Ich habe dafür jetzt einfach mal als Beispiel den Moving Average EA angepasst und hier angehangen. Wäre toll, wenn das jemand mal ausprobieren könnte, ob bei ihm das gleiche angezeigt wird wie bei mir?
Die Einstllung ist wie folgt:
Im Debugger-Chart sehe ich:
Im Terminal-Chart sehe ich:
Ich denke, darüber kommen wir der Lösung am schnellsten näher 🙂
Du erstellst bei jedem neuen Tick Deine Linie - das geht in die Hose!
Noch immer kein _LastError, noch immer keine Darstellung der Bedingungen für das Zeichnen der Linie im Kommentar, was steht im Log?
Hallo Carl,
vielen Dank, dass Du so hartnäckig bist 😅
Ich habe das Testprogramm angepasst.
- Eine Bedingung habe ich hinzugefügt. Sie lautet, dass die Linie erst zu folgender Zeit erstellt wird: D'2024.07.19 22:10'
- Die Bedingung gebe ich über den Kommentar nun aus, sobald sie erfüllt wurde.
- Ich habe sichergestellt, dass die Linie nur einmalig erstellt wird.
- _LastError habe ich nun auch hinzugefügt
- Das Log habe ich hinzugefügt, ebenfalls das überarbeitete Programm
Zudem habe ich das Programm nun auch bei einem anderen Broker getestet. Das Ergebnis ist das Gleiche. Es wird die Linie im Debugger-Chart angezeigt, aber im Terminal-Chart nicht.
Vielleicht wäre es das einfachste, wenn Du mal das Programm bei Dir kurz ausprobierst. Dann könnten wir festellen ob es eine Einstellungssache vom Terminal ist oder ob im Programm noch was geändert werden müsste. Was meinst Du?
Danke und viele Grüße
Ich verstehe das nicht, das Log ist vom Tester - da geht es ja, trotzdem gibt es keine Zeilen mit "Fehler beim Erstellen der Trend" oder "die Linie wird nun gezeichnet, da"?
Wenn ich das laufen lasse bringt das keine neue Erkenntnis!
Lass die Linie immer wieder neu zeichnen (d.h. z.B. falls eine existiert wird sie gelöscht), wenn ein neuer Balken entsteht. Das auf einem M1 Chart und dann start es auf EURUSD und schau zu.
Ich habe das nun umgesetzt und lasse die Linie immer wieder neu zeichnen und die alte Linie wird gelöscht.
Und ich habe zugeschaut, beim Tester.
Ergebnis: Das funktioniert wie gewünscht. Aber das ist ja bekannt, denn das ist ja der Tester-Chart und alles andere hatte dort vorher ja auch funktioniert. Im Terminal-Chart werden die Linien trotz allem nicht angezeigt.
Und das mit dem Log verstehe ich so:
- Der "Fehler beim Erstellen der Trend" wird dort nicht aufgeführt, weil es keinen Fehler gibt. Ich habe ja selbst einen Breakpoint im Code gesetzt. Der Code kommt da nicht rein, weil kein Fehler vorliegt. Also gibt es auch keinen Eintrag im Log, so mein Verständnis.
- Der Text " die Linie wird nun gezeichnet, da...." wird im Logfile nicht aufgeführt, da es die Comment-Funktion ist. Dieser Text wird nach meiner Info im Logfile nicht abgelegt.
Somit ist zumindest dieses Verhalten für mich erklärbar.
Ich habe jetzt den EA auf einem Live-Konto laufen lassen. Dort - also im Terminal-Chart - werden die Linien wie im Tester-Chart angezeigt.
Ich vermute daher jetzt einfach mal, dass "bestimmte" Objekte, die im Tester-Chart erzeugt werden, am Test-Ende nicht in das Terminal-Chart übertragen werden. Daher werden die Linien im Terminal-Chart nicht angezeigt.
Ich schreibe "bestimmte", weil beim Kauf und Verkauf die Arrows und Trendlinien ja auch Objekte sind und diese werden ja übertragen und angezeigt.
Wenn dem so sein sollte, würde ich als Benutzer sagen, dass dies ein Bug vom Metatrader ist, oder?
- 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.
Hallo Freunde,
ich möchte zu einem bestimmten Zeitpunkt eine Linie zeichnen.
Im Stategy Tester Visualisation wird mir diese auch angezeigt.
Im normaeln Chart dann aber leider nicht!
Hier mal das Bild, wie es im Strategy Tester angezeigt wird:
Und unten der Code dazu, den ich unter OnTick() eingegeben habe.
Kann mir jemand sagen, warum ich die Linie im normalen Cahrtfenster nicht sehe?
Denn eine Fehlermeldung konnte ich bis jetzt nicht sehen.
Danke und viele Grüße
Michael
*******************************************************
datetime time1 = D'2024.07.19 10:00';
double price1 = 1.083;
datetime time2 = D'2024.07.19 22:00';
double price2 = 1.094;
string lineName = "MyTrendLine";
int lineHandle = ObjectCreate(0, lineName, OBJ_TREND, 0, time1, price1, time2, price2);
if (lineHandle != INVALID_HANDLE)
{
Print("Trendlinie erstellt zwischen ", time1, " und ", time2);
ObjectSetInteger(0, lineName, OBJPROP_COLOR, clrRed); // Farbe der Linie setzen
ObjectSetInteger(0, lineName, OBJPROP_WIDTH, 2); // Breite der Linie setzen
ObjectSetInteger(0, lineName, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS); // Sichtbarkeit auf allen Zeitrahmen
}
else
{
Print("Fehler beim Erstellen der Trendlinie.");
}