Die Probleme wurden bei den Backtests festgestellt und die Ursache kann nicht gefunden werden! - Seite 4

 
GumRai:

ermöglicht beim ersten Durchlauf eines geschlossenen Balkens andere Berechnungen als beim aktuellen Balken.

Beim ersten Tick eines neuen Balkens wird Folgendes getan

Bei den folgenden Ticks desselben Balkens berechnet es

Dies ist eine Art von Aufsummierung

Lieber GumRai,

Aktueller Bar, Bar[0] ist für das Re-Painting notwendig. Es geht also um das Problem, dass historische Balken mit Re-Painting beobachtet wurden, vielleicht Bar[8],...Bar[3],.., oder Bar[1].

Wie Sie sehen können, sind es nur etwa 10 Zeilen Code für den Hauptinhalt des Indikators.

Es ist jedoch immer noch sehr schwierig für uns, die Ursache für das erneute Malen der historischen Balken zu finden.

Es ist so seltsam und ich bin verwirrt, wie die historischen Balken mit diesem Code neu gezeichnet werden können.

 

Wie ich schon sagte, berechnet der Indikator bar[0] jeden Tick neu, indem er einen Wert verwendet, der im vorherigen Tick desselben Balkens berechnet wurde.

Während das Testprogramm läuft, berechnet der Indikator in Pseudo-Echtzeit, auch wenn der Indikator nicht im Diagramm angezeigt wird.

Wenn der Tester beendet ist, wird der Indikator zum Chart hinzugefügt und berücksichtigt nicht alle Ticks, da er nur einmal pro Bar berechnet wird.

Probieren Sie es aus, indem Sie den Indikator im visuellen Modus auf den Chart setzen.

 
jollydragon:

Lieber ffoorr, ich kann die Seiten nicht öffnen und habe keinen Zugriff auf die Website www.forex-tsd.com. Vielleicht hat meine Internetkonfiguration ein Problem.

Konzentrieren wir uns bitte auf meinen Code. Es sind nur etwa 10 Zeilen Code für den Hauptinhalt.

Es ist jedoch immer noch sehr schwierig für uns, die Ursache für die erneute Anzeige der historischen Balken zu finden.


Verringern Sie den Zoom, um die Seitenzahl auf TSD aufzurufen,


der Indikator ist besser

 
GumRai:

Wie ich schon sagte, berechnet der Indikator bar[0] jeden Tick neu, indem er einen Wert verwendet, der im vorherigen Tick desselben Balkens berechnet wurde.

Probieren Sie es aus, indem Sie den Indikator im visuellen Modus auf den Chart setzen.

GumRai, bitte lesen Sie meine vorherigen Beiträge:

. Es ist kein Problem, dass bar[0] neu gezeichnet wird, da es notwendig ist.

. In diesem Thread geht es genau darum, warum die historischen Balken links von bar[0] neu gezeichnet wurden, und das ist nicht zu erwarten. Ich habe es bereits in Charts beobachtet und Screenshots eingefügt.

Liebe Leute, bitte lasst uns auf meine Codes konzentrieren und uns gemeinsam verbessern, indem wir die Ursache ausgraben. Ich brauche keinen besseren Indikator, sondern möchte die Ursache kennen!

Vielen Dank für Ihr Verständnis und Ihre Unterstützung.

 

Sie scheinen nicht zu verstehen, was ich Ihnen sagen will.

Ich weiß nicht, ob es daran liegt, dass ich mich nicht gut ausdrücke oder ob Sie meine Beiträge einfach nicht richtig lesen.

Wenn Sie den Indikator neu initialisieren, wird der gesamte Indikator auf der Grundlage eines Ticks pro Takt neu berechnet, während er in Echtzeit auf mehreren Ticks in einem Takt basiert.

Wenn der Indikator also in Echtzeit gezeichnet und dann neu initialisiert wird, kommt es zu Unterschieden.

 
GumRai:

Sie scheinen nicht zu verstehen, was ich Ihnen sagen will.

Ich weiß nicht, ob es daran liegt, dass ich mich nicht gut ausdrücke, oder ob Sie meine Beiträge einfach nicht richtig lesen.

Wenn Sie den Indikator neu initialisieren, wird der gesamte Indikator auf der Grundlage eines Ticks pro Takt neu berechnet, während er in Echtzeit auf mehreren Ticks in einem Takt basiert.

Wenn der Indikator also in Echtzeit gezeichnet und dann neu initialisiert wird, kommt es zu Unterschieden.

Tut mir leid, dass Englisch nicht meine Muttersprache ist.

Unabhängig davon, ob er bei der Neuinitialisierung oder in Echtzeit gezeichnet wird, wird jeder historische Balken auf der Grundlage des letzten Ticks berechnet.

Daher sollte der historische Balken auch so eingefroren werden. Ist das richtig? Wie kann man den Unterschied oder das erneute Zeichnen beobachten, wenn man den Indikator in einem Live-Chart mit M1 für eine Periode beobachtet?

 
Es scheint, dass dies kein einfaches Problem ist und die Fähigkeiten vieler Kodierungsexperten übersteigt.
 

Nun, es scheint mir ein einfaches Problem zu sein, es ist nur so, dass Sie die Antwort nicht verstehen.

Versuchen Sie den beigefügten Code, in dem Sie hoffentlich sehen können, was passiert

Ich habe gerade die Schleife zum Zeichnen des Indikators geändert in

   for(i=limit-1; i>=0; i--)
     {
      ExtBuffer1[i]=1.1*Fish1;
      Fish1=ExtBuffer1[i];
      if(Fish1>=EMPTY_VALUE)
         Fish1=1;
     }

und den Anfangswert für Fish1

Fish1=0.00001;

Führen Sie ihn auf einem M1-Chart mit regelmäßigen Ticks aus. Sie werden sehen, dass sich verschiedene Peaks bilden.

Wenn Sie den Indikator neu initialisieren, werden Sie sehen, dass all diese Spitzen verschwinden.

Wenn Sie eine nicht so gute Internetverbindung haben und ein Balken verpasst wird, wird der gesamte Indikator neu berechnet, so dass die Spitzen verschwinden.

Verstehen Sie nun, warum?

Dateien:
 
GumRai:

Nun, es scheint mir ein einfaches Problem zu sein, es ist nur so, dass Sie die Antwort nicht verstehen.

Versuchen Sie den beigefügten Code, in dem Sie hoffentlich sehen können, was passiert

Ich habe gerade die Schleife zum Zeichnen des Indikators geändert in

und den Anfangswert für Fish1

Führen Sie ihn auf einem M1-Chart mit regelmäßigen Ticks aus. Sie werden sehen, dass sich verschiedene Peaks bilden.

Wenn Sie den Indikator neu initialisieren, werden Sie sehen, dass all diese Spitzen verschwinden.

Wenn Sie eine nicht so gute Internetverbindung haben und ein Balken verpasst wird, wird der gesamte Indikator neu berechnet, so dass die Spitzen verschwinden.

Verstehen Sie nun, warum?

Lieber GumRai,

es scheint, dass Sie meinen Punkt verstanden haben.

Bitte sehen Sie sich die untenstehenden Screenshots an. Nachdem ich mit der rechten Maustaste auf Ihren Indikator geklickt und "Aktualisieren" gewählt hatte, änderte sich die Position der Spitzenwerte.

Ich kann aber immer noch nicht erkennen, warum. Deshalb kann ich die Ursache nicht in meinem neu gemalten Indikator finden.

. Laut dem von Ihnen geänderten Indikator sollte er eine Exponentiallinie zeichnen. Warum zeichnet er Spitzen mit Intervallen? Liegt es daran, dass es einen "leeren Wert" gibt?

. Warum ändert sich die Position der Spitzen nach dem Aktualisieren?

. Ich kann immer noch nicht sehen, dass die Spitzen verschwinden. Wie kann ich sie "neu initialisieren"?

Vor dem Aktualisieren:

Nach dem Aktualisieren:

 
jollydragon: Ich kann aber immer noch nicht erkennen, warum. Deshalb kann ich die Ursache nicht in meinem Re-Painting-Indikator finden.

   for(i=limit-1; i>=0; i--)
     {
      ExtBuffer1[i]=1.1*Fish1;
      Fish1=ExtBuffer1[i];
      if(Fish1>=EMPTY_VALUE)
         Fish1=1;
     }

Bei jeder Iteration (außer der ersten) ist Fish1 der Wert des vorherigen Pufferelements, aber Sie initialisieren ihn nicht auf ExtBuffer1[limit].

Für die erste Iteration (wenn Limit == Balken) setzen Sie also ExtBuffer1[0] = 1.1*ExtBuffer1[1] .

Aber für die nachfolgenden Ticks (wenn limit == 1) setzen Sie ExtBuffer1[0] = 1.1*0.00001 .

Grund der Beschwerde: