![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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 qualche modo...
In qualche modo...
Grazie! Si vede subito la mano del maestro! Lo proverò domani per vedere cosa viene fuori.
In qualche modo...
Iniziato a provare il codice, creato un esempio artificiale - riempito l'array
Capito:
Cioè abbiamo una variante, ma ci aspettiamo anche un'altra variante.
È possibile insegnare anche all'algoritmo a trovarlo?
Iniziato a provare il codice, creato un esempio artificiale - riempito l'array
Capito:
Cioè, abbiamo una variante, ma ci aspettiamo anche un'altra variante.
L'algoritmo può imparare anche a trovarlo?
E la variante "0-1 3-6 7-9" non è migliore della variante "0 - 0-1 2-5 7-9" - entrambe sono da 0 a 1 e hanno 2 salti di lunghezza 1 ciascuno.
In questo caso appaiono due opzioni:
1 - fare la stessa cosa, ma dalla fine della serie di salti.
2 - cercare subito non il segmento più vicino, ma con una tolleranza. Ma in questo caso ce ne saranno ancora di più se ci sono molti dati e molte sequenze di aggancio.
Tuttavia, dopo la variante 1, vorrete iniziare a costruire catene da tutte le possibili posizioni di partenza. Questo è corretto, ma la quantità di lavoro per l'algoritmo aumenta considerevolmente.
Sì, è necessario iniziare la costruzione delle varianti da ciascuno dei segmenti dell'insieme iniziale e continuare la costruzione fino all'inizio e alla fine.
E l'opzione "0-1 3-6 7-9" non è migliore dell'opzione "0 - 0-1 2-5 7-9" - entrambe sono da 0 a 1 e hanno 2 salti di lunghezza 1 ciascuno.
In questo caso sono uguali, sono d'accordo, ma sono diversi e per i termini del problema dovremo stimare la somma dei loro punteggi, e finché non costruiremo una linea non sapremo il punteggio combinato di tutti i segmenti.
Tuttavia, dopo l'opzione 1, ci sarà il desiderio di iniziare a costruire stringhe da tutte le possibili posizioni di partenza. Questo è corretto, ma la quantità di lavoro per l'algoritmo aumenta considerevolmente.
Sì, è necessario iniziare la costruzione delle varianti da ciascuno dei segmenti dell'insieme iniziale e continuare la costruzione fino all'inizio e alla fine.
Questa mi sembra anche la strategia più corretta! Tuttavia, penso che ci possano essere delle varianti duplicate.
Puoi aiutare scrivendo un po' di codice?
I duplicati non sono stati setacciati dall'array, ma solo marcati. Poiché ogni variante ora memorizza i segmenti in due array, per renderlo più conveniente, essi possono essere combinati in un unico array usando il metodoCombine().
Non ho setacciato i duplicati dall'array, li ho solo marcati. Poiché ora ogni variante memorizza i segmenti in due array, posso combinarli in un unico array usando il metodoCombine() per renderlo più conveniente.
Dmitry, grazie per il nuovo algoritmo!
Sì, ci sono davvero molte copie.
Da quanto ho capito, non possono essere contati. Non ero riuscito ad aspettare la combinazione di 1000 elementi - il mio netbook ha iniziato ad esaurire la memoria :(
Ed è possibile non usare tutte le combinazioni quando si aggiunge un segmento, ma solo un certo numero di possibili nel passo corrente, diciamo le migliori 10?
Dmitry, grazie per il nuovo algoritmo!
Sì, ci sono davvero molte copie.
Da quanto ho capito, non si possono contare. Non potevo aspettare la combinazione di 1000 elementi - il mio netbook ha iniziato ad esaurire la memoria :(
È possibile non usare tutte le combinazioni quando si aggiunge un segmento, ma solo un certo numero di possibili nel passo corrente, diciamo le migliori 10?
Per sapere che sono i migliori, bisogna confrontarli con gli altri, cioè bisogna prima prenderli tutti. Un'altra cosa è ottimizzare in qualche modo l'algoritmo, ma non ho l'obiettivo di dedicare la mia vita a questo algoritmo).
Magari decidere il criterio della sufficienza e ottenere prima tutte le opzioni, partendo da un solo segmento, scelto a caso, e così via, fino a quando non appare un'opzione soddisfacente.
E la seconda opzione può essere accelerata - per scalare l'array con varianti non un elemento alla volta, ma diverse decine di elementi alla volta, e alla fine per tagliarlo.
Per sapere che sono i migliori, bisogna confrontarli con gli altri, cioè bisogna prima prenderli tutti. Un'altra cosa è ottimizzare in qualche modo l'algoritmo, ma non ho l'obiettivo di dedicare la mia vita a questo algoritmo).
Sto parlando di un singolo segmento, diciamo che ha un coefficiente per valutare la sua qualità, poi dopo ogni iterazione si dirama, per esempio, solo sui primi 10 di questi coefficienti.
Magari decidere un criterio di sufficienza e ottenere prima tutte le varianti, partendo da un solo segmento, scelto a caso e così via, fino a quando non appare una variante soddisfacente.
Purtroppo, la "sufficienza" è difficile da valutare qui - qui è necessario conoscere uno standard, poi da esso è possibile definire una tolleranza, e io non ho uno standard.
E la seconda opzione può essere accelerata - per scalare array con opzioni non un elemento alla volta, ma diverse decine di elementi, e alla fine di esso per allineare.
Non sono sicuro di cosa intendi per parallelismo usando OpenCL?
1. Sto parlando di un singolo segmento, diciamo che ha un coefficiente per valutare la sua qualità, poi dopo ogni iterazione si dirama, per esempio, solo i primi 10 di questi coefficienti.
2. Sfortunatamente, la "sufficienza" è difficile da stimare qui - è necessario conoscere il benchmark, poi si può determinare la tolleranza da esso, e io non ho un benchmark.
3. Non sono del tutto sicuro di cosa intendi per parallelismo usando OpenCL?
1. Dove si trova questo coefficiente?
2. e il punto 1?
3. no, è più semplice. Ok, cercherò di accelerare domani.