Comment algorithmez-vous la détection des clusters d'alimentation MA ? - page 9

 
Le symbole Yin-Yang a été suggéré comme modèle pour le MA, et non comme "icône" de l'athéisme ou de la dialectique. Convergence/divergence des prix par rapport à la MA, un nouvel extremum se forme dans les niveaux de prix, mais le prix est plus proche de la MA que de l'extremum précédent (en déviations statistiques), c'est-à-dire que la probabilité d'un changement de tendance se forme (croisement de la MA), pas de croisement, mais les conditions existent aussi dans le symbole - la naissance de l'élément se produit dans la zone de la valeur opposée.
 
Aleksei Stepanenko:

Les gars, je ne sais toujours pas si c'est en haut ou en bas.

Bien.

 
Aleksey Nikolayev:

Quels sont les quantiles qui doivent être comptés, par ex :

{0,5} - médiane

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

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

Tu peux me dire quelque chose ?

Si je passe un tableau à travers MathQuantile, dois-je le trier ?

- J'ai compris que ça n'a pas d'importance si c'est trié ou pas.


Il s'avère que l'indice n'est pas traçable au tableau. Le quantile est compté par prix, et l'indice du tableau auquel le prix est lié ...

 

Je comprends que ces mathématiques avec une médiane ou un quantum, ne résolvent pas le problème de manière satisfaisante !

Quelque chose que je ne peux pas...

 

Un tableau de valeurs des quantiles spécifiés est retourné. Les indices de ces valeurs dans le tableau non trié ne sont pas connus. Toute la question porte sur la vitesse. Si cette fonction est calculée sur chaque barre et que le tableau de valeurs est grand, le temps d'optimisation peut être retardé. Je prendrais un autre chemin, mais c'est à vous de voir.

 
Mikhail Toptunov:

Si vous passez un tableau à travers MathQuantile, doit-il être trié ?

Toute permutation (tri, par exemple) ne doit pas modifier le résultat.

 
Aleksei Stepanenko:

Un tableau de valeurs des quantiles spécifiés est retourné. Les indices de ces valeurs dans le tableau non trié ne sont pas connus. Toute la question porte sur la vitesse. Si cette fonction est calculée sur chaque barre et que le tableau de valeurs est grand, le temps d'optimisation peut être retardé. Je prendrais une autre voie, mais c'est à vous de voir.

Quel chemin prendriez-vous ?

Alexey, quelle voie permettrait de résoudre le problème) !

 

Je ne sais pas quelle tâche vous vous êtes fixée, mais en général, moins les calculs sont cycliques, plus l'algorithme est rapide. Il y a un cycle de base - c'est un passage par toutes les barres de l'histoire, on ne peut pas y échapper. Mais nous devrions essayer de nous débarrasser du reste d'entre eux. Les fonctionsMathQuantile, iHighest et autres sonten fait desboucles cachées. Pour accélérer, l'information doit être traitée au fur et à mesure qu'elle arrive et stockée jusqu'à la prochaine barre. Dans les calculs actuels, n'utilisez pas les données historiques brutes, mais les données préparées au préalable.

Dans le cas de la recherche de médianes et autres quantiles, il est moins coûteux de maintenir un tableau ordonné au fur et à mesure que les informations arrivent. J'ai écrit le code ci-dessus. Si vous disposez d'une "fenêtre glissante" dans laquelle des informations sont nécessaires, vous devez réfléchir à la manière de supprimer les anciennes valeurs du tableau de la même façon rapide. Vous aurez probablement besoin d'un autre tableau pour stocker les index.

 
Maxim Kuznetsov:

un algorithme approximatif pour calculer une carte thermique (par exemple pour 100 bars) :

pour tous les Close de 1 à 100 :

Close[N]=X ajoutera à la carte thermique la somme des lignes heatmap[Resolution(X)]+={X/N} + {X/(N+1)}+{X/(N+2)}... jusqu'à 100.
Ce qui est entre crochets est la "composante" des moyennes, juste mise en évidence.
Resolution(X) - "résolution", par exemple 10 points Round((X-MinimalX)/Point/10)

obtenir un vecteur dans lequel vous devez trouver les maxima locaux.

Ce vecteur est pratiquement un profil de prix vertical

Pourriez-vous m'aider à calculer la carte thermique? J'ai essayé la médiane, le quantile ne donne pas une bonne indication des clusters MA.

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

Si vous pouvez montrer ce qui doit être fait, calculez( une barre à la fois).

 
Mikhail Toptunov:

S'il vous plaît, pourriez-vous m'aider à calculer la carte de chaleur ? J'ai essayé par la médiane, le quantile ne fonctionne pas pour obtenir une détection normale des clusters MA.

Si vous pouvez montrer ce qui doit être fait, calculez( une barre à la fois).

Je vais vous montrer les résultats directement, sans optimisations, matrices et mathématiques compliquées :

1. pour la barre actuelle, nous calculons toutes les MAs séparément. Nous obtenons le tableau SMA[N] où se trouvent les valeurs des maxima jusqu'à N.

2. nous créons une carte thermique [M] qui couvre les prix à partir de minimum=1.00000, chaque élément est responsable de (par exemple) 10 points.

3. Nous remplissons cette carte thermique "brute" : nous prenons chaque valeur ma et voyons à quelle cellule elle se réfère. index=(SMA[i]-minimum)/résolution. Nous augmentons la valeur de cette cellule hetmap[index]+=1.0

Vous pouvez sortir le résultat vers CSV et penser

4. Lisser les valeurs "brutes" de la carte de chaleur : commencez le tableau smooth[] et lisez la moyenne smotch[i]=valeur moyenne de la carte de chaleur de i-fenêtre à i+fenêtre incluse.

5. Les maxima locaux du lissage indiqueront un "groupe d'aliments". J'espère que vous savez comment rechercher les maxima :-)

les points 1 à 5 peuvent être décomposés mathématiquement et calculés beaucoup plus rapidement, avec un minimum de boucles et de tableaux supplémentaires, mais pas nécessairement de manière plus évidente

Raison: