Beh, sì, è breve, ma questo è nella versione più semplice, e ci sono alcuni altri miglioramenti per quanto riguarda la velocità dell'algoritmo e la considerazione dei vincoli...
Questo ha implementato il supporto per le dimensioni dei dati fino a 3 inclusi, più un metodo di stima del limite inferiore e un test associato del percorso del candidato (da quanto ho capito, questo è molto più economico di DTW completo per dimensioni >1, dove il metodo principale diventa un problema TK-completo e porta a tempi di soluzione esponenziali)
C'è un articolo su DTW sul sito Habrahabra http://habrahabr.ru/blogs/algorithm/135087/, sembra essere molto chiaro, ma non riesco a capire come usare DTW per OHLC, qualcuno può spiegarmelo?
IgorM: C'è un articolo su DTW sul sito Habrahabra http://habrahabr.ru/blogs/algorithm/135087/, sembra essere molto chiaro, ma non riesco a capire come usare DTW per OHLC, qualcuno può spiegarmelo?
Il problema è che non capisco come usarlo, tutto quello che ho capito è che con DTW si possono adattare diversi periodi di tempo (BP) alla stessa scala per analisi successive, ma come... - non capire
Non ha funzionato, il sorgente DTW stesso è facile da portare su mql, in qualche modo:
il problema è che non capisco come usarlo, tutto quello che ho capito è che con DTW si possono adattare diverse sezioni temporali (BP) alla stessa scala per analisi successive, ma come... - non capire
Provato. Non sono nemmeno sicuro di come usarlo. L'output dovrebbe essere il percorso di trasformazione o i dati trasformati. Diciamo che cost[][] è una matrice di distanza. Ma dà un percorso con un ritorno (se cerchiamo il valore minimo in ogni colonna), la condizione "1. Monotonicità - il percorso non ritorna mai, cioè: entrambi gli indici, i e j, che sono usati nella sequenza, non diminuiscono mai". Inoltre, il percorso non raggiunge l'angolo opposto. In generale, non capisco bene il significato di tutte queste manipolazioni con i numeri quando si riempie l'array cost[][] - prima si contano semplicemente le distanze e poi si sommano.
Se abbiamo bisogno di contare le distanze tra ogni elemento t1 e ogni elemento t2, allora perché dovremmo eseguire così tanti calcoli, se abbiamo bisogno di soddisfare la condizione "1. Monotonicità - il percorso non ritorna mai, cioè: entrambi gli indici i e j utilizzati nella sequenza non sono mai diminuiti"?
DTW è completamente inadatto al compito da svolgere. DTW è usato per riconoscere il discorso (parole) in un flusso audio in tempo reale come segue (approssimativamente):
C'è un modello (parola) - una sequenza di dati, di lunghezza N.
C'è un flusso audio - una sequenza di dati, di lunghezza M >> N.
Dal flusso audio vengono selezionati i pezzi di dati più esterni, di lunghezza diversa (approssimativamente).
Ogni chunk viene confrontato con un modello da DTW.
Se il DTW massimo supera una certa soglia, si considera che una parola è stata pronunciata.
Quindi DTW è solo un criterio per confrontare due sequenze di lunghezza diversa. Niente di più.
Per cercare le parole nella storia dell'audio, DTW non è affatto adatto, perché richiede molte risorse. Per esempio, scoprire quante volte una parola è stata detta nell'ultima ora, usando DTW, è quasi impossibile.
Una soluzione rapida a questo problema è usare un algoritmo veloce per calcolare il CQ di Pearson. Così facendo, il DTW è convertito ogni volta da uno ZigZag con diversi parametri di input. Un tale algoritmo è molto facile da parallelizzare e funzionerà quasi in tempo reale se implementato utilizzando la GPU.
Un'altra domanda è: perché ne abbiamo bisogno? Nessuno ha risolto questo compito a livello serio. Ma sono quasi sicuro che dopo averlo risolto, ci sarà un altro chiodo nella bara della solidità della teoria dei modelli.
La teoria dei modelli, così come le onde di Elliott e Fibo non è un livello di pensiero tecnocratico.
qui sembra essere il codice sorgente http://www.bytefish.de/blog/dynamic_time_warping
C'è un articolo su DTW sul sito Habrahabra http://habrahabr.ru/blogs/algorithm/135087/, sembra essere molto chiaro, ma non riesco a capire come usare DTW per OHLC, qualcuno può spiegarmelo?
È già fatto per un prezzo unico?
Non ha funzionato, non è un problema portare il sorgente DTW a mql, in qualche modo:
Il problema è che non capisco come usarlo, tutto quello che ho capito è che con DTW si possono adattare diversi periodi di tempo (BP) alla stessa scala per analisi successive, ma come... - non capireNon ha funzionato, il sorgente DTW stesso è facile da portare su mql, in qualche modo:
il problema è che non capisco come usarlo, tutto quello che ho capito è che con DTW si possono adattare diverse sezioni temporali (BP) alla stessa scala per analisi successive, ma come... - non capireProvato. Non sono nemmeno sicuro di come usarlo. L'output dovrebbe essere il percorso di trasformazione o i dati trasformati. Diciamo che cost[][] è una matrice di distanza. Ma dà un percorso con un ritorno (se cerchiamo il valore minimo in ogni colonna), la condizione "1. Monotonicità - il percorso non ritorna mai, cioè: entrambi gli indici, i e j, che sono usati nella sequenza, non diminuiscono mai". Inoltre, il percorso non raggiunge l'angolo opposto. In generale, non capisco bene il significato di tutte queste manipolazioni con i numeri quando si riempie l'array cost[][] - prima si contano semplicemente le distanze e poi si sommano.
Se abbiamo bisogno di contare le distanze tra ogni elemento t1 e ogni elemento t2, allora perché dovremmo eseguire così tanti calcoli, se abbiamo bisogno di soddisfare la condizione "1. Monotonicità - il percorso non ritorna mai, cioè: entrambi gli indici i e j utilizzati nella sequenza non sono mai diminuiti"?
.
DTW è completamente inadatto al compito da svolgere. DTW è usato per riconoscere il discorso (parole) in un flusso audio in tempo reale come segue (approssimativamente):
Quindi DTW è solo un criterio per confrontare due sequenze di lunghezza diversa. Niente di più.
Per cercare le parole nella storia dell'audio, DTW non è affatto adatto, perché richiede molte risorse. Per esempio, scoprire quante volte una parola è stata detta nell'ultima ora, usando DTW, è quasi impossibile.
Una soluzione rapida a questo problema è usare un algoritmo veloce per calcolare il CQ di Pearson. Così facendo, il DTW è convertito ogni volta da uno ZigZag con diversi parametri di input. Un tale algoritmo è molto facile da parallelizzare e funzionerà quasi in tempo reale se implementato utilizzando la GPU.
Un'altra domanda è: perché ne abbiamo bisogno? Nessuno ha risolto questo compito a livello serio. Ma sono quasi sicuro che dopo averlo risolto, ci sarà un altro chiodo nella bara della solidità della teoria dei modelli.
La teoria dei modelli, così come le onde di Elliott e Fibo non è un livello di pensiero tecnocratico.
Il DTW è totalmente inadatto al compito da svolgere...
Qualcosa che ho inventato io, ma non so, è una sciocchezza.
La linea gialla è quella arancione allungata su quella rossa.