Un peu surpris :) J'ai pensé que je devais partager et poser une question NON rhétorique. - page 6

 
hrenfx:

Supposons que vous ayez deux EA aux résultats identiques dans le Testeur, l'un sur les indicateurs et l'autre tout-en-un. La seconde fonctionne un ordre de grandeur plus rapidement.

Il n'y aura pas d'ordre de grandeur d'augmentation de la vitesse, seulement de 10 à 30 %. Vérifié. Le grand gain de vitesse nous rend encombrant l'écriture de deux Expert Advisors, tandis que le "tout en un" est pratiquement inutile pour le débogage et uniquement pour lutter contre les erreurs.

 
Integer:

Vous avez manifestement une certaine antipathie personnelle à mon égard. Oh, merde à moi. Je suis le centre de la terre, pour que tu réagisses de façon excessive ?

Pourquoi je ne t'enverrais pas une photo de moi pour que tu puisses t'essuyer avec ? Je me fiche de vos crises de nerfs. Ne perdez pas votre temps et votre énergie avec eux.

Je vous invite à être constructifs, vous êtes des adultes.

 
Integer:

Il n'y aura pas un ordre de grandeur d'augmentation de la vitesse, seulement 10 à 30 %. Prouvé. En raison d'un tel gain de vitesse, il vaut la peine de se donner la peine d'écrire deux Expert Advisors, alors que le tout-en-un n'est pratiquement pas faisable pour le débogage, seulement pour lutter contre les erreurs.

Le gain de vitesse dépend fortement de l'affaire. Personne n'a annulé l'optimisation algorithmique. Si c'est une sorte d'EMA primitif, le gain est minime. Mais s'il s'agit de quelque chose de plus complexe, cela peut être un ordre de grandeur. Cela dépend des compétences de chacun en matière d'optimisation algorithmique. Vous devez savoir où les recalculs peuvent avoir lieu, etc.

Dans ce sens, il est très utile d'écrire son propre optimiseur. Par exemple, sans optimisation algorithmique, la variante tout-en-un était 10 fois plus rapide (grâce au compilateur du langage de programmation) dans mon testeur que la même variante tout-en-un dans le testeur MT4. Après l'optimisation algorithmique, l'avantage a augmenté d'un autre ordre de grandeur.

Je ne m'en préoccuperais pas pour 10-30% dans ce cas.

 

hrenfx:

1. Le gain de vitesse varie fortement d'un cas à l'autre. L'optimisation algorithmique n'a jamais été annulée. S'il s'agit d'une sorte d'EMA primitive, le gain sera minime. Mais s'il s'agit de quelque chose de plus complexe, cela peut être un ordre de grandeur. Cela dépend des compétences de chacun en matière d'optimisation algorithmique. Savoir où il peut y avoir des calculs répétés, etc. 2.

2. écrire votre propre optimiseur aide beaucoup dans ce sens. Par exemple, sans optimisation algorithmique, la variante tout-en-un était environ 10 fois plus rapide dans mon testeur que dans le testeur MT4. Après l'optimisation algorithmique, l'avantage a augmenté d'un autre ordre de grandeur.

Je ne m'en préoccuperais pas pour 10-30% dans ce cas.

1) Cela dépend de la compétence de chacun en matière de rédaction d'indicateurs.

2. Si vous comparez avec précision les performances du testeur MT et de votre propre calculateur pour une stratégie, vous serez surpris de l'optimalité de l'algorithme du testeur (y compris celui fourni par Academician).

 
Integer:

2. Si vous êtes capable de comparer correctement les performances du testeur MT et de votre propre calculateur pour la même stratégie, vous serez très surpris de l'optimalité de l'algorithme du testeur.

Qu'entendez-vous par correct ? Ma calculatrice est >100 fois plus rapide que le testeur MT4, et a une erreur <1%. Est-ce justifié ou non ?

MT4-tester a des algorithmes normaux, mais il est conçu pour l'universalité et la prise en compte d'un très grand nombre de facteurs qui font que ma calculatrice a une erreur insignifiante (pour l'estimation des résultats).

Un exemple simple : si je ne considère pas l'historique des commandes dans mon EA en profondeur, pourquoi en ai-je besoin dans l'optimiseur ? Pourquoi ai-je besoin de l'émulation d'une barre de zéro dans l'optimiseur ? On n'a pas besoin de tout ça, donc tout se résume à une stupide boucle for. Il en résulte des vitesses multiples au prix d'une erreur de <1%.

Nous sommes dans le forum MQL5, mais je ne discute pas des performances du testeur MT5 dans cette discussion. J'aimerais voir une comparaison officielle des deux testeurs.

Эффективность многопотокового тестера стратегий MetaTrader 5 - MQL4 форум
  • www.mql5.com
Эффективность многопотокового тестера стратегий MetaTrader 5 - MQL4 форум
 
hrenfx:

1. Que voulez-vous dire par "correct" ? Ma calculatrice est >100 fois plus rapide que le testeur MT4, avec une erreur de <1%. Est-ce justifié ou non ?

MT4-tester a des algorithmes normaux, mais il est conçu pour être universel et prendre en compte un très grand nombre de facteurs, en raison desquels mon calculateur donne une erreur insignifiante (pour l'estimation des résultats).

2. Un exemple simple : si je n'examine pas en profondeur l'historique des commandes dans mon EA, pourquoi en ai-je besoin dans l'optimiseur ? Pourquoi ai-je besoin de l'émulation d'une barre de zéro dans l'optimiseur ? On n'a pas besoin de tout ça, donc tout se résume à une stupide boucle for. Il en résulte des vitesses multiples au prix d'une erreur de <1%.

Nous sommes dans le forum MQL5, mais je ne discute pas des performances du testeur MT5 dans cette discussion. J'aimerais voir une comparaison officielle de deux testeurs.

Je souhaite voir une comparaison des performances des deux testeurs afin de comprendre quel est le nombre minimum de manipulations dans le testeur pour diviser toutes les échéances en barres, synchroniser les différents symboles et exécuter les ordres.

2. J'espère que ce n'est pas dans le contexte de "je peux écrire un meilleur testeur de stratégie que MQ".

 
Integer:

1. pour que l'on puisse comprendre le nombre minimum de manipulations dans le testeur pour assurer la division en barres de toutes les échéances, la synchronisation des différents symboles et l'exécution des ordres.

Je suis sûr que les algorithmes du testeur sont excellents. Les développeurs ne perdent pas leur temps à l'optimiser au maximum - 100%. Mais ils ont rendu tout universel - pour toutes les variantes. Toutes les variantes ne sont pas nécessaires lorsque nous considérons un cas particulier de MTS. C'est la raison pour laquelle ils obtiennent des gains d'un ordre de grandeur dans leurs calculs sur le type de DUPLEX pour.

2. J'espère que ce n'est pas dans le contexte de "je peux écrire un meilleur testeur de stratégie que MQ".

Vous avez une idée préconçue de moi comme si je chie sur tout le monde partout. Dans ce fil, je suis complètement du côté des développeurs. Je comprends parfaitement les arguments du topicstarter sur la différence fondamentale entre les tâches d'un testeur et d'un optimiseur, mais je ne partage pas ses revendications contre les développeurs. Mon avis - si nécessaire, vous pouvez toujours créer votre propre testeur-optimiseur (pas super-versatile, mais rapide) pour vous-même.
 
Renat:

Il est préférable d'utiliser un indicateur parcimonieux correctement écrit en interne, plutôt que de le placer dans le code du conseiller expert.

Le transférer dans le code du conseiller expert signifie généralement qu'une méthode extrêmement personnalisée d'optimisation des calculs sera mise en œuvre, lorsque la quantité principale de calculs est écartée et qu'il reste 300 barres d'historique (par exemple). Dans la plupart des cas, il introduira des erreurs, mais l'auteur n'y prête généralement pas attention. De manière inattendue, dans le travail réel, il peut s'avérer que l'indicateur de base et sa copie réduite dans le conseiller expert ne coïncident pas.

Je suis d'accord avec cela, mais il y a un problème qui, dans certains cas, met une croix en gras.

C'est l'absence d'une réalisation normale de IndicatorCounted() - à chaque fois qu'il est remis à zéro, vous le savez très bien.

J'ai suivi une autre voie - j'ai créé mon propre fournisseur de données (algorithme assez optimisé avec adressage circulaire des données), j'ai créé ma fonction IndicatorCounted().

Cette approche s'est pleinement justifiée en conditions réelles.

De plus, les indicateurs sont transférés pratiquement 1:1, et il n'y a pas de problème avec leur débogage, etc.

Mise en place d'indicateurs en tant que classes sur l'exemple de Zigzag et ATR

Il y a même une comparaison des algorithmes et de l'approche dans le testeur :

P.S. Quant à l'erreur, elle dépend de l'algorithme de l'indicateur. Dans la plupart des cas, il suffit d'ignorer les premières mesures, et le reste coïncidera 1:1.

J'ai spécifiquement écrit des constructions de contrôle dans ce but.


P.S.2 Pour ZigZag, il s'agit simplement d'une issue indispensable à la situation.

Je l'appelle recalculer seulement quand j'en ai besoin, et il peut retourner le résultat étendu, que seul le dernier point a été redessiné.

Il permet d'optimiser les autres algorithmes d'un conseiller expert.


P.S. 3 En ce qui concerne le MT5, je tiens à dire que c'est une excellente plateforme. Mais il y a de sérieux bugs :

- les bogues critiques (bien sûr, ils seront corrigés en temps voulu)

- approche discutable de TERMINALMaxBar (j'ai écrit à ce sujet que la situation est une impasse)

- absence de fonction IndicatorCounted() adéquate (mais je n'en ai plus du tout besoin maintenant)


P.S.4 Je ne peux rien dire sur le testeur, car je ne joue pas le jeu de l'"optimisation".

 
AlexSTAL:

Je suis d'accord avec cela, mais il y a un "mais" qui, dans certains cas, y met un terme.

...

Quel est l'intérêt si, d'après vos propres tests, la classe intégrée à Expert Advisor est plus lente que l'appel via iCustom() ?

Autre question, êtes-vous prêt à réécrire tous les indicateurs dans ce style ?

 
Integer:

Quel est l'intérêt si, d'après vos tests, la classe intégrée dans le conseiller expert est plus lente que l'appel par iCustom() ?

Autre question, êtes-vous prêt à réécrire tous les indicateurs dans ce style ?

L'essentiel n'est pas dans le testeur, encore une fois ! Pas dans le testeur, mais dans des conditions réelles, où l'historique est téléchargé et où des échecs de connexion se produisent

À propos de tous les indicateurs - quel est le problème ?