Hallo.
Ich bin an Ihrem Indikator interessiert. Aber ich möchte, dass die Zeilen "TL_Support" und "TL_Resistance" nicht aus den letzten beiden Fraktalen gebildet werden, sondern aus dem letzten und dem nächsthöheren/tieferen.
Ich habe Änderungen am Code vorgenommen. Online funktioniert er gut, aber im Testprogramm weigert er sich, zu funktionieren. Er macht die erste Konstruktion und friert ein. Könnten Sie mir bitte sagen, wie ich den Indikator mit Änderungen im MT5-Tester zum Laufen bringen kann?
Ich werde den Code unten zitieren, die vorgenommenen Änderungen werden gelb hervorgehoben.
//+------------------------------------------------------------------+ //| Suche nach fraktalen Werten| //+------------------------------------------------------------------+ // --- Suche nach dem ersten oberen Fraktal for(n=0; n<Bars(Symbol(),base_tf); n++) { // --- wenn ein nicht leerer Wert, Beendigung der Schleife if(FractalUp_base[n]!=EMPTY_VALUE) break; } UpFractal_1_base=FractalUp_base[n];// --- Schreiben Sie den Preiswert des ersten Fraktals in die Variable UpperFractal_1_base=n;// --- den Index des ersten Fraktals in die Variable schreiben // --- // --- Suche nach dem zweiten oberen Fraktal for(n=UpperFractal_1_base+1; n<Bars(Symbol(),base_tf); n++) { // --- wenn ein nicht leerer Wert, Beendigung der Schleife if( FractalUp_base[n]!=EMPTY_VALUE && FractalUp_base[n]>UpFractal_1_base ) break; } UpFractal_2_base=FractalUp_base[n]; // --- Schreiben Sie den Preiswert des zweiten Fraktals in die Variable UpperFractal_2_base=n;// --- Schreiben Sie den Index des zweiten Fraktals in die Variable // --- // --- Suche nach dem ersten unteren Fraktal for(n=0; n<Bars(Symbol(),base_tf); n++) { // --- wenn ein nicht leerer Wert, Beendigung der Schleife if(FractalDown_base[n]!=EMPTY_VALUE) break; } LowFractal_1_base=FractalDown_base[n];// --- Schreiben Sie den Preiswert des ersten Fraktals in die Variable LowerFractal_1_base=n;// --- den Index des ersten Fraktals in die Variable schreiben // --- // --- Suche nach dem zweiten unteren Fraktal for(n=LowerFractal_1_base+1; n<Bars(Symbol(),base_tf); n++) { // --- wenn ein nicht leerer Wert, Beendigung der Schleife if( FractalDown_base[n]!=EMPTY_VALUE && FractalDown_base[n]<LowFractal_1_base ) break; } LowFractal_2_base=FractalDown_base[n];// --- Schreiben Sie den Preiswert des zweiten Fraktals in die Variable LowerFractal_2_base=n;// --- Schreiben Sie den Index des zweiten Fraktals in die Variable //---
Ich habe es nicht selbst überprüft, aber ich versuche, eine bessere Bedingung für das Zeichnen der Linien selbst hinzuzufügen, wo Objekte erstellt werden. Zum Beispiel, für eine Unterstützungslinie:
//--- Supportleitung erstellen if (LowFractal_1_base<LowFractal_2_base)//wenn der Preis des ersten gefundenen Fraktals niedriger ist als der Preis des zweiten gefundenen Fraktals, dann zeichne eine Linie { ObjectCreate(0,"TL_Support",OBJ_TREND,0,LowFractalTime_2_base[0],LowFractal_2_base,LowFractalTime_1_base[0],LowFractal_1_base); ObjectSetInteger(0,"TL_Support",OBJPROP_RAY_RIGHT,true); ObjectSetInteger(0,"TL_Support",OBJPROP_COLOR,Support_Color); ObjectSetInteger(0,"TL_Support",OBJPROP_STYLE,Support_Style); ObjectSetInteger(0,"TL_Support",OBJPROP_WIDTH,Support_Width); }
Ich habe es nicht selbst überprüft, aber ich versuche, eine bessere Bedingung für das Zeichnen der Linien selbst hinzuzufügen, wo Objekte erstellt werden. Zum Beispiel, für eine Unterstützungslinie:
Guten Tag, vielen Dank für Ihren Kommentar. Die Idee ist gut, aber für Unterstützungslinien sollte die Bedingung (gemäß der Logik, die ich zu implementieren versuche) das Gegenteil sein, der Tiefpunkt des zweiten gefundenen Fraktals sollte niedriger als der erste sein, alle Kandidaten für das zweite Fraktal, deren Tiefpunkt höher als der erste ist, sollten ignoriert werden
Außerdem müssen Sie, wenn Sie diesen Weg gehen, den Zeichenblock neu entwerfen, und alles andere danach auch. Der schöne Code wird seine Eleganz verlieren, IMHO.
Es gibt noch einen weiteren Grund, warum ich einen Kommentar zu diesem Beitrag geschrieben habe - das Programm funktioniert perfekt, alles wird bei echten Zitaten perfekt gezeichnet, pünktlich, ohne Fehler, aber im Tester will es nicht. Und wenn etwas unklar ist, alarmiert und stresst es mich, also will ich es herausfinden.
Die Datei des bearbeiteten Codes ist beigefügt, ich wäre sehr dankbar, wenn kompetentere Kameraden den Grund für ein solches Verhalten des Testers aufzeigen könnten.
Guten Tag, ich danke Ihnen für Ihren Kommentar. Die Idee ist gut, aber für Unterstützungslinien sollte die Bedingung (gemäß der Logik, die ich zu implementieren versuche) das Gegenteil sein, das Tief des zweiten gefundenen Fraktals sollte niedriger sein als das erste, alle Kandidaten für das zweite Fraktal, deren Tief höher ist als das erste, sollten ignoriert werden
Wenn Sie diesen Weg gehen, müssen Sie auch den Zeichenblock neu entwerfen, und alles andere danach auch. Schön, IMHO, Code wird seine Eleganz verlieren.
Es gibt noch einen weiteren Grund, warum ich einen Kommentar zu diesem Beitrag geschrieben habe - das Programm funktioniert perfekt, alles wird bei echten Zitaten perfekt gezeichnet, pünktlich, ohne Fehler, aber im Tester will es nicht. Und wenn etwas unklar ist, beunruhigt und stresst mich das, also will ich es herausfinden.
Die Datei des bearbeiteten Codes ist angehängt, ich wäre sehr dankbar, wenn kompetentere Mitstreiter den Grund für ein solches Verhalten des Testers aufzeigen könnten.
Offenbar gibt es einen Konflikt mit dem Array FractalDown_base[]. Es ist seltsam, dass er bei den oberen Fraktalen nicht auftritt. Wie auch immer, ich habe Ihren Vergleich ein wenig modifiziert:
for(n=LowerFractal_1_base+1; n<Bars(Symbol(),base_tf); n++) { // --- wenn ein nicht leerer Wert, Beendigung der Schleife if(FractalDown_base[n]!=EMPTY_VALUE && FractalDown_base[n]<Low_base_tf[LowerFractal_1_base] ) break; }
Das heißt, ich habe die Definition von High und Low hinzugefügt und vergleiche bereits mit ihnen. Auf diese Weise funktioniert alles im Testgerät einwandfrei. Die geänderte Datei ist angehängt.
Offenbar gibt es einen Konflikt mit dem Array FractalDown_base[]. Seltsamerweise tritt er bei den oberen Fraktalen nicht auf. Wie auch immer, ich habe Ihren Vergleich ein wenig geändert:
Das heißt, ich habe die Definition von High und Low hinzugefügt und vergleiche bereits mit ihnen. Auf diese Weise funktioniert alles gut im Testgerät. Die geänderte Datei ist angehängt.
Guten Tag, vielen Dank für Ihre Zeit und Aufmerksamkeit. Ich habe die angehängte Datei hochgeladen. Leider funktioniert der Tester immer noch nicht richtig, der Indikator macht die erste Konstruktion und baut die Widerstands- und Unterstützungslinien nicht mehr neu auf, zeigt keine Fraktale an. Um es zu testen, habe ich High_base_tf[UpperFractal_1_base] und Low_base_tf[LowerFractal_1_base] im Kommentar ausgegeben. Es wird korrekt gezählt, mit der Logik ist alles in Ordnung. Offensichtlich lauert der Fehler irgendwo in der Zeichnung.
Der Screenshot, der zeigt, dass neue Fraktale gebildet werden, aber die Linien nicht neu aufgebaut werden, ist unter dem Link angehängt.
***
Dort sieht man auch die Linien Low_base_tf[LowerFractal_1_base] und deren Werte, die mit den Werten von LowFractal_1_base verglichen werden können (für niedrige Werte, für hohe Werte ähnlich). Alles zählt korrekt, aber es gibt KEINE neuen Konstruktionen.
Der Scan des Bildschirms, der zeigt, dass neue Fraktale entstanden sind, aber die Linien nicht neu angeordnet wurden, ist über den Link abrufbar.
***
Leider ist der Link entfernt worden.
Leider ist der Link entfernt worden.
Links zu Seiten Dritter sind verboten.
Links zu Websites von Dritten sind nicht erlaubt.
Wie kann ich einen Scan des Testbildschirms veröffentlichen? Ich kann ihn nur im PDF-Format herausgeben, und ich weiß, dass dieses Format im Forum nicht akzeptiert wird.
Wie kann ich einen Bildschirmscan des Testers veröffentlichen? Ich kann ihn nur im PDF-Format herausgeben, und ich weiß, dass dieses Format im Forum nicht akzeptiert wird.
Ein Bildschirmfoto ist ein Bild. Was hat das mit PDF zu tun? Speichern Sie den Screenshot als png-Bild und fügen Sie das Bild in Ihren Beitrag ein.
Links zu Websites Dritter sind verboten.
Vladimir, guten Abend. Sie sind ein erfahrener Programmierer, wenn man Ihre Veröffentlichungen und Arbeiten betrachtet. Könnten Sie mich bitte über das Wesen dieses Threads aufklären - das Programm funktioniert nicht in der Testversion, aber es funktioniert korrekt auf den Online-Charts. Der Autor antwortet nicht, offenbar ist er beschäftigt.
- 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.
Fractal_TL:
Ein Indikator, der automatisch Trendlinien auf der Basis von Fraktalen des angegebenen Zeitrahmens zeichnet.
Autor: Almat Kaldybay