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

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

Renat, merci. Mais expliquez-moi un obscur, quelle est la différence entre 2*2+2*3 dans l'optimiseur et une passe unique ? Donnez-moi au moins un indice sur l'endroit exact où il peut y avoir une divergence ?

Je vais vous donner un indice.

Dans votre esprit, il n'y a que 2*2, alors qu'en réalité il y a un énorme environnement de marché et une énorme quantité de votre code. En gros, il y a au moins trois ordres de grandeur de plus de variables et de conditions.

Tant que vous courrez en mode économique, vous ne trouverez pas de raisons. C'est comme jouer au jeu du "simple codeur". Une fois que vous vous êtes mis à la programmation, apprenez à déboguer.

Je vous conseille pour la troisième fois - de le désimprimer et de voir de vos yeux où les divergences dans les transactions ont commencé.

 
Renat Fatkhullin:

Je vais vous donner un indice.

Ce n'est que 2*2 dans votre esprit alors qu'en réalité, il y a un énorme environnement de marché et une énorme quantité de votre code. En gros, il y a au moins trois ordres de grandeur de plus de variables et de conditions.

Tant que vous courrez en mode économique, vous ne trouverez pas de raisons. C'est comme jouer au jeu du "simple codeur". Une fois que vous vous êtes mis à la programmation, apprenez à déboguer.

Je vous conseille pour la troisième fois - de le désimprimer et de voir de vos yeux où les divergences dans les transactions ont commencé.

D'accord, je vais le retirer de l'impression. Je vais jeter un coup d'oeil. Mais il est peu probable que je parvienne à comprendre la raison de ces divergences.

D'autant plus que j'ai prescrit l'ouverture, le maintien et la fermeture de positions dans mon propre cours. Cela fait longtemps que je n'ai pas remarqué de dissonance entre l'optimisation et la passe unique dans d'autres EA (j'ai déjà abordé cette question dans mon article précédent).

Et c'est pourquoi j'ai ouvert cette question à nouveau.

Pour ma part, je le comprends de la façon suivante : le travail avec les positions est réglé avec précision et ne nécessite pas d'intervention. Donc le bug est ailleurs. Mais ! tous les autres endroits sont des codes de scripts pour la préparation, la création, l'entraînement et le contrôle du réseau. Tout est également débogué.

Il reste donc la possibilité d'utiliser une variable non initialisée. J'ai vérifié chacun d'eux. J'ai peut-être raté quelque chose. Dans ce cas, j'attends un avertissement du compilateur.

Ou encore, le code est compilé de telle manière que la variable est initialisée après son appel.

Comme vous le comprenez, je ne peux que deviner. Je n'ai aucun moyen réel de détecter cette erreur.

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

OK, je vais le décompresser. Je vais jeter un coup d'oeil. Mais il est peu probable que je parvienne à comprendre la raison de ces divergences.

D'autant plus que l'ouverture, le maintien et la fermeture des positions ont été mis en œuvre dans ma propre classe. Cela fait longtemps que je n'ai pas remarqué de dissonance entre l'optimisation et la passe unique dans d'autres EA (j'ai déjà abordé cette question dans mon article précédent).

Et c'est pourquoi j'ai ouvert cette question à nouveau.

Pour ma part, je le comprends de la façon suivante : le travail avec les positions est réglé avec précision et ne nécessite pas d'intervention. Donc le bug est ailleurs. Mais ! tous les autres endroits sont des codes de scripts pour la préparation, la création, l'entraînement et le contrôle du réseau. Tout est également débogué.

Il reste donc la possibilité d'utiliser une variable non initialisée. J'ai vérifié chacun d'entre eux. J'ai peut-être raté quelque chose. Dans ce cas, j'attends un avertissement du compilateur.

Ou encore, le code est compilé de telle manière que la variable est initialisée après son appel.

Comme vous le comprenez, je ne peux que deviner. Je n'ai aucun moyen réel de détecter cette erreur.

Tout d'abord, assurez-vous que vous n'utilisez pas les fonctions GetTickCount64(), GetTickCount() ou GetMicrosecondCount() dans la logique de négociation. Ils peuvent entraîner une divergence des résultats dans le testeur et l'optimiseur.

 
Geess:

Tout d'abord, assurez-vous que vous n'utilisez pas les fonctions GetTickCount64(), GetTickCount() ou GetMicrosecondCount() dans votre logique de négociation. Ils peuvent entraîner une divergence des résultats dans le testeur et l'optimiseur.

Je ne le fais pas.

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

D'après moi, le travail de positionnement est bien réglé et ne nécessite pas d'intervention. Le problème est donc ailleurs. Mais tous les autres endroits sont du code provenant des scripts de préparation, de création, de formation et de contrôle du réseau. C'est aussi très bien réglé.

...

N'est-ce pas là que tout a mal tourné ?

 

" presque toutes les données sont initialisées dans une boucle ".

Les gars, vous ne pouvez pas initialiser dans une boucle. Vous devez lire dans la boucle.

 
En fait, il devrait y avoir une erreur Stack Overflow.
 
)
 
Artyom Trishkin:

N'est-ce pas là que réside le problème ?

De quelle manière ? Le réseau n'est pas formé à la volée dans l'EA. Du moins, pas encore).

Il est entraîné correctement ou non, il est surentraîné ou sous-entraîné, mais le signal est le même.

Si le réseau donne le signal "acheter" à l'ouverture de la barre lors de l'optimisation, alors il devrait donner le même signal lors d'un test unique. Et si elle ne donne pas le même signal, elle n'est ni là ni ailleurs.

C'est donc de là que peuvent provenir les positions " inutiles " (à condition que les données de prix soient égales, j'espère) ?

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

De quelle manière ? Le réseau n'est pas formé à la volée dans l'EA. Du moins, pas encore ;)).

Il est entraîné correctement ou non, il est surentraîné ou sous-entraîné, mais le signal est le même.

Si le réseau donne le signal "acheter" à l'ouverture de la barre lors de l'optimisation, alors il devrait donner le même signal lors d'un test unique. Et si elle ne donne pas le même signal, elle n'est ni là ni ailleurs.

Alors d'où peuvent provenir les positions "supplémentaires" (à condition que les données sur les prix soient, je l'espère, les mêmes) ?

Essayez de désactiver la logique actuelle et de la remplacer par un assistant normal. Vous verrez immédiatement où le chat s'est trompé, dans la logique ou dans l'exécution.