Come si fa ad algoritmizzare il rilevamento dei cluster di alimentazione MA? - pagina 9
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ragazzi, non so ancora se è in alto o in basso.
Giusto.
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.
Se si passa un array attraverso MathQuantile, dovrebbe essere ordinato?
Qualsiasi permutazione (ordinamento, per esempio) non dovrebbe cambiare il risultato.
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.
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.
Se si può mostrare ciò che deve essere fatto, il calcolo (una barra alla volta).
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