Testeur MT4 VS Testeur MT5 - page 6

 
Alain Verleyen:

Mais votre version originale avec build 1596 est beaucoup plus lente, donc votre comparaison originale avec MT4 doit être mise à jour.

Vous utilisez peut-être une ancienne version de la bibliothèque. Vous pouvez toujours trouver la dernière version ici.


J'ai converti votre code en MT4 via MT5Bridge. MT4build1072

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


Code original

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


Les résultats après la conversion sont identiques ! La vitesse a diminué de moitié.

 
Yuriy Zaytsev:

il est plus logique d'écrire un algorithme optimal !

Comment ?
 
-Aleks-:

Comment ?
Obtenez les données requises une fois par cycle. Ne le faites qu'en cas de besoin, et non à chaque tic.
 
-Aleks-:

Comment faire ?
Obtenez l'histoire au début, une fois et souvenez-vous-en.
Ensuite, ne surveillez que les ordres entrant dans l'historique.
 
Artyom Trishkin:
Une fois par cycle, obtenez les données nécessaires. Ne le faites qu'en cas de besoin, et non à chaque tic.

Mon EA ne fonctionne que sur les prix d'ouverture. Plus l'histoire est importante, plus le travail est lent - beaucoup plus lent.

 
Yuriy Zaytsev:
Obtenir l'historique au démarrage, une fois et s'en souvenir.
Ensuite, ne surveillez que les ordres entrant dans l'historique.

Le testeur n'a pas d'historique au démarrage...
 
-Aleks-:

Lorsque vous commencez, le testeur n'a pas d'historique.

Si l'on ne parle que du testeur, il n'y en a évidemment pas.

Dans tous les cas, vous ne devez pas parcourir l'ensemble de l'historique à chaque tick ou même à chaque barre.

Si le test est effectué sur les ticks, il suffit alors de sélectionner un seul ordre entré dans l'historique.

-Aleks-:

Mon conseiller expert ne fonctionne qu'avec les prix d'ouverture. Plus l'histoire est grande, plus elle fonctionne lentement.


Si le test porte sur les barres, plusieurs ordres peuvent être entrés dans l'historique, ce qui signifie que seuls ces ordres doivent être tracés.

 
-Aleks-:

Mon EA ne fonctionne que sur les prix d'ouverture. Plus l'histoire est importante, plus le travail est lent - beaucoup plus lent.

Dans la liste historique, plus il y a de positions fermées, plus le cycle est long. Limitez le cycle à une profondeur d'histoire suffisamment faible.
 
Artyom Trishkin:
Plus il y a de positions fermées dans la liste historique, plus le cycle est long. Limitez le cycle à une profondeur d'histoire suffisamment faible.


Je soupçonne que le testeur commence à ralentir non pas à cause des ordres eux-mêmes, mais de leur modification - ce processus se produit sur chaque barre.


Yuriy Zaytsev:

Si l'on ne parle que du testeur, il n'existe évidemment pas.

Dans tous les cas, il ne faut pas parcourir tout l'historique à chaque tick, ni même à chaque barre.

Si le test est effectué sur des ticks - il suffit alors de sélectionner un seul ordre entré dans l 'historique.


Si le test est sur les barres - plusieurs ordres peuvent être entrés dans l'historique, ce qui signifie que seuls ces ordres doivent être tracés.


Je passe rarement en revue l'histoire - le ralentissement est dû à l'accumulation de l'histoire en tant que telle - telle que je la vois.

Si vous pouviez obtenir des informations sur le numéro de commande par sa date (le premier chiffre de cette date), vous pourriez éviter le dépassement important - parcourir les commandes par le nombre tombant dans la fourchette.

 
-Aleks-:


Je soupçonne que le testeur commence à ralentir non pas à cause des ordres eux-mêmes mais à cause de leur modification - ce processus a lieu sur chaque barre.



Je passe rarement par l'histoire - le ralentissement est dû à l'accumulation de l'histoire, en tant que telle - à mes sens.

S'il était possible d'obtenir des informations sur le numéro de commande par sa date (le premier chiffre de cette date), on pourrait alors éviter le grand dépassement - rechercher les commandes par le nombre tombant dans la fourchette.

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


Raison: