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

 

Berechnungdes Medianpreises in einem bestimmten Intervall mit einer bestimmten Anzahl von Näherungen.

Hallo Es gibt eine Reihe von Werten.

Die Aufgabe besteht darin, eine Funktion zu schreiben.

Eingabeparameter:

- das Array enthält die Anzahl der erforderlichen Elemente zur Berechnung des Medians - bufInBar[]

- Array-Größe -bufInBar[]- Anzahl

- Anzahl der Median-Annäherungen - fokus

void medianaL0(const int &bufInBar[], int count, int fokus)

Das heißt, es gibt eine Klasse

bufInBar[i] - используется для загрузки нужного элемента при расчете медианы 

BP[bufInBar[i]].CenaPerioda; - по этому значению рассчитывается медиана
BP[bufInBar[i]].Period; 

Am Ausgang :

BP[bufInBar[i]].Mediana; 

Wird in aufsteigender Reihenfolge ausgefüllt, z. B. von 0 bis 10.

Das heißt, wennfokus=10 in der Bedingung, dann in dem Intervall i<zählen die zehn Werte

BP[bufInBar[i]].Mediana;

wird 1 bis 10 sein.

Zum Beispiel

BP[3256].Mediana=0;
BP[6256].Mediana=1;
BP[9256].Mediana=2;
...
 
Es ist nicht klar, worauf der Fokus liegt
 
Theoretisch ist der Median der Wert des Elements in der Mitte einer geordneten Anordnung. Was ist das in Ihrem Fall?
 
Dmitry Fedoseev:
Es ist nicht klar, was fokus ist
Aleksei Stepanenko:
Theoretisch ist der Median der Wert des Elements in der Mitte einer geordneten Anordnung. Was ist das in Ihrem Fall?

Beispiel:

Array mit 30 MA-Kurswerten, Suche nach der Mitte des geordneten Arrays.

Wir erhalten den Wert 15(L0) in der Mitte des Arrays, dann erhalten wir zwei Arrays von L0 abwärts und L0 aufwärts und finden die Mitte dieser Arrays und so weiter, bis wir dieFokusszahl erhalten(sieben Werte zum Beispiel)

                        --------------|--------------
                        -------|--------------|------
                        ---|-------|------|-------|--
fokus=7
| - значение цены
        

 
Mikhail Toptunov:

Beispiel:

Array mit 30 MA-Kurswerten, Suche nach der Mitte des geordneten Arrays.

Wir erhalten 15(L0) als den Wert in der Mitte des Feldes, dann erhalten wir zwei Felder von L0 abwärts und L0 aufwärts und finden die Mitte dieser Felder und so weiter, bis wir dieFokusszahl erhalten(sieben Werte zum Beispiel)

Und wenn es eine gerade Anzahl von Array-Elementen gibt, welches Element ist dann der Median, oder sollte er als Durchschnitt von zwei oder etwas anderem berechnet werden?

 
Mikhail Toptunov:

Beispiel:

Gehe ich recht in der Annahme, dass wir sieben Perzentile finden müssen: 12,5, 25, 37,5, 50, 62,5, 75, 87,5?

Wenn ja, dividieren Sie die Anzahl der Elemente in der geordneten Reihe durch 8 (7+1) und multiplizieren Sie mit der gewünschten Anzahl der Perzentile. Wir erhalten die folgenden Element-Indizes: 3, 7, 11, 15, 18, 22, 26.

int index=ArraySize(bufInBar)*percentile/(fokus+1);

//где percentile - номер нужного перцентиля от 1 до fokus 

double value=bufInBar[index];

Richtig, oder bin ich auf dem falschen Weg? Wenn dies der Fall ist, besteht das Wichtigste darin, einen sparsamen Mechanismus für die Verwaltung einer geordneten Anordnung zu schaffen.

 
Warum kannMathQuantile() nicht verwendet werden?
 
Dmitry Fedoseev:

Und wenn das Array eine gerade Anzahl von Elementen hat, welches Element ist dann der Median, oder sollte er als Durchschnitt von zwei oder so berechnet werden?

Ich denke, es ist einfacher, einen geraden ganzzahligen Wert zu nehmen.

Wenn es 15 Elemente gibt, ist der Median 8.

 
Aleksei Stepanenko:

Verstehe ich das richtig, dass wir sieben Perzentile finden müssen: 12,5, 25, 37,5, 50, 62,5, 75, 87,5?

Ist dies der Fall, teilen Sie die Anzahl der Elemente in der geordneten Reihe durch 8 (7+1) und multiplizieren Sie mit der Zahl des gewünschten Perzentils. Wir erhalten die folgenden Element-Indizes: 3, 7, 11, 15, 18, 22, 26.

Richtig, oder bin ich auf dem falschen Weg? Wenn dies der Fall ist, besteht das Wichtigste darin, einen sparsamen Mechanismus für die Verwaltung einer geordneten Anordnung zu schaffen.

Aus der Reihe der MA-Werte müssen Sie den Median der gesamten Reihe ermitteln, dann die Mediane der Reihen, die über/unter dem ersten Median liegen, usw.

 

Es scheint richtig zu sein, dass der Median des ersten Teils des Feldes ein Viertel des gesamten Feldes ist, und es ist 25 Perzentil. Und der Median des zweiten Teils ist das 75-Perzentil.

Dies:

                        --------------|---------------
                        -------|--------------|-------
                        ---|-------|------|-------|---

gleicht dies aus:

                        ---|---|---|---|---|---|---|---