MT4-Tester VS MT5-Tester - pagina 6

 
Alain Verleyen:

Ma la tua versione originale con la build 1596 è molto più lenta, quindi il tuo confronto originale con MT4 deve essere aggiornato.

Forse stai usando una vecchia versione della libreria. Puoi sempre trovare l'ultima versione qui.


Ho convertito il tuo codice in MT4 attraverso MT5Bridge. MT4build1072

EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:07.645 (total time 0:00:08.362)


Codice originale

EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:03.744 (total time 0:00:04.493)


I risultati dopo la conversione sono identici! La velocità è diminuita della metà.

 
Yuriy Zaytsev:

ha più senso scrivere un algoritmo ottimale!

Come?
 
-Aleks-:

Come?
Ottieni i dati richiesti una volta per ciclo. Ciclo solo quando è necessario, non ad ogni spunta.
 
-Aleks-:

Come fare?
Prendi la storia all'inizio, una volta e ricordala.
Poi, controlla solo gli ordini che entrano nella storia.
 
Artyom Trishkin:
Una volta per ciclo ottenere i dati necessari. Ciclo solo quando è necessario, non ad ogni spunta.

Il mio EA funziona solo sui prezzi di apertura. Più grande è la storia, più lento è il suo funzionamento, molto più lento.

 
Yuriy Zaytsev:
Ottieni la storia all'avvio, una volta e ricordala.
Poi, controlla solo gli ordini che entrano nella storia.

Il tester non ha storia all'avvio...
 
-Aleks-:

Quando si inizia, il tester non ha storia.

Se parliamo solo del tester, ovviamente non c'è.

In ogni caso, non si dovrebbe passare attraverso tutta la storia su ogni tick o addirittura su ogni barra.

Se il test viene effettuato sui tick, allora è sufficiente selezionare un solo ordine inserito nella storia.

-Aleks-:

Il mio EA funziona solo con i prezzi di apertura. Più grande è la storia, più lentamente funziona.


Se il test è su barre, diversi ordini possono essere entrati nella storia, il che significa che solo questi ordini devono essere tracciati.

 
-Aleks-:

Il mio EA funziona solo sui prezzi di apertura. Più grande è la storia, più lento è il suo funzionamento, molto più lento.

Nella lista della storia, più posizioni chiuse, più lungo è il ciclo. Limitare il ciclo a una profondità di storia abbastanza piccola.
 
Artyom Trishkin:
Più posizioni chiuse ci sono nella lista della storia, più lungo è il ciclo. Limitare il ciclo a una profondità di storia abbastanza piccola.


Ho il sospetto che il tester inizi a rallentare non a causa degli ordini stessi, ma della loro modifica - questo processo avviene su ogni barra.


Yuriy Zaytsev:

Se parliamo solo del tester, ovviamente non esiste.

In ogni caso, non si dovrebbe passare attraverso l'intera storia su ogni tick, o anche su ogni barra.

Se il test viene eseguito su tick - allora è sufficiente selezionare un solo ordine inserito nella storia.


Se il test è su barre - diversi ordini possono essere entrati nella storia, il che significa che solo questi ordini devono essere tracciati.


Raramente passo attraverso la storia - il rallentamento è dovuto all'accumulo della storia in quanto tale - come la vedo io.

Se poteste ottenere informazioni sul numero d'ordine in base alla sua data (il primo numero in quella data), allora il grande superamento potrebbe essere evitato - passate attraverso gli ordini in base al numero che rientra nell'intervallo.

 
-Aleks-:


Ho il sospetto che il tester cominci a rallentare non a causa degli ordini stessi ma a causa della loro modifica - questo processo avviene su ogni barra.



Raramente passo attraverso la storia - il rallentamento è dovuto all'accumulo della storia, in quanto tale - ai miei sensi.

Se fosse possibile ottenere informazioni sul numero dell'ordine in base alla sua data (il primo numero in questa data), allora si potrebbe evitare il grande superamento - cercare gli ordini in base al numero che rientra nell'intervallo.

bool  HistorySelect(datetime  from_date, // с даты 
                    datetime  to_date);  // по дату


Motivazione: