Fehler, Irrtümer, Fragen - Seite 2190

 
Alexey Viktorov:

Nach dreiminütigem Experimentieren bin ich zu dem Schluss gekommen, dass die Verschiebung von


und nicht von der aktuellen Position aus.

Und? Die Anzahl der sichtbaren Balken ändert sich. Besser wäre es, zu prüfen, wann sich das Diagramm mit der Maus bewegt. Sie können es fangen. Und wenn sich das Diagramm bei einer Mausbewegung verschiebt, handelt es sich nicht um eine Funktion.
 
Artyom Trishkin:
Und? Die Anzahl der sichtbaren Balken ändert sich. Besser wäre es, zu überprüfen, ob das Diagramm mit der Maus bewegt wird. Sie können es fangen. Wenn sich ein Diagramm mit der Maus verschiebt, ist es nicht funktionsfähig.

Ich habe nicht von einer Laufzeitprüfung gesprochen. Wenn Sie den Chart manuell um 100 Balken nach rechts verschieben und dann versuchen, ihn um weitere 10 Balken nach rechts zu verschieben, wird der Offset auf 10 von der im Bild gezeigten Markierung gesetzt. In diesem Beispiel wird die Verschiebung nicht um 10 nach rechts, sondern um 90 nach links erfolgen.

Und was die Überprüfung angeht... was bringt es, etwas zu überprüfen, das nicht wie erwartet funktioniert? Genauer gesagt, nicht wie erwartet. Um das Diagramm mehr als einmal zu verschieben, sollte der Versatz von CHART_CURRENT_POS aus erfolgen, und im Beispiel war es CHART_END.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Fehler, Irrtümer, Fragen

Aleksey Vyazmikin, 2018.04.12 15:43

Wenn ich das Skript oft aufrufe - immer wieder nach der Ausführung - funktioniert der Diagramm-Offset nicht mehr, d.h. die Befehle für diese Aktion werden übersprungen

   long handle=ChartID(); 
   if(handle>0) // если получилось, дополнительно настроим 
     { 
      ChartNavigate(handle,CHART_END,-2000); 
     } 

Darin liegt das Problem.

 
Alexey Viktorov:

Ich habe nicht von einer Laufzeitprüfung gesprochen. Wenn Sie den Chart manuell um 100 Balken nach rechts verschieben und dann versuchen, ihn um weitere 10 Balken nach rechts zu verschieben, wird der Offset auf 10 von der im Bild gezeigten Markierung gesetzt. In diesem Beispiel wird die Verschiebung nicht um 10 nach rechts, sondern um 90 nach links erfolgen.

Und was die Überprüfung angeht... was bringt es, etwas zu überprüfen, das nicht wie erwartet funktioniert? Genauer gesagt, nicht wie erwartet. Um das Diagramm mehr als einmal zu verschieben, müssen wir von CHART_CURRENT_POS und im Beispiel von CHART_END abweichen.


Darin liegt das Problem.

Ich habe den Code nicht gelesen. Vielleicht braucht es das so.

Was ich damit sagen will, ist, dass die Diagramm-Offset-Funktion asynchron ist, d.h., wenn sie den Erfolg der Ausführung zurückgibt, geht es nicht um den Diagramm-Offset, sondern um den Erfolg, einen solchen Auftrag in die Ereigniswarteschlange des Diagramms zu stellen. Und das ist nicht dasselbe - das wissen Sie.

Ich spreche also davon, das Ereignis der Ausführung des Diagrammverschiebungsbefehls abzufangen...

Ich wünschte, ich hätte Zeit zum Experimentieren... Aber leider...

 

Der Profiler zeigt keine Funktionssignaturen an, so dass Sie nicht sofort erkennen können, welche überladene Funktion gemeint ist


D.h. die Liste ist mit __FUNCTION__ gefüllt, während ich __FUNCSIG__ haben möchte.

 

Helfen Sie, den Beitrag des Entwicklers zu finden, in dem der Quellcode von ArrayResize veröffentlicht wurde. Googeln nach "site:mql5.com/de/forum ArrayResize+reserve" hilft nicht weiter.

Ich erinnere mich, dass es einen Quellcode gab. Darin können Sie die Logik der Implementierung des Reserve-Parameters sofort erkennen.

 
fxsaber:

Helfen Sie, den Beitrag des Entwicklers zu finden, in dem der Quellcode von ArrayResize veröffentlicht wurde. Googeln nach "site:mql5.com/de/forum ArrayResize+reserve" hilft nicht weiter.

Ich erinnere mich, dass es einen Quellcode gab. Sie können die Logik hinter der Implementierung des Reserve-Parameters sofort erkennen.

Der Quellcode oder Pseudocode? Dies sind diametral unterschiedliche Dinge.

 
Artyom Trishkin:

Wenn Sie sich nur auf die Tatsache eines Offsets verlassen, können Sie die Karte von Hand verschieben - das ist ein Loch in der Logik...

Sie müssen offenbar den Versatz zum berechneten Balken überprüfen, nicht nur den Versatz. Ich muss nur noch herausfinden, wie man das richtig umsetzt...

Alexey Viktorov:

Ich habe nicht über die Kontrolle der Ausführung gesprochen. Wenn Sie das Diagramm manuell um 100 Balken nach rechts verschieben und dann versuchen, es mit dem Skript um weitere 10 Balken und ebenfalls nach rechts zu verschieben, wird der Versatz auf 10 von der auf dem Snapshot angezeigten Markierung gesetzt. In diesem Beispiel wird die Verschiebung nicht um 10 nach rechts, sondern um 90 nach links erfolgen.

Und was die Überprüfung angeht... was bringt es, etwas zu überprüfen, das nicht wie erwartet funktioniert? Genauer gesagt, nicht wie erwartet. Um das Diagramm mehr als einmal zu verschieben, müssen wir von CHART_CURRENT_POS abweichen und im Beispiel haben wir CHART_END.


Darin liegt das Problem.

Ich brauche CHART_END, weil wir die Verschiebung in der Schleife nach Daten durchführen sollen, und es ist bequemer, nach Daten entweder vom Anfang oder vom Ende der Daten zu suchen, anstatt von der Mitte...

 
Sergey Dzyublik:

Quellcode oder Pseudocode? Das sind völlig unterschiedliche Dinge.

Ich glaube, der Quellcode wurde direkt veröffentlicht. Aber selbst wenn es einen Pseudocode gibt, und er wird nützlich sein.

 
Aleksey Vyazmikin:

Sie müssen offenbar den Versatz zum berechneten Balken überprüfen, nicht nur den Versatz. Ich muss nur noch herausfinden, wie ich es richtig umsetze...

Ich brauche CHART_END, weil es soll ein Offset in den Zyklus von Daten zu tun, und es ist bequemer, für Daten von entweder den Anfang oder das Ende der Daten zu suchen, anstatt von der Mitte ...

Es gibt also kein Problem. Die Verschiebung wird nur dann unbemerkt bleiben, wenn Sie versuchen, die gleiche Anzahl von Takten 2 oder mehr Mal bei unveränderter Periode zu verschieben.

Ich hoffe, ich habe nicht vergessen, die automatische Verschiebung des Diagramms zu deaktivieren.

ChartSetInteger(0, CHART_AUTOSCROLL, 0, false);
 
Alexey Viktorov:

Es gibt also kein Problem. Die Verschiebung wird nur dann unbemerkt bleiben, wenn Sie versuchen, die gleiche Anzahl von Takten 2 oder mehr Mal mit der gleichen Periode zu verschieben.

Ich hoffe, ich habe nicht vergessen, den Autoskill zu deaktivieren?

Der automatische Bildlauf ist natürlich deaktiviert.