Confronto di due grafici di quotazione con distorsioni non lineari sull'asse X - pagina 7

 
hrenfx:

Come si risolve questo problema tramite DTW (esempio):

  1. Abbiamo bisogno di trovare situazioni simili sulla storia come le 100 barre estreme.
  2. La cronologia disponibile è di 1 000 000 di barre.
  3. In primo luogo, abbiamo preso 1.000.000 di sequenze di 50 barre e le abbiamo confrontate con il modello attraverso DTW.
  4. Poi abbiamo preso altri 1.000.000 di sequenze di 55 barre e le abbiamo confrontate tramite DTW con il modello.
  5. Questa volta sono 60 barre.
  6. .....
  7. A 100 bar.
  8. .....
  9. 300 bar. Ed è qui che possiamo fermarci.

In totale abbiamo fatto 50.000.000 di confronti usando l'algoritmo DTW che ha una complessità di O(N^2). Cioè molto approssimativamente 5 * 10^11 (500 miliardi) di operazioni di calcolo elementari sono state eseguite.

Ora è arrivata una nuova barra - abbiamo fatto di nuovo 500 miliardi di calcoli.

Abbiamo deciso di eseguirlo sulla storia, iniziando con 200.000 dell'elemento più esterno. Approssimativamente, ci vogliono 200.000 volte 500 miliardi di calcoli ciascuno per fare una corsa. Sono 10^17 calcoli in totale.

Anche se c'è un'ottimizzazione complicata, non darà un guadagno di più di due ordini di grandezza. Cioè, dovrete eseguire al massimo 10^15 calcoli.


Prima di dire queste sciocchezze, capite il principio dell'algoritmo. La complessità dell'algoritmo è O(n*m), dove n e m sono le lunghezze dei due vettori di input.

p.s. Nessun "a 50 barre, a 55 barre" dovrebbe essere fatto, perché una delle tre possibili distorsioni è la mancanza di un'osservazione.

p.p.s. Esiste anche DTW con vincoli di forma del percorso, il tuo "e possiamo fermarci lì" è anche completamente inutile.

p.p.p.s. Il tuo metodo "zigzag + calcolo di correlazione" mostrerà delle sciocchezze, poiché lo zigzag sarà basato sui massimi di una variabile casuale rumorosa, che ti dice poco.

p.p.p.s. Per la ricerca in un grande flusso audio, si usano metodi completamente diversi.

 
IgorM:
L'articolo su DTW su Habrahabr http://habrahabr.ru/blogs/algorithm/135087/ sembra essere scritto abbastanza bene, ma non riesco a capire come usare DTW per OHLC, qualcuno potrebbe spiegarmelo?


Per l'OHLC dovete pensare a una funzione per la spaziatura delle barre. Per esempio:

1. si danno due barre

2. approssimare ciascuna delle barre con un polinomio di terzo grado (per la barra C>O per punti: {(t[0];Open), (t[1];Low), (t[2];High), (t[3];Close)}, per barra O>C per punti {(t[0];Open), (t[1];High), (t[2];Low), (t[3];Close)}, dove t[i]=i/3)

3. Considerare la distanza come radice quadrata dell'integrale del quadrato della differenza di due polinomi sull'intervallo 0..1.

(non inventato da me, il metodo sembra essere ben noto e disponibile a tutte le persone interessate).

 
Integer:

Dovresti prima leggere il compito dell'autore del thread e le sue risposte.

Sono d'accordo, il compito è stato formulato per trovare un criterio di somiglianza. Ho fatto un ulteriore passo logico che l'autore applicherà, basato sul suo precedente lavoro con il criterio di somiglianza tramite il QC di Spearman. Forse erroneamente, l'autore pensa di applicare un criterio di somiglianza nuovo per lui ad un altro.
 
hrenfx:

Ha deciso di correre sulla storia, partendo dall'elemento più esterno 200.000. Approssimativamente, la corsa richiede 200.000 volte 500 miliardi di calcoli ciascuno. Sono 10^17 calcoli in totale.

Anche se c'è un'ottimizzazione complicata, non darà un guadagno di più di due ordini di grandezza. Cioè dovrà eseguire al massimo 10^15 calcoli.

Il compito è molto più modesto - confrontare ciò che è già successo oggi con l'inizio del giorno precedente (le dimensioni dei modelli sono diverse!) e valutare la somiglianza. Se è presente - per disegnare una traiettoria di rotta approssimativa per il resto della giornata di oggi. Se prendiamo H1, sono 24 barre. In ogni caso non più di 24 confronti. Su M15 è 96 Confronti al massimo. Secondo le mie osservazioni, la somiglianza è entro 2 giorni al massimo, e poi il mercato "dimentica" tutto. L'ottimizzazione per mesi e anni è autolesionista.
 
anonymous:


Prima di inventare queste sciocchezze, si faccia un'idea del principio dell'algoritmo. La complessità dell'algoritmo è O(n*m), dove n e m sono le lunghezze di due vettori di input.

Perché sei così ostile e aggressivo? Leggi le stime della complessità dell'algoritmo. O(N^2) non contraddice quello che hai scritto. Gli algoritmi con tale complessità sono adatti a compiti con piccole quantità di dati.

p.s. Nessun "a 50 barre, a 55 barre" deve essere fatto, poiché una delle tre possibili distorsioni è la mancanza di un'osservazione.

p.p.s. Esiste anche DTW con vincoli di forma del percorso, il tuo "e puoi fermarti lì" è anche completamente inutile.

Notate la parola "ruvido" menzionata più volte nell'esempio qui sopra. Se si prendono in considerazione tutte le sfumature, il post diventerà un'enorme dimensione irrilevante. Potete menzionare FastDTW-algorithm e altre ottimizzazioni algoritmiche aggiuntive. È meglio far brillare il proprio cervello e le proprie conoscenze nella pratica.

p.p.p.s. Il tuo metodo "zigzag + calcolo di correlazione" mostrerà delle sciocchezze, poiché lo zigzag sarà basato sui massimi di una variabile casuale rumorosa, che ti dice poco.

Nella vostra lingua - "nonsense". Potrebbe illustrare costruttivamente questo con un esempio?

p.p.p.s. Per la ricerca in un grande flusso audio, si usano metodi completamente diversi.

Questo è interessante.
 
wmlab:
Il compito è molto più modesto.

Allora ho esagerato. Probabilmente non c'è niente di più semplice di DTW per un compito così semplice. Ma confrontare sequenze di dati così piccole è discutibile.

Può fare un esempio dalla vita in cui la sua ipotesi sembra aver funzionato?

 
hrenfx:

Allora ho esagerato. Probabilmente non c'è niente di più semplice di DTW per un compito così semplice. Ma confrontare sequenze di dati così piccole è discutibile.

Può fare un esempio dalla vita, quando la sua ipotesi sembra aver funzionato?


Viene un po' dalla vita reale - ho notato che su EURUSD sposto mentalmente il grafico già ottenuto di oggi a quello di ieri. Se almeno la prima metà della giornata coincide visivamente, possiamo fare una previsione (se non è venerdì e se non ci sono novità). "Visivamente" è un'alternanza di alti e bassi, i livelli non corrispondono. Beh, è come guardare un'illustrazione dell'evoluzione - le immagini adiacenti sono simili, quelle lontane no. Bene, se le immagini di oggi e di ieri non coincidono, allora questo metodo non funziona.
 
È possibile citare grafici di siti visivamente abbinati?
 
wmlab:
Il compito è molto più modesto - confrontare ciò che è già successo oggi con l'inizio del giorno precedente (le dimensioni dei modelli sono diverse!) e valutare la somiglianza. Se sì, per disegnare una traiettoria approssimativa di rotta per il resto della giornata di oggi. Se prendiamo H1, sono 24 barre. In ogni caso non più di 24 confronti. Su M15 è 96 Confronti al massimo. Secondo le mie osservazioni, la somiglianza è entro 2 giorni al massimo, e poi il mercato "dimentica" tutto. L'ottimizzazione sull'intervallo di mesi e anni è un auto-inganno.

Tuttavia, il mio indicatore ed Expert Advisor su H4, per esempio, operano con il senno di poi di 900-1000 barre e catturano chiaramente gli eventi delle ultime barre https://forum.mql4.com/ru/46596/page124, significa che la memoria del mercato non è così fugace?
 

Ho qualcosa... Solo che non me ne sono reso conto. Provando un senso di estasi mistica:)

File:
idtw2.mq4  8 kb
Motivazione: