Wie funktioniert der Algorithmus zur Erkennung von MA-Futtermittelclustern? - Seite 9

 
Das Yin-Yang-Symbol wurde als Modell für die MA vorgeschlagen, nicht als "Ikone" des Atheismus oder der Dialektik. Konvergenz/Divergenz der Preise in Bezug auf den MA, es bildet sich ein neues Extremum in den Preisniveaus, aber der Preis ist näher am MA als das vorherige Extremum (in statistischen Abweichungen), d.h. es bildet sich die Wahrscheinlichkeit eines Trendwechsels (MA-Kreuzung), keine Kreuzung, aber es bestehen auch Bedingungen im Symbol - die Geburt des Elements erfolgt im Bereich des entgegengesetzten Wertes.
 
Aleksei Stepanenko:

Leute, ich weiß immer noch nicht, ob es aufwärts oder abwärts geht.

Richtig.

 
Aleksey Nikolayev:

Welche Quantile sollen gezählt werden, z. B:

{0.5} - Median

{0,25, 0,5, 0,75} - Quartile

{0,01, 0,02, ..., 0,99} - persentil

Können Sie mir etwas sagen?

Wenn ich ein Array durch MathQuantile übergebe , sollte ich es dann sortieren?

- Ich habe verstanden, dass es keine Rolle spielt, ob es sortiert ist oder nicht.


Es stellt sich heraus, dass der Index nicht auf das Array zurückgeführt werden kann. Das Quantil wird nach dem Preis gezählt, und der Index des Arrays, mit dem der Preis verknüpft ist ...

 

Ich verstehe, dass diese Mathematik mit einem Median oder Quantum, das Problem nicht zufriedenstellend löst!

Etwas, das ich nicht...

 

Es wird ein Array von Werten der angegebenen Quantile zurückgegeben. Die Indizes dieser Werte in dem unsortierten Array sind nicht bekannt. Bei der ganzen Frage geht es um Geschwindigkeit. Wenn diese Funktion für jeden Takt berechnet wird und das Wertefeld groß ist, kann sich die Optimierungszeit verzögern. Ich würde einen anderen Weg einschlagen, aber das ist Ihre Sache.

 
Mikhail Toptunov:

Wenn Sie ein Array durch MathQuantile übergeben , sollte es sortiert werden?

Jede Permutation (z. B. Sortierung) sollte das Ergebnis nicht verändern.

 
Aleksei Stepanenko:

Es wird ein Array von Werten der angegebenen Quantile zurückgegeben. Die Indizes dieser Werte in dem unsortierten Array sind nicht bekannt. Bei der ganzen Frage geht es um Geschwindigkeit. Wenn diese Funktion für jeden Takt berechnet wird und das Wertefeld groß ist, kann sich die Optimierungszeit verzögern. Ich würde einen anderen Weg wählen, aber das ist Ihre Sache.

Welchen Weg würden Sie einschlagen?

Alexey, auf welche Weise würde das Problem gelöst werden)!

 

Ich weiß nicht, welche Aufgabe Sie sich gestellt haben, aber im Allgemeinen gilt: Je weniger zyklische Berechnungen, desto schneller ist der Algorithmus. Es gibt einen grundlegenden Zyklus - es ist ein Durchlauf durch alle Balken der Geschichte, wir können ihm nicht entkommen. Aber wir sollten versuchen, den Rest von ihnen loszuwerden. BeiMathQuantile, iHighest und anderen Funktionen handelt es sichin Wirklichkeit umversteckte Schleifen. Um dies zu beschleunigen, sollten die Informationen beim Eintreffen verarbeitet und bis zum nächsten Takt gespeichert werden. Verwenden Sie bei der aktuellen Berechnung keine historischen Rohdaten, sondern die zuvor aufbereiteten Daten.

Bei der Suche nach Medianen und anderen Quantilen ist es weniger kostspielig, ein geordnetes Array aufrechtzuerhalten, wenn die Informationen eintreffen. Ich habe den obigen Code geschrieben. Wenn Sie ein "gleitendes Fenster" haben, innerhalb dessen Informationen benötigt werden, müssen Sie sich überlegen, wie Sie alte Werte auf dieselbe schnelle Weise aus dem Array entfernen können. Sie werden wahrscheinlich ein weiteres Array benötigen, um die Indizes zu speichern.

 
Maxim Kuznetsov:

einen ungefähren Algorithmus zur Berechnung einer Wärmekarte (z. B. für 100 bar):

für alle Schließen von 1 bis 100 :

Close[N]=X addiert zur Heatmap die Summe der Zeilen heatmap[Resolution(X)]+={X/N} + {X/(N+1)}+{X/(N+2)}... bis zu 100.
Was in geschweiften Klammern steht, sind die "Komponenten" der Durchschnittswerte, die gerade hervorgehoben wurden.
Auflösung(X) - "Auflösung", z. B. 10 Punkte Round((X-MinimalX)/Point/10)

erhalten Sie einen Vektor, in dem Sie lokale Maxima finden müssen.

Dieser Vektor ist praktisch ein vertikales Preisprofil

Könnten Sie mir bitte bei der Berechnung der Heatmap helfen? Ich habe es mit Median und Quantil versucht, aber das gibt keinen guten Hinweis auf MA-Cluster.

//Pmax - количество Скользящих Средних МА
//masPra[] - значение цены МА по текущему бару
//masPer[] - значение индексов массива цен МА, для сортировки
void medianaL0_2(const double &masPra[],const int &masPer[])
 {
  // MathQuickSort(masPra,masPer,10,Pmax-1,1); // сортируем массив цен с 10 периода, по Pmax-1
  

Wenn Sie zeigen können, was zu tun ist, Berechnung (ein Balken nach dem anderen).

 
Mikhail Toptunov:

Könnten Sie mir bitte helfen, die Heatmap zu berechnen? Ich habe es mit Median und Quantil versucht, aber es funktioniert nicht, um eine normale Erkennung von MA-Clustern zu erreichen.

Wenn Sie zeigen können, was zu tun ist, Berechnung (ein Balken nach dem anderen).

Ich werde die Ergebnisse direkt zeigen, ohne Optimierungen, Matrizen und komplizierte Mathematik:

1) Für den aktuellen Balken berechnen wir alle MAs separat. Wir erhalten das Feld SMA[N], in dem sich die Werte der Maxima bis N befinden.

2. Wir erstellen eine Heatmap[M], die Preise ab Minimum=1,00000 abdeckt, wobei jedes Element für (z.B.) 10 Punkte verantwortlich ist.

3. Wir füllen diese "rohe" Heatmap: Wir nehmen jeden ma-Wert und sehen, auf welche Zelle er sich bezieht. index=(SMA[i]-minimum)/Auflösung. Wir erhöhen den Wert dieser Zelle hetmap[index]+=1.0

Sie können das Ergebnis in CSV ausgeben und denken

4. Glätten der "rohen" Heatmap-Werte: Array smooth[] beginnen und den Durchschnittswert smotch[i]=Durchschnittswert der Heatmap von i-Fenster bis einschließlich i+Fenster lesen

5. Die lokalen Maxima von smootch deuten auf einen "Cluster of Feeds" hin. Ich hoffe, Sie wissen, wie man nach maxima sucht :-)

Die Punkte 1-5 können mathematisch zerlegt und viel schneller berechnet werden, mit einem Minimum an Schleifen und zusätzlichen Arrays, aber nicht unbedingt offensichtlicher

Grund der Beschwerde: