Optimisation et tests hors échantillon. - page 3

 
Integer: Tout sera utile à la maison. Il est inutile de le comparer à MQ, car ce programme ne se teste pas lui-même, il ne fait qu'exécuter le testeur.
Personne ne rejette le testeur. Le testeur est bon, il n'y a aucun doute là-dessus. Je faisais référence à l'optimiseur. Ce sont les optimiseurs que nous pouvons comparer. D'accord, le sujet est éternel, il ne finira jamais. . .
 
leonid553:

Je pense que ce serait un ajout utile au testeur mt4. C'est possible, et susceptible d'être mis en œuvre quelque part par quelqu'un d'autre.


Vous avez raison - elle a été mise en œuvre. Regardez par exemple ici (projet MT4NetTester). Ne demandez pas à le donner, c'est une surprise.
 
Integer:
Mak:
Les gars, j'ai tout fait fonctionner depuis un moment maintenant.
Vrai sous TradeStation, et pas gratuitement ... :))
Je ne vois pas l'intérêt de le faire sous MT, nous n'avons pas l'habitude de payer pour travailler.


J'ai presque fini aussi)))) Et il n'est pas nécessaire d'intégrer quoi que ce soit dans le conseiller expert - le programme est téléchargé dans un fichier avec un ensemble de paramètres.

Les gars ! Et qui vous empêche d'écrire un article dans ce fil, de poster son développement avec une description et de percevoir une rémunération ?

Je ne cherche pas de cadeau. J'ai assez de diligence. Pas assez de connaissances spéciales. Quelle différence cela fait-il - qui vous paiera ?

 
leonid553:

Bon après-midi à tous.

Après avoir optimisé un EA, nous sommes souvent amenés à sortir de l'échantillonnage plus d'une douzaine de jeux de paramètres suggérés par l'optimiseur.

J'ai une idée pour optimiser les Expert Advisors en dehors de l'échantillon. Supposons que nous "chargions" le conseiller expert d'une optimisation par un certain nombre de paramètres. Par exemple, nous avons fixé une date allant du 1er janvier 2006 au 1er janvier 2007. 2006 au 1er janvier 2007.

Nous avons reçu plusieurs milliers d'Expert Advisors. Ensuite, nous sauvegardons la page avec les RÉSULTATS DE L'OPTIMISATION dans un fichier séparé. Ensuite, nous fixons la période historique suivante pour l'optimisation, c'est-à-dire que nous ajoutons un mois ou deux, ou autant que nécessaire.

Dans notre cas, nous avons fixé par exemple la date du 1er janvier. Et encore une fois, nous permettons l'optimisation. L'optimiseur ne doit pas prendre les paramètres dans les PROPRIÉTÉS DE L'EXPERT, mais les resélectionner un par un à partir du fichier que nous avons enregistré après la première optimisation. Après cette seconde optimisation, il ne nous reste plus que les vAriens qui ont rapporté des bénéfices en dehors de l'échantillon !

Le résultat, idéalement, est que nous obtenons les "paramètres idéaux" avec lesquels travailler et que nous pouvons tester en ligne par la suite !

Je pense que ce sera un ajout utile au testeur mt4. Probablement, et très probablement, elle est déjà mise en œuvre par quelqu'un quelque part. Si quelqu'un le sait, merci de partager le lien !

En raison de mes modestes connaissances, je ne parviens pas à trouver comment mettre cette idée en pratique.

C'est ce qu'on appelle l'optimisation de la marche avant (WFO) ou l'analyse de la marche avant (WFA).
C'est un sujet ancien et populaire en Occident.
 
Mathemat:
OK, l'idée générale est claire. Alors, la dernière question à tous ceux qui ont mis en œuvre ce projet (c'est-à-dire Belford, Mak, Integer) : cela en vaut-il la peine ? Bien sûr, il est agréable d'avoir un "optimiseur" qui ne se contente pas d'ajuster les courbes (comme metaquote) mais qui essaie également de tester la stratégie sur des données hors échantillon, mais mérite-t-il vraiment un score plus élevé que l'optimiseur MQ (qui est également bon, mais uniquement en tant qu'ajusteur de courbe) ?
En général, cela vaut la peine, bien que si nous examinons le processus WFO lui-même, nous pouvons voir qu'il s'agit également d'une optimisation, simplement plus complexe.
Nous sélectionnons les meilleurs de la première série parmi les meilleurs de la seconde et ainsi de suite. - il s'agit également d'une optimisation avec son propre raccord.

Mon optimiseur n'est qu'un conte de fées :))))

Tout d'abord, il est génétique et très efficace - il effectue des recherches très rapidement.
Deuxièmement, il vous permet d'utiliser n'importe quel critère d'optimisation personnalisé (c'est un grand pouvoir).
Troisièmement, la nouvelle version met en œuvre l'optimisation par plusieurs critères à la fois.
 

J'ai publié un exemple de mise en œuvre de mon critère d'optimisation dans la rubrique"init() pendant l'optimisation". Et j'essaie d'écrire un article à ce sujet. La méthode utilisée, je pense, permet de faire beaucoup de choses, de WFO à un algorithme génétique propre.

 
Mathemat:
leonid553, vous allez dans la bonne direction, car l'"optimisation" existante sans test sur les données hors échantillon est un pur ajustement de courbe. Mais l'algorithme de base devrait être plus complexe, comme dans les programmes de réseaux neuronaux. Toute "optimisation" devrait se faire simultanément sur tous les ensembles de données à la fois (c'est le souhait des développeurs). Vous pouvez, bien sûr, travailler avec seulement deux ensembles de données, mais il est préférable d'en prévoir trois - formation (A), validation (B) et test (C). Eh bien, dans les conditions actuelles, vous devrez travailler plus ou moins comme vous le suggérez.


Il me semble que le fait de tester (former, valider, exécuter, etc.) en dehors de l'échantillon réduit l'ensemble A="Jeux de paramètres rentables dans l'échantillon" à l'ensemble B="Jeux de paramètres rentables dans l'échantillon, ainsi qu'en dehors de l'échantillon". L'optimisation sur l'échantillonnage + hors-échantillon donne l'ensemble C="Jeux de paramètres rentables en échantillonnage + hors-échantillon".

L'ensemble B est-il contenu dans l'ensemble C ? A mon avis, évidemment oui, car l'ensemble B contient des "jeux de paramètres rentables à la fois dans l'échantillon et hors de l'échantillon", et donc ils sont des "jeux de paramètres rentables dans l'échantillon + hors de l'échantillon".

Alors qu'est-ce qui est redondant dans C par rapport à B ?

Évidemment, parmi l'ensemble C, il y aura des ensembles de paramètres qui ne sont pas rentables dans l'échantillon (uniquement dans l'échantillon), mais qui prennent leur revanche en dehors de l'échantillon. Autrement dit, nous perdons de l'argent dans l'échantillon, mais nous sommes plus que rentables en dehors de l'échantillon.

De plus, parmi l'ensemble C, il y aura des ensembles de paramètres rentables dans l'échantillon (uniquement dans l'échantillon), mais non rentables hors de l'échantillon, c'est-à-dire que nous gagnons de l'argent dans l'échantillon, mais en perdons hors de l'échantillon.

Un passage nous donne donc l'ensemble C, qui rassemble le sous-ensemble D="Jeux de paramètres non rentables ni dans l'échantillon ni hors échantillon, mais généralement rentables dans l'échantillon + hors échantillon", et qui n'est pas dans l'ensemble B. Si c'est un problème pour nous, il est beaucoup plus facile à résoudre que les tests hors échantillon.

Mais évitons-nous l'ajustement de la courbe par des tests hors échantillon ? Non. De plus, on peut faire valoir que l'ajustement le plus sévère (la rentabilité doit être respectée dans les parcelles individuelles) reste, et que seul le sous-ensemble D (peut-être l'enfant recherché ?) est rejeté, ce qui peut difficilement être appelé un ajustement du tout. Tout ce que nous évitons en divisant la période de test en segments, c'est l'exclusion de paramètres donnant des résultats non rentables dans l'un des segments. Tout ce que nous atteignons, c'est la rentabilité dans chaque segment. La conclusion logique de cette approche est la rentabilité de chaque opération séparément. Qui seulement garantira que des paramètres aussi merveilleux ne nous sont pas présentés par le diable de l'ajustement absolu des courbes ?

 

Un EA n'est pas la même chose qu'un EA ! Il y a des EA pour lesquels le test que j'ai décrit est le plus optimiste.

Qu'avons-nous, par exemple, à perdre ici ? Rien !

 
Vita:
Tout ce que nous évitons en divisant la période de test en segments est l'exclusion des paramètres qui donnent des résultats non rentables dans l'un des segments. Tout ce que nous obtenons, c'est la rentabilité dans chaque intervalle. Le résultat logique de cette approche est la rentabilité de chaque opération séparément. Qui seulement garantira que des paramètres aussi merveilleux ne nous sont pas présentés par le diable de l'ajustement absolu des courbes ?

Je le formulerais ainsi : nous marquons certaines vicinités de certains extrema par la première optimisation et vérifions leur stabilité par la seconde (hors échantillon). Bien entendu, personne ne peut garantir qu'ils resteront stables à l'avenir. Mais l'absence de garanties de performance est un trait caractéristique de toutes les prévisions.

Bien entendu, nous pouvons obtenir les mêmes informations en traitant les résultats de l'optimisation pour l'ensemble de l'échantillon. Il me semble toutefois que ce processus sera beaucoup plus long, tant en termes de mise en œuvre du logiciel qu'en termes de temps de comptage.

 
lna01:
Vita:
Tout ce que nous évitons en divisant la période de test en segments est l'exclusion des paramètres qui donnent des résultats non rentables dans l'un des segments. Tout ce que nous obtenons, c'est la rentabilité dans chaque intervalle. La conclusion logique de cette approche est la rentabilité de chaque opération séparément. Qui seulement garantira que des paramètres aussi merveilleux ne nous sont pas présentés par le diable de l'ajustement absolu des courbes ?

Je le formulerais ainsi : nous marquons certaines vicinités de certains extrema par la première optimisation et vérifions leur stabilité par la seconde (hors échantillon). Personne, bien sûr, ne peut garantir qu'ils resteront stables à l'avenir. Mais l'absence de garanties de performance est un trait caractéristique de toutes les prévisions.

--> Qu'est-ce que le fractionnement apporte de plus, par rapport à l'exécution de bout en bout ?

Bien entendu, nous pouvons obtenir les mêmes informations en traitant les résultats de l'optimisation sur l'ensemble de l'échantillon. Il me semble cependant que ce serait un processus beaucoup plus long, tant en termes de mise en œuvre du logiciel que de temps de comptage.

--> Si par "traiter les résultats de l'optimisation sur l'ensemble de l'échantillon" vous voulez dire écarter l'ensemble D, alors je ne suis pas d'accord - écarter les résultats donnant des pertes intermédiaires (dans l'échantillon ou hors de l'échantillon) est une tâche élémentaire, résolue pendant l'optimisation elle-même sur l'ensemble de l'échantillon, c'est-à-dire qu'aucun traitement après l'optimisation n'est nécessaire. Le résultat est l'ensemble B immédiatement. Et pas de vérifications supplémentaires hors de l'échantillon qui prennent du temps.