Conseiller pour un article. Des tests pour tous les arrivants. - page 4

 
Reshetov:


J'ai amélioré le Conseiller Expert afin qu'il calcule la probabilité d'une future position courte en utilisant les signaux de trading. Par conséquent, si la probabilité est supérieure à 0,5, nous ouvrons une position courte, sinon nous ouvrons une position longue.



J'ai fait en sorte que les prises et les pertes soient fixes, c'est-à-dire qu'elles ne seront pas modifiées par les signaux. Ceci est nécessaire pour pouvoir appliquer le MM.

Voici l'image : les 136 premières transactions sont des optimisations, les autres sont des OOS.


Puisque ce sujet n'est d'aucun intérêt pour les traders et que seuls les floodbusters viennent ici pour discuter de la personnalité du topicstater, je ne joins pas le code modifié de l'Expert Advisor.


Yuri, ne les écoute pas. Veuillez poster l'EA modifié.
 
Andru80:
Yuri, ne les écoute pas. Veuillez poster l'EA modifié.

Si vous avez un article, vous aurez aussi une EA. Voyons ce qu'il en est... Avec un peu d'expérience, vous n'avez même pas besoin de tests pour évaluer l'idée. Nous attendrons.
 
Figar0:

Lorsque l'article sera rédigé, le conseiller expert suivra. Voyons ce qu'il en est. Vous n'avez pas besoin de tests pour estimer l'idée. Nous attendrons.

Je poste le conseiller expert avant l'article, afin que chacun puisse le tester et donner son avis (bien qu'il soit possible qu'ils recommencent à discuter de ma personnalité...).


L'essentiel n'est même pas dans le conseiller expert, mais dans l'algorithme anti-fitting que j'y ai ajouté.

Il n'est pas nécessaire de chercher longtemps et profondément dans les résultats des tests, mais de regarder les lignes supérieures des résultats, ils doivent être là quelque part, il est tout à fait possible qu'ils soient dans la toute première ligne.

Les résultats des tests et les résultats de l'optimisation peuvent être très différents car l'anti-fitting n'est activé que pendant l'optimisation et désactivé le reste du temps.

Voici le graphique de la ligne supérieure des résultats des tests (les 404 premières affaires sont des optimisations, les autres sont des tests avant) :


L'Expert Advisor est joint en fichier joint (il est compilé avant publication, j'ouvrirai son code dans l'article).

Les paramètres d'entrée sont :

x0, x1, x2, x3, x4, x5, x6, x7 - réglables de 0 à 100 par incréments de 1. Optimisé.

sl - Stop Loss et Take Profit en pips. Par exemple, pour EURUSD sur H1, pour cinq chiffres, vous pouvez prendre de 100 à 1000 par incréments de 50 (pour quatre chiffres, retirez un zéro de tous les nombres). Optimisé.

lots - volume en lots, vous devez mettre au moins 1 lot pour optimiser. Non optimisé.

mn - numéro magique. Non optimisé.

d - nombre de décimales dans la taille du lot. Par exemple, si 0,01 est autorisé, exposez d = 2. Il ne sera pas optimisé.

Optimisation par facteur de profit, les résultats de l'optimisation sont également triés en fonction de ce paramètre.

Juste au cas où, j'ajoute à l'archive ZIP un fichier avec les paramètres d'EA, tels que je les ai configurés.

Dossiers :
rnn_v3_1.ex4  7 kb
rnn_v3.zip  1 kb
 

Résultat intéressant !

Yura, utilisez-vous les données de l'instrument auquel l'EA est attaché dans l'analyse ?

 
Neutron:

Résultat intéressant !

Yura, utilisez-vous les données de l'instrument auquel l'EA est attaché dans l'analyse ?

Oui, c'est-à-dire que les autres instruments ne sont pas analysés. L'AT est réalisé uniquement par les prix d'ouverture.


En gros, les entrées ne sont pas très sophistiquées, je peux donc vous montrer les fragments de code où tout cela est calculé :


   // Считываем показания индикаторов
   double a1 = input(9, 0);
   double a2 = input(9, 1);
   double a3 = input(9, 2);

   // Вычисляем вероятность торгового сигнала для короткой позиции
   double result = getProbability(a1, a2, a3);

   ...

// Показания индикаторов, должны быть в диапазоне от 0 до 1
// p - период индикатора
// shift - смещение вглубь истории в периодах индикатора
double input(int p, int shift) { 
  return (iRSI(Symbol(), 0, p, PRICE_OPEN, p * shift) / 100.0);
}
 

Merci.

Antifitting... Si vous vous souvenez des classiques de la NS, l'anti-fitting se résume à trouver l'erreur de prédiction minimale sur le forward. Pour ce faire, il suffit d'exécuter des statistiques sur une centaine d'exécutions indépendantes et de recycler NS sur chaque exécution. Ceci est compréhensible, mais très difficile à mettre en œuvre en raison de la longueur finie de la BP initiale et de sa non-stationnarité.

Une autre méthode consiste à obtenir une estimation de la longueur optimale de l'échantillon d'entraînement. Pour autant que je sache, personne n'a encore résolu ce problème de manière générale...

Vous y êtes parvenu ?

 
Neutron:

Une autre méthode consiste à obtenir une estimation de la longueur optimale de l'échantillon d'entraînement. Pour autant que je sache, personne n'a encore résolu ce problème sous une forme générale...

Vous n'avez pas à le résoudre. Il suffit de trouver la bonne longueur de l'échantillon d'entraînement pour un certain cas, et c'est très facile à faire.

Oui, et ce n'est pas un anti-fit. C'est un ajustement de second niveau. Pour un ajustement à n niveaux, il doit y avoir n+1 échantillons à tester, le dernier étant un échantillon de contrôle.

C'est exactement le dernier que Reshetov n'a jamais.

 

Comme c'est simple !

Pour chaque point de courbe, des statistiques doivent être recrutées. Et où puiser, si la gamme de prix change complètement après un mois ?

 

Non, ça n'a aucun sens.

Dans le cas de Juri, l'entraînement NS se fait en passant simplement par les poids sur mon tronçon d'histoire donné... n'est-ce pas ? Si c'est le cas, alors l'analyse est simplement le résultat des transactions à chaque itération. Et l'affirmation suivante : "...Maintenant, les tests avancés réussis ne nécessitent pas de chercher longtemps et profondément dans les résultats des tests, mais nous devons passer par les premières lignes des résultats, ils doivent être quelque part, il est tout à fait possible que dans la première ligne...", est incorrecte - les tests avancés réussis peuvent être partout et nous devons chercher partout.

 
Neutron:

Merci.

Anti-fit... Si vous vous souvenez des classiques de NS, l'anti-fitting se réduit à trouver l'erreur de prédiction minimale sur le forward. Pour ce faire, il suffit d'exécuter des statistiques sur une centaine d'exécutions indépendantes et de recycler NS sur chaque exécution. Ceci est compréhensible, mais très difficile à mettre en œuvre en raison de la longueur finie de la BP initiale et de sa non-stationnarité.

Une autre méthode consiste à obtenir une estimation de la longueur optimale de l'échantillon d'entraînement. Pour autant que je sache, personne n'a encore résolu ce problème de manière générale...

Vous y êtes parvenu ?

En ce qui concerne les systèmes de négociation, seule la correspondance avec l'historique est possible. Les réseaux neuronaux ont deux problèmes à la fois : l'adaptation et le réapprentissage. Et le réentraînement se fait également sur des données stationnaires.

Mais avec les réseaux neuronaux dotés d'entrées adéquates, il est un peu plus facile d'utiliser un paquet de réseaux neuronaux ou une grille créée par soi-même, si nous utilisons une méthode présentée par Leonid Velichkovski: nous divisons les exemples de formation en deux échantillons, les échantillons de formation et de test, et dans le processus d'apprentissage, nous calculons les résultats pour les deux échantillons, et nous enseignons la grille uniquement pour l'échantillon de formation. Dès que l'amélioration des résultats sur l'échantillon test s'arrête, c'est-à-dire que les résultats ne s'améliorent plus, cela signifie que le filet a été suffisamment entraîné et que nous devons nous arrêter à ce stade. Ainsi, nous obtenons un filet qui a été formé de la manière la plus adéquate - nous ne nous améliorerons pas et nous nous détériorerons facilement. Dans ce cas, nous ne nous soucions pas de savoir exactement combien le réseau est réentraîné ou ajusté puisque nous avons un extremum sur l'échantillon de test.

C'est beaucoup plus difficile avec l'algorithme génétique intégré au terminal, car nous ne pouvons pas calculer les résultats dans les sections avant et arrêter l'optimisation à temps. Pour cette raison, vous devez rechercher manuellement les attaquants dans les résultats d'optimisation triés par indicateurs.

J'ai suivi un chemin légèrement différent :

1. J'ai découvert la cause du surentraînement du réseau neuronal et l'ai éliminée. C'est-à-dire que si les exemples d'entraînement sont stationnaires et ne contiennent pas de contradictions, alors mon algorithme n'est pas surentraîné, mais peut facilement se sous-entraîner si le nombre d'exemples n'est pas suffisant pour l'interpolation.

2. C'était plus compliqué avec l'essayage. Mais le problème s'est avéré soluble aussi, car l'adaptation dépend principalement de la qualité de l'apprentissage, c'est-à-dire de l'adéquation du système de récompenses et de punitions, sinon l'algorithme suivra le chemin de la moindre résistance et apprendra de la manière qui lui semble la plus facile, plutôt que de la manière qui est réellement adéquate. J'ai donc éliminé ces chemins de moindre résistance, c'est-à-dire que j'ai forcé l'algorithme génétique à évaluer la qualité du calcul des probabilités de résultats, plutôt que le nombre de pips.

3. la non-stationnarité. Il n'a pas pu être surmonté du tout, car il dépend uniquement du marché, et non de l'algorithme. C'est la seule chose qui constitue une véritable entrave à la qualité des prévisions. Mais son impact, si l'on élimine les autres inconvénients de la formation, n'est plus tel qu'il interfère avec les revenus.