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
In linea di principio, sì. Ma ancora non più di O(n).
Beh, questo non è un problema di ottimizzazione.
Trovare un estremo è sempre un problema di ordine O(n), dove n è il numero di dati. Come si possa peggiorare questa asintotica - non ne ho idea.
L'algoritmo più semplice è ArraySort(), che è integrato abbastanza velocemente, ma è probabilmente ridondante per questo problema.
Si potrebbe inventare qualcosa di ricorsivo che sarebbe più veloce.
Quanto tempo ci vuole per trovare il minimo e per quante barre?
Ho dato le statistiche nel primo post. Il calcolo per 1.000.000 di barre aumenta aritmeticamente all'aumentare del periodo. Così per il periodo 3, il calcolo richiede 0,54 secondi, per il periodo 51 richiede 0,94 secondi, e per il periodo 99 richiede 1,59 secondi.
Questo è peggio perché usa il ciclo nel ciclo, che è un errore. Così, per il periodo 3 il numero di iterazioni sarà 1 000 000 * (3-1/2) = 1 000 000, mentre per il periodo 99 sarà 1 000 000 * (99-1)/2 = 49 000 000! Quindi abbiamo bisogno di riscrivere l'algoritmo in modo tale che il numero di iterazioni non aumenti qualitativamente con l'aumentare del periodo - questo è un puro problema di ottimizzazione. Questo è quello che sto facendo ora. Finora ho scritto questo:
Per cercare il minimo userò la funzione corrispondente Down() che gira nel thread parallelo. Quando entrambe le funzioni terminano, i loro risultati saranno scritti nella lista generale. Va più o meno così.
Ecco, ti sei sbagliato. Non è la somma di una progressione richmetica, C-4. La somma cresce quadraticamente.
OCL non è ambiguo.
L'algoritmo più semplice è ArraySort(), abbastanza veloce, qualcosa intorno a O(n * ln( n ) ), ma probabilmente è ridondante per questo problema.
Pensiero. Qualsiasi ordinamento sarà intrinsecamente più lento che passare attraverso l'intero array via for. Per dare un'iterazione, mentre arraysort nel migliore dei casi ordina i valori in ogni sottofinestra n, il che significa decine di azioni.
No, si dovrebbe comunque puntare a che il numero totale di iterazioni sia qualitativamente uguale al numero di barre.
Ecco, ti sei sbagliato. Non è la somma di una progressione richmetica, C-4. La somma cresce quadraticamente.
OCL non è ambiguo.
La condizione per una tale ricerca dell'estremo è strana a dir poco... Ma anche così, è estremamente irragionevole usare un metodo di ricerca a forza bruta.
Il classico ZigZag a un solo passaggio con ExtDepth = n viene subito in mente con un leggero adattamento alla condizione attuale. OCL è inutile al 100% qui.
La condizione per una tale ricerca dell'estremo è strana a dir poco... Ma anche così, è estremamente irragionevole usare un metodo di ricerca a forza bruta.
Un classico ZigZag a un solo passaggio con ExtDepth = n viene subito in mente con un leggero adattamento alla condizione attuale. OCL è inutile al 100% qui.
Perché? O(n) sarà ancora lì, non importa come lo guardi.
Se tutto il resto fallisce, provate OCL. Non ci sono altri modi senza perversioni di tipo dll in 5.