Come si fa ad algoritmizzare il rilevamento dei cluster di alimentazione MA? - pagina 9

 
Il simbolo Yin-Yang è stato proposto come modello per l'AM, non come "icona" dell'ateismo o della dialettica. Convergenza/divergenza dei prezzi rispetto al MA, si forma un nuovo estremo nei livelli di prezzo, ma il prezzo è più vicino al MA rispetto all'estremo precedente (in deviazioni statistiche), cioè si forma la probabilità di cambiamento di tendenza (incrocio MA), nessun incrocio, ma le condizioni esistono anche nel simbolo - la nascita dell'elemento avviene nella zona del valore opposto.
 
Aleksei Stepanenko:

Ragazzi, non so ancora se è in alto o in basso.

Giusto.

 
Aleksey Nikolayev:

Quali quantili devono essere contati, per esempio

{0,5} - mediana

{0.25, 0.5, 0.75} - quartili

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

Può dirmi qualcosa?

Se passo un array attraverso MathQuantile, devo ordinarlo?

- Ho capito che non importa se è ordinato o no.


Si scopre che l'indice non è riconducibile alla matrice. Il quantile è contato dal prezzo, e l'indice della matrice a cui il prezzo è legato ...

 

Capisco che questa matematica con una mediana o un quantum, non risolve il problema in modo soddisfacente!

Qualcosa che non posso...

 

Viene restituito un array di valori dei quantili specificati. Gli indici di questi valori nell'array non ordinato non sono noti. L'intera questione riguarda la velocità. Se questa funzione viene calcolata su ogni barra e l'array di valori è grande, il tempo di ottimizzazione può essere ritardato. Io andrei in un altro modo, ma dipende da voi.

 
Mikhail Toptunov:

Se si passa un array attraverso MathQuantile, dovrebbe essere ordinato?

Qualsiasi permutazione (ordinamento, per esempio) non dovrebbe cambiare il risultato.

 
Aleksei Stepanenko:

Viene restituito un array di valori dei quantili specificati. Gli indici di questi valori nell'array non ordinato non sono noti. L'intera questione riguarda la velocità. Se questa funzione viene calcolata su ogni barra e l'array di valori è grande, il tempo di ottimizzazione può essere ritardato. Io prenderei una strada diversa, ma dipende da voi.

Quale strada prenderesti?

Alexey, in che modo risolverebbe il problema)!

 

Non so quale compito ti sei prefissato, ma in generale, meno calcoli ciclici ci sono, più veloce è l'algoritmo. C'è un ciclo di base - è un passaggio attraverso tutte le barre della storia, non possiamo allontanarci da esso. Ma dovremmo cercare di sbarazzarci degli altri. Le funzioniMathQuantile, iHighest e altre sonoin effetti dei cicli nascosti. Per accelerare, dobbiamo elaborare le informazioni man mano che arrivano e memorizzarle prima della prossima barra. Nei calcoli attuali, non usate dati storici grezzi, ma i dati preparati in precedenza.

Nel caso di trovare mediane e altri quantili, è meno costoso mantenere un array ordinato man mano che le informazioni arrivano. Ho scritto il codice qui sopra. Se avete una "finestra scorrevole" entro la quale le informazioni sono necessarie, dovete pensare a come rimuovere i vecchi valori dall'array nello stesso modo veloce. Probabilmente avrete bisogno di un altro array per memorizzare gli indici.

 
Maxim Kuznetsov:

algoritmo di calcolo approssimativo della mappa termica (ad esempio per 100 bar):

per tutti i Close da 1 a 100 :

Close[N]=X aggiungerà a heatmap la somma delle righe heatmap[Resolution(X)]+={X/N} + {X/(N+1)}+{X/(N+2)}... fino a 100.
Ciò che è tra parentesi graffe è il "componente" delle medie, appena evidenziato.
Risoluzione(X) - "risoluzione", ad esempio 10 punti Round((X-MinimalX)/Point/10)

ottenere un vettore in cui si devono trovare i massimi locali.

Questo vettore è praticamente un profilo verticale dei prezzi

Potresti aiutarmi a calcolare la heatmap? Ho provato la mediana, il quantile non dà una buona indicazione dei cluster MA.

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

Se si può mostrare ciò che deve essere fatto, il calcolo (una barra alla volta).

 
Mikhail Toptunov:

Per favore, potresti aiutare a calcolare la mappa di calore? provato attraverso la mediana, il quantile non funziona per ottenere un rilevamento normale dei cluster MA.

Se si può mostrare ciò che deve essere fatto, il calcolo (una barra alla volta).

Mostrerò i risultati direttamente, senza ottimizzazioni, matrici e matematica complicata:

1. Per la barra corrente calcoliamo tutte le MA separatamente. Otteniamo l'array SMA[N] dove si trovano i valori dei massimi fino a N.

2. creiamo una heatmap[M] che copre i prezzi dal minimo=1,00000, ogni elemento è responsabile di (per esempio) 10 punti.

3. Riempiamo questa heatmap "grezza": prendiamo ogni valore di ma e vediamo a quale cella si riferisce. indice=(SMA[i]-minimo)/risoluzione. Aumentiamo il valore di questa cella hetmap[index]+=1.0

È possibile emettere il risultato in CSV e pensare

4. Smussare i valori "grezzi" della heatmap: avviare l'array smooth[] e leggere la media smotch[i]=valore medio della heatmap da i-finestra a i+finestra compresa

5. I massimi locali di smootch indicheranno un "cluster di alimentazione". Spero che tu sappia come cercare i massimi :-)

i punti 1-5 possono essere decomposti matematicamente e calcolati molto più velocemente, con cicli minimi e array extra, ma non necessariamente più evidenti