Discussion de l'article "Programmation d'un Réseau de Neurones Profond à partir de zéro à l'aide du langage MQL" - page 5

 
Oui et sur mt5 j'ai mis, qui mq5 aussi à la compilation donne 11 erreurs. Peut-être pouvez-vous m'aider à comprendre ? ???????
 
Les paramètres des réseaux profonds sous forme de variables externes sont trop rigides.
 

J'ai modifié l'entrée "bodyPer". Au lieu de charger simplement la longueur relative du corps, je calcule cette valeur : bodyPer=0.5+((close-open)/p100)/2 ;

Ainsi, en plus de la longueur relative, la variable capture également la direction de la bougie. Cela libère un emplacement pour une quatrième variable, je suppose.

 

int error=CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues) ;

Ici, nous transmettons les données d'une bougie qui ne s'est pas encore formée. En réalité, tous les paramètres seront les mêmes lorsque la bougie s'ouvrira. Tous seront = rates[0].open

 
Vasily Pototsky #:

int error=CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues) ;

Ici, nous transmettons les données d'une bougie qui ne s'est pas encore formée. En réalité, tous les paramètres seront les mêmes lorsque la bougie s'ouvrira. Tous seront = rates[0].open

Incorrect !

int copied=CopyRates(_Symbol,0,1,5,rates);

Ici la copie est effectuée non pas à partir de la barre zéro, mais à partir de la première, donc ici :

CandlePatterns(rates[0].high,rates[0].low,rates[0].open,rates[0].close,rates[0].close-rates[0].open,_xValues);

seront les valeurs de la dernière barre...

Je ne pense pas qu'il soit nécessaire de copier 5 barres, il suffit de copier 1 barre passée comme ceci :

int copied=CopyRates(_Symbol,0,1,1,rates);
 

Bonjour Anddy, vous avez fait un excellent travail !!!

Je suis en train d'analyser ton code pour l'adapter à ma stratégie et jusqu'à présent je peux dire que ton DNN est incroyable ! Merci pour votre partage.

J'ai juste une question : je ne reconnais pas l'utilisation de "yValues[2]>0.6" dans n'importe quelle situation. Après plusieurs tentatives avec différents actifs, aucune transaction n'a été fermée en raison de cette condition. Est-ce correct ?

Je vous remercie de votre attention.

Cordialement,
Alexandre

Dans ce forum, veuillez commenter en portugais. Utilisez l'outil de traduction automatique ou commentez dans l'un des forums dans une autre langue.

 
Comportement étrange : lorsque la variable de tendance est modifiée, les résultats de l'entraînement sont toujours différents, pourquoi ?

Il y a une erreur de logique dans le code !

   double trend=0; // также при trend=100 результаты много лучше и больше количество точек оптимизаций!? 
   if(uod>0)
     {
      highPer=high-close;
      lowPer=open-low;
      bodyPer=close-open;
      trend=1;

     }
   else
     {
      highPer=high-open;
      lowPer=close-low;
      bodyPer=open-close;
      trend=-1; // стоял ноль!
     }
 
Nikolai Kalinin #:
Comportement étrange : lorsque la variable de tendance est modifiée, les résultats de l'entraînement sont toujours différents, pourquoi ?

Il y a une erreur de logique dans le code !

Spécificité de la fonction d'activation.

Plus il y a de couches, plus il y a d'atténuation - les valeurs seront plus proches de 0.

Le décalage résout un peu ce problème.

Ainsi, lorsque le seuil est fixé à 0,6, la plupart des ensembles possibles sont rejetés. Et si vous introduisez un ou plusieurs grands nombres en entrée, même un passage direct amènera plus de valeurs possibles à l'extrémité du réseau neuronal.

Et plus les valeurs atteignent ou franchissent la limite du seuil, plus il y a de positions ou d'opportunités d'adapter (mémoriser le chemin) le graphique des prix au réseau neuronal.
 
Ivan Butko #:

Spécificité de la fonction d'activation.

Plus il y a de couches, plus l'atténuation est importante - les valeurs seront plus proches de 0.

Le décalage résout un peu ce problème.

Ainsi, lorsque le seuil est fixé à 0,6, la plupart des ensembles possibles sont écartés. Et si vous introduisez un ou plusieurs grands nombres en entrée, même un passage direct amènera plus de valeurs possibles à l'extrémité du réseau neuronal.

Et plus les valeurs atteignent ou franchissent la limite du seuil, plus il y a de positions ou d'opportunités d'adapter (rappelez-vous le chemin) le graphique des prix au réseau neuronal.

Quoi qu'il en soit, les résultats de l'entraînement sont toujours très variables, quel que soit le type d'optimisation, ce qui soulève certains doutes quant à son applicabilité à la négociation réelle - il y aura toujours de meilleurs paramètres de pondération dans les combinaisons de re-tri. Quelle est l'explication de cette particularité de ce NS ?

 
Nikolai Kalinin #:

Quoi qu'il en soit, les résultats de l'entraînement sont toujours très variables, quel que soit le type d'optimisation, ce qui soulève certains doutes quant à l'applicabilité à la négociation réelle - il y aura toujours de meilleurs paramètres de pondération lors du re-tri des combinaisons. Comment expliquer cette particularité de la NS ?

Vous donnez beaucoup d'importance à ce NS, en fait à tous les NS et à tout ce qui est lié à la MO, en général - partout où il y a des multiplications de nombres par des nombres et un additionneur dans la fonction d'activation - tout s'adaptera au graphique. Un système totalement instable.

En outre, la fixation des prix est un processus non stationnaire. Chaque fois qu'il y a de nouvelles données, et si vous divisez le graphique en motifs, ils auront tendance à s'adapter à 50/50 sur l'historique.

Le NS est pour les systèmes stationnaires, répétitifs.

Mais pour le Forex et ainsi de suite, vous avez besoin de systèmes plus avancés, plus intelligents. Quelque chose comme plusieurs NS, connectés les uns aux autres d'une manière ou d'une autre, s'adaptant comme par magie au changement des statistiques du modèle, etc.

Le NS lui-même est une mémorisation de la trajectoire du prix, ou une moyenne des résultats, si la quantité de nouvelles données est supérieure aux combinaisons possibles de nombres obtenus par multiplication (ou, pour parler simplement, l'architecture NS la plus simple avec deux ou trois entrées).

Il est intéressant de creuser la question, de construire des architectures, d'ajouter des neurones et des couches. Mais c'est absolument inutile, pas mieux que de croiser de la mashka.