Indikatoren: Kursprognose mit Nearest Neighbor ermittelt durch einen gewichteten Korrelationskoeffizienten - Seite 3

 
Amos Tsopotsa #:

dieser Code muss leicht verbessert werden, aber okay, deine Idee ist sinnvoll

Ich habe den Code leicht verbessert, indem ich:

  • Hinzufügen einer Variablen im globalen Bereich für b, und
  • Hinzufügen einer lastPatternStartTime-Variable und einer Bedingung, die sie mit der Startzeit eines neuen Musters vergleicht und ChartRedraw() aufruft, wenn sie nicht übereinstimmen.
(Nach dem, was ich in einigen Stunden des Testens herausfinden konnte, erschien das Chaos der vertikalen Linie, wenn ein neues Muster gefunden wurde).
 

Ein paar weitere kleine Verbesserungen:

  • OnInit() wurde von einem void zu einem int geändert, so dass es jetzt INIT_SUCCEEDED zurückgibt,
  • Hinzufügen einer terminalweiten GlobalVariable (GV), die den ersten zukünftigen Kurswert des Indikators speichert (CopyBuffer() funktioniert nicht in einem EA mit "zukünftigen Indikator-Pufferwerten "), und
  • OnDeinit() hinzugefügt, wobei die GV automatisch aus dem Terminal gelöscht wird.

Der Zweck dieser Änderungen ist es, den Indikator besser für den automatisierten Handel geeignet zu machen. Wenn Sie mehr Future-Kurswerte für Ihre Zwecke benötigen, durchlaufen Sie einfach die Balken 0 bis 48 am Ende des Codes und aktualisieren Sie den GV-Wert.

 
Ryan L Johnson #:


  • Hinzufügen einer terminalweiten GlobalVariable (GV), die den ersten Future-Preiswert des Indikators speichert(CopyBuffer() funktioniert nicht in einem EA mit " Future-Indikator-Pufferwerten "),

Der Zweck dieser Änderungen ist es, den Indikator für den automatisierten Handel besser geeignet zu machen. Wenn Sie weitere Future-Kurswerte für Ihre Zwecke benötigen, durchlaufen Sie einfach die Balken 0 bis 48 am Ende des Codes und aktualisieren Sie den GV-Wert.

Warum ist das so? Sie können auf alle Werte aus den Puffern des Indikators zugreifen , auch auf die des Futures.
MQL5 Book: Getting timeseries data from an indicator: CopyBuffer / Creating application programs
MQL5 Book: Getting timeseries data from an indicator: CopyBuffer / Creating application programs
  • www.mql5.com
An MQL program can read data from the indicator's public buffers by its handle. Recall that in custom indicators, such buffers are arrays specified...
 
Stanislav Korotky #:
Warum ist das so? Sie können auf beliebige Werte aus Indikatorpuffern zugreifen , auch aus der Zukunft.

Ich konnte das in Indikatoren tun, aber nicht in EAs. Haben Sie ein anderes Beispiel/einen anderen Artikel, der dies in einem EA tut, bitte?

 
Ryan L Johnson #:

Ich konnte das in Indikatoren tun, aber nicht in EAs. Haben Sie ein anderes Beispiel/Artikel, der dies in einem EA tut, bitte?

Bitte ignorieren Sie meinen Beitrag #24. Ich vermute, dass ich die falsche Form von Copybuffer() in einem EA verwendet habe. Die richtige Form scheint zu sein:

"[I]n den Parametern CopyBuffer ( erste Form) muss manoffset gleich (- N)angeben..."

int CopyBuffer(int handle, int buffer, int offset, int count, double &array[])
 

@Stanislav Korotky, Danke für den Hinweis auf die Dokumentation. Die "erste Form" ist sehr nützlich für das Kopieren zukünftiger Pufferwerte, insbesondere bei benutzerdefinierten Charts.

@Vladimir, ich danke Ihnen, wenn auch verspätet, für die Veröffentlichung des Quellcodes dieses Indikators. Ich hatte keine Ahnung, wie gültig solche Kursmuster von vor Jahrzehnten heute sein könnten. Ich habe ihn benutzt, um gleich zu Beginn 2 Gewinntrades zu erzielen. Der eine war um 1999, der andere um 2005.

Hier ist der Code des Indikators, den ich jetzt verwende (ohne GV):

 

Es ist denkbar, dass ein neues Preismuster mit der gleichen Startzeit, aber einer anderen Endzeit als das aktuelle Muster auftauchen könnte, daher habe ich die Endzeit des Musters in die bedingte ChartRedraw()-Funktion aufgenommen. Entweder eine Startzeitdifferenz oder eine Endzeitdifferenz wird ChartRedraw() aufrufen.

 

Dieser Indikator kann getestet werden

Es ist notwendig, dem Indikator zwei vertikale Linien hinzuzufügen - den Beginn der Berechnung und das Ende der Berechnung

Und Sie können sofort sehen, wo die rote Linie sein wird und wie das Diagramm geformt wurde, d.h. ob die Prognose funktioniert.

 
Renat Akhtyamov vertikale Linien hinzuzufügen - den Beginn der Berechnung und das Ende der Berechnung

Und Sie können sofort sehen, wo die rote Linie sein wird und wie das Diagramm geformt wurde, d.h. ob die Prognose funktioniert.

Das ist der Zweck der blauen Linie, die die offenen Kurse des historischen Musters als Overlay einzeichnet.
 
Hier ist ein "dummer einfacher" Indikator für den offenen Balkenpreis, der, wenn Sie so wollen, mit der historischen blauen Linie übereinstimmt.