Que diable se passe-t-il ? - page 6

 
Сергей Таболин:

Si vous effectuez plusieurs optimisations, avec les mêmes paramètres de l'EA, les résultats des différentes optimisations coïncident-ils ? Si c'est le cas, le problème réside dans la différence entre l'optimiseur et la passe unique. Si ce n'est pas le cas, le problème se situe certainement dans le code de l'EA.

 

Laissez-moi vous expliquer - l'écriture à la mode ici dans le :

if (condition) {

} else if (!condition) {

}

censé augmenter la lisibilité et la compréhension du code, est en fait un mal

et en plus vous devez travailler très, très soigneusement avec les doubles

 
Andrey Dik:

Pensez-vous qu'une variable globale de l'EA conserve la valeur des exécutions antérieures de l'optimiseur et qu'elle est reportée sur les exécutions suivantes ?

Oui, c'est à peu près ça. C'est ce que j'essayais de faire.

Seulement, il ne s'agissait pas seulement d'une variable globale, mais d'un membre statique de la classe, d'une variable terminale ou autre.


En outre, un test unique effectué immédiatement après le lancement du terminal et un test répété sur le même agent peuvent être différents. Pour la même raison.

En somme, il faut tout initialiser et garder un œil scrupuleux dessus.


ps : non, ça me rappelle. J'étais bien avec l'initialisation, c'était l'un des builds qui initialisait les statiques de manière défaillante. Il a été réparé rapidement.

 
Andrey Dik:

tout transfert du contenu des variables EA d'une exécution à l'autre doit être considéré comme un bug du testeur, même s'il s'agit de variables globales du terminal.

S'il existe plusieurs copies d'un même EA fonctionnant sur des graphiques en temps réel, l'utilisateur utilise un mage ou d'autres moyens d'identification, et le processus d'optimisation implique des exécutions multiples et indépendantes les unes des autres d'un EA avec le même mage, si ce n'est pas le cas, alors non seulement c'est faux du point de vue idéologique de l'optimisation, mais cela ouvre la possibilité d'influencer l'optimisation et d'abuser des produits du marché en trompant l'acheteur.

J'attends le rapport de TC sur les transactions non élaguées, mais je suis intrigué.

Pas fait pour un saint voleur.

Le point, comme toujours, est simple - l'EA n'est pas déchargé pour optimiser plus rapidement. Les fichiers EX peuvent être volumineux.

 

Ce n'est qu'aujourd'hui que j'ai eu le temps de m'attaquer au problème. J'ai décidé de commencer petit. Une chose à la fois. Y compris la vérification des fichiers ouverts. Le code est le suivant :

      int      h     = FileOpen(filename, FILE_BIN|FILE_READ|FILE_COMMON);
      if(h == INVALID_HANDLE)
      {
         Print("Ошибка открытия файла обученной сети по индикатору >>> ",name);
         writeErrorFile(program_name,program_version,"======= "+IntegerToString(bars_count-1)+" === Ошибка открытия файла обученной сети по индикатору >>> "+name);
         writeOptTestFile(file_Opt_Tst,"======= "+IntegerToString(bars_count-1)+" === Ошибка открытия файла обученной сети по индикатору >>> "+name+"\n");
         FileClose(h);
         return(TRADESIGNAL_NO);
      }

J'ai lancé l'optimisation et ensuite un seul test. En conséquence, j'ai obtenu deux fichiers :

1_100_100_300_300_.opt
1_100_100_300_300_.tst

J'ai ouvert ces deux fichiers dans le programme WinMerge. Et voici ce que j'ai vu là-bas

Il y a un problème avec l'ouverture des fichiers dans l'optimiseur. Notez qu'il n'y a pas de telle erreur dans le testeur !

 
Сергей Таболин:

Il y a un problème avec l'ouverture des fichiers par l'optimiseur. Notez qu'il n'y a pas de telle erreur dans le testeur !

Plusieurs cœurs ouvrent le fichier en même temps. Un s'ouvre, le reste est foutu.
Besoin de code avec attente, ou au moins le drapeau FILE_SHARE_READ

 

Si vous :

  • accèdent au même fichier à partir d'une EA dans la zone commune.
  • obtenir des erreurs d'accès
  • ne protège pas contre l'accès partagé par de multiples processus parallèles, n'essaie pas de répéter avec un délai d'attente
Ensuite, bien sûr, vous obtiendrez la différence entre l'optimiseur et la passe unique. Il s'agit d'une erreur logique.
 
Andrey Khatimlianskii:

Plusieurs cœurs ouvrent le fichier en même temps. L'un s'ouvre, les autres se font avoir.
J'ai besoin de code avec attente, ou au moins le drapeau FILE_SHARE_READ.

Je n'ai pas écrit le code spécifiquement pour l'optimiseur. On s'attendait à ce que l'optimiseur soit déjà conscient de ces nuances. Je vais essayer d'ajouter un drapeau, ça n'empirera pas les choses. )))

Renat Fatkhullin:

Si vous :

  • Vous accédez au même fichier dans la zone commune à partir d'un conseiller expert.
  • obtenir des erreurs d'accès
  • ne protège pas contre les accès multiples et simultanés, n'essaie pas de les répéter avec un délai d'attente.
Ensuite, bien sûr, vous obtiendrez la différence entre l'optimiseur et la passe unique. Il s'agit d'une erreur logique.

  1. J'inclus la zone de livraison uniquement pour faciliter la recherche des fichiers.
  2. ....
  3. Je n'ai pas d'accès partagé. Ces fichiers ne sont accessibles que par un seul EA.
 

Puisqu'il n'y a toujours pas de code, que les conditions de test ne sont décrites d'aucune manière et que vous faites des déclarations clairement erronées, alors occupez-vous-en vous-même.

Si vous ne pouvez même pas ouvrir les fichiers, cela signifie qu'il y a de nombreux problèmes dans l'Expert Advisor.

Vous avez même caché les noms de ces fichiers.

 
Renat Fatkhullin:

Puisqu'il n'y a toujours pas de code, que les conditions de test ne sont décrites d'aucune manière et que vous faites des déclarations clairement erronées, alors occupez-vous-en vous-même.

Si vous ne pouvez même pas ouvrir les fichiers, cela signifie qu'il y a de nombreux problèmes dans l'Expert Advisor.

Vous avez même caché ces noms de fichiers.

Il n'y a pas de code parce que l'ajout du ballon a vraiment résolu le problème. Désormais, les résultats de l'optimisation et les exécutions individuelles sont parfaitement cohérents.

C'est juste que j'utilisais à peine les fichiers dans les EAs avant (au moins toutes les écritures/lectures pendant l'optimisation/le test étaient désactivées), mais je pensais que l'optimiseur avait résolu le problème de l'accès à partir d'un seul EA.