Calcul d'un seul tableau pendant l'optimisation - page 2

 
fxsaber:
Attachement des ressources. Ne demandez pas comment. Je n'ai pas écrit le code source.
Avez-vous besoin d'un logiciel tiers pour créer un tableau ?
 
forexman77:

Je suis donc confronté à un dilemme : comment faire pour qu'il soit possible de lire un fichier une fois, de remplir le tableau avec celui-ci et d'utiliser ce tableau à toutes les passes.

J'en ai besoin pour réduire le temps d'optimisation, car le tableau sera toujours inchangé et il est coûteux de le lire à chaque fois.

Eh bien, par exemple, écrivez un script qui prépare et rassemble toutes les données dans un tableau, puis écrit le tableau terminé dans un fichier. Et ensuite lire ce tableau depuis le fichier pendant l'initialisation dans l'Expert Advisor. Le fichier peut être utilisé autant de fois que nécessaire, à chaque exécution de l'EA.
Je pense que cette solution vous a déjà été proposée. Il ne vous convient pas ?
 
forexman77:
Utilisation d'un logiciel tiers pour créer un tableau ?
Oui, par le même MQL5 avec une passe séparée avant optimisation.
 
BlackTomcat:
Par exemple, écrivez un script qui préparera et collectera toutes les données d'un tableau, puis écrira le tableau prêt dans un fichier. Et ensuite lire ce tableau depuis le fichier pendant l'initialisation dans l'EA. Le fichier peut être utilisé autant de fois que nécessaire, à chaque exécution de l'EA.
Je pense que cette solution vous a déjà été proposée. Il ne vous convient pas ?

Oui, c'est ça le problème, ça ne colle pas. Il y a 15 000 cols dans l'optimisation. Et je n'ai besoin qu'une seule fois de calculer et aux passages suivants de n'adresser qu'un tableau.

C'est-à-dire que j'ai déjà des données dans le fichier qui sont calculées à l'avance et de niveau, et elles me sont connues à l'avance. Et même la lecture du fichier à chaque fois dans le init est très coûteuse (il y a des milliers de lignes). Je ne sais pas pour MQL5, mais dans MQL4 ils ont écrit sur le forum que le programme passe l'init à chaque passage.

 
forexman77:
Sera-t-il nécessaire de lire l'inite à chaque passage ?
Oui. Ce n'est ni difficile ni coûteux. Utiliser le mode binaire. Vous pouvez ne pas lire tout le fichier, mais commencer à l'endroit souhaité.
 
forexman77: Et même la lecture du fichier à chaque fois inite, à chaque passage est très coûteuse (plusieurs milliers de lignes). Je ne sais pas pour MQL5, mais dans MQL4 il a été écrit sur le forum que le programme prend un init à chaque passage.
Vous savez, je pense que vous exagérez les dépenses liées à la lecture du tableau à partir du fichier. Chaque fois que Windows se réveille du mode veille, il restaure à partir du disque dur l'image de l'état qu'il avait au moment de la mise en veille, y compris l'état de toutes les applications. Pensez-vous qu'il n'y a pas assez d'objets et d'informations ? Et combien de temps faut-il pour sortir d'un tel sommeil ?
Vous exagérez, IMHO.
 
forexman77:

Oui, c'est ça le problème, ça ne colle pas. Il y a 15 000 cols dans l'optimisation. Et je n'ai besoin qu'une seule fois de calculer et aux passages suivants de n'adresser qu'un tableau.

C'est-à-dire que j'ai déjà des données dans le fichier qui sont calculées à l'avance et au niveau, et elles me sont connues à l'avance. Et même la lecture du fichier à chaque fois dans le init est très coûteuse (il y a des milliers de lignes). Je ne sais pas pour MQL5, mais dans MQL4 ils ont écrit sur le forum que le programme passe l'init à chaque passage.

Une astuce classique du monde C/C++ : vous pouvez créer/convertir un tableau statique à partir de votre fichier (juste du texte : double arr[100500]={1,2,3....} ) et l'inclure simplement via #include.

 
BlackTomcat:
Vous savez, je pense que vous exagérez les coûts de lecture d'un tableau à partir d'un fichier. Chaque fois que Windows se réveille du mode veille, il restaure à partir du disque dur une image de l'état qu'il avait au moment de la mise en veille, y compris l'état de toutes les applications. Pensez-vous qu'il n'y a pas assez d'objets et d'informations ? Et combien de temps faut-il pour sortir d'un tel sommeil ?
Vous exagérez, IMHO.

Les coûts sont plus élevés sans ambiguïté. Il existe deux variantes avec des paramètres d'indicateur inchangés et avec les mêmes valeurs, mais déjà écrites dans un fichier, qui sont vidées dans un tableau.

La variante avec le fichier prend plusieurs fois plus de temps à être calculée que la variante avec le calcul de l'indicateur dans le Conseiller Expert.

Je pensais simplement qu'il y avait peut-être un moyen d'enregistrer le tableau une fois et de l'utiliser pour toutes les passes d'optimisation, ce qui soulagerait l'algorithme.

 
Maxim Kuznetsov:

Une astuce classique du monde C/C++ : vous pouvez créer/convertir un tableau statique à partir de votre fichier (juste du texte : double arr[100500]={1,2,3....} ) et l'inclure simplement via #include.

Si vous faites cela, le tableau sera-t-il sauvegardé lorsque vous passerez à un nouveau pass ?
 
forexman77:

Les coûts sont plus élevés sans ambiguïté. Il existe deux variantes avec des paramètres d'indicateur inchangés et avec les mêmes valeurs, mais déjà écrites dans un fichier, qui sont vidées dans un tableau.

La variante avec le fichier prend plusieurs fois plus de temps à être calculée que la variante avec le calcul de l'indicateur dans le Conseiller Expert.

J'ai juste pensé qu'il y avait peut-être un moyen de stocker le tableau une fois et de l'utiliser pour toutes les passes d'optimisation, ce qui soulagerait l'algorithme.

Calculez le temps d'UN et enregistrez le tableau avec les résultats dans un fichier. Et ensuite lire le tableau prêt du fichier pendant l'initialisation et l'utiliser immédiatement. Il n'est pas nécessaire de recalculer à nouveau. Vous avez déjà tout calculé auparavant et vous l'avez enregistré. Pourquoi recompter ? :)