Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 261

 
tiiga:

Beh, ci sono un sacco di argomenti con quali indici e quali parametri usare per loro - così ho deciso di fare un programma che seleziona il proprio set di indici.

Si tratta di una rete neurale di circa 100 neuroni (si può cambiare il numero, ma anche a 10 funziona ancora lentamente) ognuno ha il suo insieme di un numero diverso di indici da 2 a 20. Se un neurone viene ucciso per fallimento, ottiene un nuovo insieme di indici.

Ottimizzare prima l'algoritmo, poi ottimizzare il codice.
 
L'algoritmo funziona perfettamente, lo stesso algoritmo, quando non lavoravo con i tacchini, ma assegnando io stesso i paternoni, permetteva di analizzare milioni di neuroni abbastanza velocemente. (circa un'ora per un paio d'anni di storia) sono i giradischi che rallentano.
 
e con un solo dinamometro funzionava anche più o meno rapidamente, ma appena ho aumentato il numero di dinamometri ha rallentato molto
 
tiiga:
E ha funzionato più o meno velocemente con un solo indicatore dinamico, ma quando ho aumentato il numero di indicatori, tutto ha rallentato drasticamente.

Devo cospargerlo di acqua santa?

Quale altro consiglio posso darvi? Ti sei attaccato al fatto che hai capito bene. La logica è perfetta, l'algoritmo è super. Tutto è messo a punto, non ci sono bug da nessuna parte, l'intero codice è ottimizzato per la velocità di esecuzione.

Posso darvi il numero di telefono di Hottabych.

 

la domanda era

1) il lavoro dell'indicatore è diverso se viene chiamato attraverso iCastom

2) È ragionevole cercare di strappare i calcoli dall'indicatore e incollarli nell'Expert Advisor?

Ho anche un pensiero - quando clicco su aiuto, mostra la build 509 - ho letto che ci sono build più recenti e la nuova potrebbe funzionare più velocemente - forse questo aiuterà?

 
tiiga:

la domanda era

1) il lavoro dell'indicatore è diverso se viene chiamato attraverso iCastom

2) È ragionevole cercare di strappare i calcoli dall'indicatore e incollarli nell'Expert Advisor?

Ho anche un pensiero - quando clicco su aiuto, mostra che ho la build 509 - ho letto che ci sono build più recenti e la nuova potrebbe funzionare più velocemente - forse questo aiuterà?

Nel tuo caso (teoricamente), considerando che quando chiami l'indicatore con nuovi parametri, il terminale carica una nuova copia dell'indicatore e ricalcola l'intero volume storico sul grafico, ha senso "tagliare i calcoli dall'indicatore". Non dimenticate di aggiungere il parametro del numero di barre calcolate. Ma il bastone è sempre "a doppio taglio": un indicatore corretto su ogni tick ricalcola 1-2 barre, il codice nell'Expert Advisor calcolerà un certo numero di barre per ogni tick (e di solito il calcolo dell'algoritmo dell'indicatore richiede più delle 1-2 barre precedentemente menzionate).

Tali sistemi complessi (adattivi) dovrebbero essere eseguiti all'arrivo di una nuova barra. Una nuova build (per ora sperimentale) non aiuterà.

P.S. Un esempio di "strappare" un codice indicatore può essere visto qui.

 

Grazie, mi sembra giusto.

Ho solo bisogno di capire un po' il codice:)

Meno male che è ben commentato.

 
TarasBY:

Nel tuo caso (teoricamente), considerando che quando chiami l'indicatore con nuovi parametri, il terminale carica una nuova copia dell'indicatore e ricalcola l'intero volume storico sul grafico, ha senso "strappare i calcoli dall'indicatore". Non dimenticate di aggiungere il parametro del numero di barre calcolate. Ma il bastone è sempre "a doppio taglio": un indicatore corretto su ogni tick ricalcola 1-2 barre, il codice nell'Expert Advisor calcolerà un certo numero di barre per ogni tick (e di solito il calcolo dell'algoritmo dell'indicatore richiede più delle 1-2 barre precedentemente menzionate).

Tali sistemi complessi (adattivi) dovrebbero essere eseguiti all'arrivo di una nuova barra. La nuova build (per ora sperimentale) non aiuterà.

P.S. Un esempio di "strappo" del codice dell'indicatore può essere visto qui.


Ma c'è un'opzione alternativa - organizzare sulla base dei buffer dinamici dell'EA, come nell'indicatore, e trasferire l'intera logica all'EA. In questo caso, l'unica cosa di cui il programmatore deve occuparsi è la dimensione dei buffer, che si adatta automaticamente al numero di barre nella storia (lo stesso che il terminale fa per l'indicatore). Per il resto, otteniamo i vantaggi dell'Expert Advisor e dell'indicatore in un unico pacchetto (in più il numero di buffer è quasi illimitato).


Come organizzare i buffer dinamici in un EA, l'ho mostrato una volta, posso ripeterlo se avete bisogno.

 
Ho sentito che anche gli indulatori standard possono essere modificati - è possibile fargli leggere un numero limitato di barre piuttosto che l'intera storia?
 
tiiga:
Pensavo di aver sentito che anche gli indicatori standard possono essere modificati - è possibile fargli leggere un numero limitato di barre invece che l'intera storia?

Naturalmente, è sufficiente impostare una condizione appropriata, negli esempi standard è un limite variabile
Motivazione: