J'aimerais poser une question sur la plage de données utilisée pour optimiser les EA. C'est-à-dire sur quels délais et quelles plages choisir. Par exemple, pour H1, est-il suffisant d'optimiser le conseiller expert sur des données mensuelles, triennales et annuelles ? J'aimerais voir ces valeurs pour différentes périodes de temps et au moins une brève justification du choix.
Il n'y a pas de critères clairs ; chacun a son opinion. Je vais essayer de vous donner mon avis.
L'optimisation sur toute la période de l'histoire est une pure auto-déception. C'est pourquoi l'intervalle d'optimisation doit être au moins égal à la moitié de la période de test. Cependant, plus la partie de la période d'essai utilisée pour l'optimisation est petite, mieux c'est. Après avoir sélectionné les paramètres à l'intervalle d'optimisation, exécutez le test sur l'intervalle complet que vous avez choisi comme période de test. Vous pouvez commencer à "croire" aux résultats obtenus, si l'échantillon compte au moins 100 transactions. Mais même cela n'est pas suffisant pour de nombreuses personnes. Il est clair qu'un plus grand nombre de transactions donne une idée plus précise du système. Par exemple, je peux "croire" en un échantillon d'au moins 200 transactions. 1000 transactions est optimal, mais il n'y a pas de limite à la perfection...
Cette question est très bien traitée par Jezev et Shumsky. Voici ce que l'on peut dire en résumant ce qu'ils ont fait :
La tâche de la théorie de l'apprentissage n'est pas de minimiser l'erreur d'apprentissage, mais de minimiser l'erreur de généralisation définie pour tous les exemples futurs possibles. C'est ainsi qu'un TS optimisé aura un pouvoir prédictif maximal. Et la difficulté ici est que c'est et seulement l'erreur d'apprentissage qui est réellement observable. L'erreur de généralisation ne peut être qu'estimée, sur la base de certaines considérations. L'erreurdes prédictions du testeur sur les nouvelles données est déterminée par la longueur totale de la description des données par le modèle, ainsi que par la description du modèle lui-même .
Erreur d'approximation
Puisque le nombre de décisions prises par le CT, en règle générale, est beaucoup plus petit que le nombre de paramètres ajustés dans celui-ci, dans ce cas l' erreur moyenne d'approximation sera exprimée par le nombre total de paramètres d'ajustement w comme suit Eapprox= d/w, où d est le nombre de paramètres d'entrée que le TS analyse. Dans la grande majorité des cas, d=w est respecté (tous les paramètres d'ajustement sont concentrés à l'entrée du TC).
Le principal problème des algorithmes d'apprentissage est connu comme le problème du sur-apprentissage ou de l'adaptation à l'histoire.L'essence de ce problème est mieux expliquée par un exemple concret. Supposons que les exemples d'apprentissage soient générés par une fonction que nous voulons reproduire. Dans la théorie de l'apprentissage, cette fonction s'appelle un enseignant. Étant donné un nombre fini d'exemples d'apprentissage, il est toujours possible de construire le test avec une erreur d'apprentissage nulle, c'est-à-dire avec l'erreur définie sur l'ensemble des exemples d'apprentissage. Pour ce faire, il faut prendre un TS dont le nombre de paramètres d'ajustement est supérieur au nombre d'exemples. En effet, pour reproduire chaque exemple, nous avons P équations pour W inconnues.Et si le nombre d'inconnues est inférieur au nombre d'équations, un tel système est sous-déterminé et admet une infinité de solutions. C'est là le principal problème : nous ne disposons pas de suffisamment d'informations pour choisir la seule solution correcte - la fonction d'enseignant. Par conséquent, la fonction sélectionnée au hasard donne de mauvaises prédictions sur les nouveaux exemples qui n'étaient pas présents dans l'échantillon d'entraînement, même si Tester a reproduit ces derniers sur l'historique sans erreur. Au lieu de généraliser les exemples connus, il les a mémorisés. Cet effet est appelé sur-apprentissage.
Erreur liée à la complexité du modèle.
La description d'un modèle se résume essentiellement à transmettre les valeurs de ses paramètres sous-ajustés. Pour une précision donnée, une telle description nécessitera environ W bits. Par conséquent, l'erreur spécifique par exemple liée à la complexité du modèle peut être estimée comme suit : Ecomplex=W/P. Comme nous le voyons, il diminue de façon monotone avec l'augmentation du nombre d'exemples (longueur de l'historique dans la formation).
En effet, afin de déterminer sans ambiguïté les paramètres d'ajustement de par P des exemples donnés, il est nécessaire que le système de P des équations doitêtre surdéterminé, c'est-à-dire que le nombre de paramètres W doit être supérieur au nombre d'équations. Plus le degré de surdétermination est élevé, moins le résultat de l'apprentissage dépend du choix particulier d'un sous-ensemble d'exemples d'apprentissage. La composante erreur de généralisation définie ci-dessus est précisément liée aux variations de solution dues à la finitude du nombre d'exemples.
Nous avons donc estimé les deux composantes de l'erreur de généralisation du testeur de stratégie : E=Eapprox+ Ecomplex=d/W+W/P>SQRT(d/P).Il est important de noter que ces composantes dépendent différemment du nombre de paramètres d'ajustement W, ce qui implique que l'on peut choisir la taille optimale qui minimise l'erreur globale. L'erreur minimale (signe d'égalité) est atteinte à la longueur optimale des données historiques participant à l'optimisation de la stratégie : P=k*W^2/d=k*W, où la constante k est approximativement égale à 4.
Ainsi, l'erreur de prédiction minimale d'un conseiller expert dans le test avant optimisé dans le testeur de stratégie sur des données historiques sera atteinte si la longueur des données historiques est quatre fois plus grande que le nombre de paramètres d'ajustement dans le testeur de stratégie.
Si nous optimisons 5 paramètres dans le testeur (par exemple, les périodes de Mach), alors la longueur optimale de l'historique devrait être telle que le testeur utilise 4*5=20 transactions sur celui-ci. Cela peut prendre de 1 à ...200 jours d'histoire, tout dépend de la stratégie adoptée. Une réduction de ce nombre conduira à l'adaptation du testeur à l'historique, et une augmentation - à la détérioration de la qualité de l'approximation et, par conséquent, à la détérioration de la précision de la prévision.
Il existe de nombreuses façons de connaître ce monde.
Certains apprennent à le connaître par l'amour. Certains par la méditation, etc. J'ai donné un moyen d'estimer la valeur des intérêts par la logique et les mathématiques. Donc votre secret n'est pas un secret du tout, c'est juste une autre facette...
P.S. Ce dont j'ai parlé ci-dessus n'est qu'un acte d'optimisation des paramètres. Pour évaluer les performances d'un EA optimisé, un point ne suffit pas, il faut collecter des statistiques, alors qu'un résultat statistiquement significatif commence par une centaine d'exécutions sur des données indépendantes avec une sur-optimisation à chaque passage....
La recette pour une optimisation adéquate dans le testeur ne sera donc pas simple.
Merci beaucoup à tous, en particulier à Neutron pour la description détaillée. Récemment, j'ai trouvé une idée très intéressante sur le forum et je travaille à sa mise en œuvre dans le code. Je l'ai testé sur une démo et j'ai obtenu d'assez bons résultats, environ 150% après 3 jours, mais il y a quelques subtilités... Afin de ne pas créer un nouveau sujet, je vais poser la question ici :
Lors de la définition d'un point d'entrée, je dois savoir si un ordre est déjà ouvert dans la même direction à une distance de n pips. Le code suivant ne fonctionne pas mais je ne comprends pas pourquoi :
bool buy=true ;
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
si(OrderType()==OP_BUY && OrderOpenPrice()<=Bid && Bid-OrderOpenPrice()<50*Point) buy=false ;
}
si (achat) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0, "MyAdvisor",0,0,Blue) ;
Je veux qu'il ouvre un ordre et n'ouvre le suivant que si la différence entre le prix actuel et le prix de l'ordre ouvert actuel est supérieure à 50 pips.
à Neutron
Ces deux types d'erreurs s'appliquent-ils à tous les TC ou seulement aux réseaux neuronaux ?
budimir Vous choisissez pour la définition des paramètres les zones de tendance ? Choisissez-vous les lignes de tendance et les lignes de tendance latérales ?
Je sélectionne les sections de tendance les plus vivantes, et la section d'ajustement ne donne que 20-30 affaires, alors que l'échantillon de la section d'ajustement devrait être d'au moins 100-1000 affaires pour
la fiabilité maternelle - tout cela n'a pas de sens, eh bien, disons que vous avez pris un tracé d'ajustement, directement adjacent au futur, identifié la phase du marché - une tendance ou c'est une tendance latérale ou un changement de direction, et puis ? Rien ! Le marché n'est PAS stationnaire, et nous ne savons pas où il va aller dans le futur !
à ITeXPert > ne soyez pas ridicule à propos de 150% en 3 jours.
et dans mon TS vous pouvez obtenir plus d'une douzaine de ces lots en 3 jours avec 150% ! :о)
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Bonjour à tous !
J'aimerais poser une question sur la plage de données utilisée pour optimiser les EA. C'est-à-dire sur quels délais et quelles plages choisir. Par exemple, pour H1, est-il suffisant d'optimiser un EA sur un mois, trois mois ou un an de données ? J'aimerais voir ces valeurs pour différentes périodes de temps et au moins une brève justification du choix. Merci beaucoup.