Sujet intéressant pour beaucoup : les nouveautés de MetaTrader 4 et MQL4 - de grands changements en perspective - page 57

 

C'est la tâche d'un algotrader adéquat, pas d'un testeur. Dans le testeur MT5, il n'y a pas de données sur les particularités du TS testé et le même historique de niveau 2 pour créer un historique d'exécution pour votre TS.

Ledélai aléatoire est la première chose qui vous vient à l'esprit lorsque vous écrivez votre testeur. Rude - oui, mais avec du sens. Parfois, cette rugosité est également utilisée pour les limiteurs - retard aléatoire.

Il ne s'agit pas d'être super précis, mais de trouver le juste milieu entre précision et vitesse. La finesse n'a de sens que dans des situations très spécifiques.

Ainsi, pour MT5, l'idée d'un mode de retard arbitraire (je n'ai pas vu l'implémentation) est tout à fait adéquate.

 
hrenfx:

C'est la tâche d'un algotrader adéquat, pas d'un testeur.

bien)) Par exemple, si je veux tester avec un lot plus grand, ou une autre méthode d'entrée/sortie, je dois générer manuellement un nouvel historique personnalisé)).

Un exemple approximatif d'un historique personnalisé est celui des différents modes de test dans MT4. Par les prix d'ouverture - un tableau d'historique (prix d'ouverture) est préparé, dans d'autres modes - d'autres.

Les indicateurs sont utilisés et un tableau avec une valeur calculée pour chaque barre est créé (si optimisé, alors plusieurs).

Nous devons tenir compte de la liquidité et du type d'ordres utilisés et l'historique peut être automatiquement construit/prétraité en conséquence. Le plus important est la matière première initiale.

 
Avals:

bien)) Par exemple, si je veux tester avec un lot plus grand, ou une autre méthode d'entrée/sortie, je dois générer manuellement une nouvelle histoire personnalisée)).

Exactement ! Notez que nous ne parlons pas de l'historique indicatif, qui est vu par le robot de combat, mais d'un historique personnalisé pour l'exécution dans le testeur. De toute évidence, le changement de volumes dans le TS entraîne un changement dans l'historique d'exécution. Ou, par exemple, un changement de ping - de même.

Générer l'historique des exécutions pendant les tests est absurde. Pour cette raison, nous devons estimer correctement le résultat avec Reinvest-TC. En effet, lorsque le volume augmente à la volée, l'historique des exécutions change (se détériore). Et comme il est impossible de prévoir à l'avance la dynamique des changements dans les volumes avec lesquels il opère, il est également problématique de recueillir à l'avance l'historique des exécutions. Mais en raison de cette nuance particulière, aucune personne saine d'esprit ne générerait l'historique des exécutions dans un testeur en temps réel.

Là encore, le juste milieu est important.

Vous, bien sûr, n'avez pas besoin d'une telle danse avec tambourin, comme tout le monde pratiquement. Mais il y a des CT où l'on ne peut se passer de la danse.

Pour tirer le maximum de leur CT (quel qu'il soit), vous devez faire de gros efforts. Presque personne ne le fait, se contentant de ce qu'il obtient.

 
hrenfx:

Exactement ! Notez que nous ne parlons pas de l'historique indicatif vu par le robot de combat, mais de l'historique personnalisé pour l'exécution dans le testeur. Il est évident que la modification des volumes dans le TS entraîne une modification de l'historique d'exécution. Ou, par exemple, un changement de ping - de même.

Générer l'historique des exécutions pendant les tests est absurde. Pour cette raison, nous devons estimer correctement le résultat avec reinvest-TC. En effet, lorsque le volume augmente à la volée, l'historique des exécutions change (se détériore). Et comme il est impossible de prévoir à l'avance la dynamique des changements dans les volumes avec lesquels il opère, il est également problématique de recueillir à l'avance l'historique des exécutions. Mais en raison de cette nuance particulière, aucune personne saine d'esprit ne générerait l'historique des exécutions dans un testeur en temps réel.

Là encore, le juste milieu est important.

Vous, bien sûr, n'avez pas besoin d'une telle danse avec tambourin, comme tout le monde pratiquement. Mais il y a des CT où l'on ne peut se passer de la danse.

Pour tirer le maximum de leur CT (quel qu'il soit), vous devez faire de gros efforts. Presque personne ne le fait, se contentant de ce qu'il obtient.

Et il n'est pas nécessaire de tester avec le réinvestissement)) de telles choses uniquement avec Level2 sans aucun prétraitement (manuel ou automatique). Dans d'autres cas, le volume d'exécution peut être pris en compte de manière suffisamment précise. Bien entendu, cela ne peut être estimé qu'en situation réelle de trading, sans influence sur le marché de vos propres ordres.

Il y a 2 façons globales d'utiliser de vraies tiques :

1. le terminal stocke les ticks et les pré-traite avant le test pour économiser les ressources.

2. l'utilisateur stocke les ticks, les compresse lui-même (mais selon les instructions du testeur) et les donne au testeur. Par exemple, comme maintenant dans mt5, mais tf<1min. Vous pourrez alors construire en tenant compte de vos besoins.

Je pense que la plupart des gens seront satisfaits de l'une ou l'autre de ces options.

P.S. Mais MQ ne gagne pas sa vie grâce à ceux qui testent leurs stratégies dans MT5, mais grâce aux courtiers et aux DC. Ces derniers s'intéressent au commerce par leur intermédiaire et il leur importe peu de savoir qui et comment ils testent. En d'autres termes, ils se soucient du terminal de négociation, et non du testeur. Mais, la popularité de la plateforme dépend du testeur, et donc du choix du courtier) Le dilemme - un historique personnalisé et des tests plus précis détacheront légèrement les utilisateurs du DC/courtier (ce qui ne plaira pas à ce dernier), mais cela augmentera quelque peu la popularité de la plateforme. C'est à MQ de décider ce qui est le plus rentable.)

 

Vous ne connaissez tout simplement pas le portrait de l'utilisateur moyen d'un terminal, c'est pourquoi vous avez une vision si déformée de ce qui affecte la popularité de la plateforme.

Renat fait presque tout ce qu'il faut pour populariser le produit de masse auprès des traders. Oui, il y a beaucoup de restrictions, mais l'utilisateur moyen ne les ressent même pas.

Le courtier moyen est aussi une créature muette. Et il vise au mieux l'utilisateur moyen.

Les grosses sommes d'argent dans le domaine du FOREX se trouvent derrière des plateformes indépendantes des plates-formes avec des approches avancées de l'agrégation. Nous devons améliorer les conditions de négociation pour créer des volumes.

Comparez simplement quel régime a potentiellement plus d'argent :

  1. Collecter des frais d'abonnement auprès des courtiers pour l'utilisation de leur plateforme.
  2. percevoir une commission (sur le chiffre d'affaires) auprès des courtiers et des institutions pour l'utilisation de la plate-forme.

N'étant pas sur un pied d'égalité, le même LMAX abandonne les clients de détail et passe au deuxième régime - pour être le meilleur LP, en concurrence avec EBS et d'autres. Déplacement des particuliers vers leurs IB avec MT4/5 et autres plateformes.

Quiconque s'intéresse sérieusement à l'algotrading ne dépend pas des plateformes de trading.

 

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Qui prend en charge MT5

MetaDriver, 2013.08.13 01:36

Si l' augmentation du nombre de clients est supérieure à la perte de mise en œuvre, il s'agit clairement d'une location. Si la croissance du nombre de clients est supérieure à la perte de mise en œuvre, l'entreprise est déjà clairement rentable.

Au contraire.
 
hrenfx:

Vous ne connaissez tout simplement pas le portrait de l'utilisateur moyen d'un terminal, c'est pourquoi vous avez une vision si déformée de ce qui affecte la popularité de la plateforme.

Renat fait presque tout ce qu'il faut pour populariser le produit de masse auprès des traders. Oui, il y a beaucoup de restrictions, mais l'utilisateur moyen ne les ressent même pas.

Le courtier moyen est aussi une créature muette. Et il vise au mieux l'utilisateur moyen.

Les grosses sommes d'argent dans le domaine du FOREX se trouvent derrière des plateformes indépendantes des plates-formes avec des approches avancées de l'agrégation. Nous devons améliorer les conditions commerciales afin de créer des volumes.

Comparez simplement quel régime a potentiellement plus d'argent :

  1. Collecter des frais d'abonnement auprès des courtiers pour l'utilisation de leur plateforme.
  2. percevoir une commission (sur le chiffre d'affaires) auprès des courtiers et des institutions pour l'utilisation de la plate-forme.

N'étant pas sur un pied d'égalité, le même LMAX abandonne les clients de détail et passe au deuxième régime - pour être le meilleur LP, en concurrence avec EBS et d'autres. Déplacement des particuliers vers leurs IB avec MT4/5 et autres plateformes.

Ceux qui prennent l'algotrading au sérieux ne dépendent pas des plateformes de trading.

Les deux options sont bien illustrées par deux visions du monde.

L'un dit d'activer l'environnement, l'autre dit de tout geler tel quel. Démocrates et républicains, libéraux et conservateurs.

La première option (avec un abonnement) oblige le courtier à mettre à jour ses clients et à les encourager à négocier (l'abonnement doit être remboursé), sinon le courtier subit des pertes et on peut se demander s'il continue à faire partie du marché.

La deuxième option n'a pas d'importance, même s'il n'y a pas une seule transaction en un mois, le courtier sera toujours un utilisateur de la plateforme (pas de transactions, pas de frais).

Il y a des moments où l'un est meilleur et d'autres où l'autre est meilleur.

 

J'avais besoin d'améliorer mon testeur pour un nouveau métier. Comprendre le code de l'ancien était plus une perte de temps (j'ai tué plusieurs semaines - approches occasionnelles), que d'en écrire un nouveau.

Il m'a donc fallu 5 heures (avec le débogage) pour écrire un nouveau testeur à partir de zéro. Ses caractéristiques (me satisfont pour commencer) :

  • Fonctionne avec le modèle de pari M1 HighBid + LowAsk (les résultats sont plus précis que le testeur MT5).
  • Un symbole.
  • Vitesse (i7 2700K) environ 100.000.000 de barres par seconde (277 années de FOREX par seconde) sur le TS de test - pas vide, beaucoup de choses calculées. Constamment sur le marché.
  • Pas de MM - pas de lots.
  • Profit uniquement en pips.
  • Le trader a la possibilité de contrôler le slippage et la commission.
  • Optimiseur avec ses propres critères d'optimisation - pour chacun d'eux, il ouvre son propre fichier (qui peut prendre plusieurs Go) avec des chaînes de transactions triées.
  • Il n'y a pas de contrôle d'erreur dans le testeur - je connais toutes les nuances de mon testeur, donc je ne le permets pas.
  • TS est écrit dans un MQL4 légèrement abrégé - toutes les choses inutiles ont été supprimées. Mais vous pouvez utiliser toute la puissance du C++.
  • Le testeur est écrit sans OOP - je ne sais pas comment le faire de manière compétente. Il s'agit donc pratiquement d'un pur langage C.
  • Code source en C++ libre~ 20Kb.
  • Les arrêts et les marchés ont été jetés (OrderClose a été laissé) - pas nécessaire.
  • Chaque exécution (au choix - spécifier le numéro de l'exécution) peut être visualisée et étudiée dans le paquet mathématique - le fichier des modifications de l'équité et de la balance est écrit simplement.
  • Pas de génétique.
  • Pas d'OpenCL - on ne peut pas le faire.
  • Mono-filière. Chargement stupide de tous les cœurs - exécution manuelle de plusieurs optimiseurs.
  • Application console.
  • Les paramètres d'entrée du TC, les réglages du testeur et les plages d'optimisation sont définis dans le fichier.
  • TC est compilé avec le testeur dans un seul fichier EXE.
  • Avant le démarrage, il n'y a que trois fichiers : EXE, historique, paramètres.
  • L'optimiseur a une interruption de l'exécution, si l'état actuel de l'exécution ne satisfait pas aux conditions (par exemple, la subsidence est trop élevée).
  • Le script MQL4 prépare l'histoire pour le testeur, il a été écrit il y a longtemps.
  • Pas d'allocation dynamique de mémoire pour la table des commandes - une fois la mémoire allouée et oubliée.
  • Pas de journaux - je ne les regarde pas.
  • Pas d'historique des commandes - de la même manière.
  • Il n'y a aucune idée des indicateurs et de tout ce qui s'y rapporte - nous n'en avons pas besoin pour le TS.
  • Les prix sont des nombres entiers (long int).

Si le même non-sens est mis en œuvre dans MQL5, nous pouvons utiliser Cloud en mode d'optimisation matricielle. Seul l'historique doit être envoyé à chaque fois - la compression intégrée de ces informations est nécessaire.

Théoriquement, il est possible d'atteindre une vitesse de ~ 100 Bb/s (au niveau du TS d'essai). Je me demande quelles sont les performances de MT5-tester sur l'ensemble du nuage dans les mêmes perroquets ?

100 milliards de bars par seconde est une bonne vitesse pour toutes sortes de recherches. Si on la convertit en d'autres unités, cette vitesse signifie qu'une année d'une minute d'histoire du FOREX est exécutée ~300 000 fois par seconde sur un symbole.

La majeure partie du temps a été consacrée à l'apprentissage de la syntaxe de la langue - en la googlant. Pas un programmeur.

Je vous le dis tout de suite, c'est une énorme perte de temps que d'écrire un cadre universel pour vos modestes besoins. Mieux vaut explorer. Si un élément doit être pris en compte, il suffit de l'ajouter.

Ce n'est qu'un noyau, il faut maintenant une boîte à outils astucieuse pour l'optimiseur. Cela prendra beaucoup plus de temps ici - vous devez réfléchir.

The Dev-C++ Resource Site
  • Hongli Lai
  • www.bloodshed.net
Dev-C++ is Free Software distributed under the GNU General Public License. This means you are free to distribute and modify Dev-C++, unlike most Windows software! Be sure the read the license. Donations Please support Dev-C++ by making a donation ! The money will be shared between the active developers and the support manager in order to...
 
hrenfx:
  • Vitesse (i7 2700K) autour de 100.000.000 de barres par seconde (277 années de FOREX par seconde) sur le TS de test - pas rien, beaucoup de choses sont calculées. Constamment sur le marché.

Surtout, n'oubliez pas d'ajouter au temps la lecture du disque.

Le nombre de 100 000 000 de barres est très réjouissant, surtout avec la précision qu'il y a HighBid + LowAsk (c'est-à-dire non). Ou bien n'y a-t-il que 100 000 barres ?

Analyser les résultats des tests dans Excel ? Calculer en une seconde et regarder Excel pendant une heure ?


Pour comparaison, le testeur MetaTrader 5 sur M1 sur Openbar, sans indicateurs, mais avec tous les bagages et services (dont vous ne vous êtes pas soucié), y compris l'animation de l' interface graphique et le soulèvement de toute la base à partir du disque :

  • EURUSD,M1 : 19 538 553 ticks (5 180 083 barres) générés en 7906 ms

ce qui donne environ 2,4 millions de ticks par seconde sur un i7 similaire.

 
Renat:

L'essentiel est de ne pas oublier d'ajouter la lecture du disque à l'heure.

Il s'agit d'un temps inutile, car il n'a aucun effet sur l'optimisation. Maintenant que vous avez un SSD, vous pouvez arranger le RAM-Drive aussi. En bref, ce temps ne sert à rien.

Le nombre de 100 000 000 de barres est très agréable, surtout lorsqu'on précise qu'il y a HighBid + LowAsk(c'est-à-dire non). Ou bien n'y a-t-il que 100 000 barres ?

Pourquoi pensez-vous qu'il n'y en a pas ? Je n'ai utilisé que quelques centaines de milliers de barres pour le test TS. C'est-à-dire que la vitesse d'optimisation est de 100 millions de barres par seconde. La durée de l'histoire initiale n'est donc pas importante pour ce paramètre.

Par exemple, l'historique initial de 100 000 barres est exécuté 1000 fois par seconde dans l'optimiseur - cela signifie la vitesse de 100 millions de barres par seconde.

Analyser les résultats des tests dans Excel ? Calculer en une seconde et regarder Excel pendant une heure ?

Excel est de la merde (je ne le connais pas vraiment tout simplement). Dans les paquets matriciels, il est élémentaire de tordre et de retourner le résultat d'une course. Vous n'avez pas besoin de modifier le document de matrice lui-même. Presque toutes les caractéristiques du TC s'éteignent sur le champ. C'est beaucoup plus avancé et efficace que l'analyse dans un testeur MT5 ou dans tout autre testeur.

À propos, le testeur MT5 n'a pas de filtres de résultats d'optimisation. Je les ai intégrés immédiatement (sans GUI, mais 100% justifié) . Par exemple, j'ai trié les courses par profit. J'ai défini le filtre par drawdown, et tout est clair : la ligne du dessous est toujours une exécution avec moins de drawdown que celle du dessus. Méthode très efficace - je vous recommande de l'implémenter dans votre testeur.

Pour comparaison, le testeur MetaTrader 5 sur M1 sur Openbar, sans indicateurs, mais avec tous les bagages et services (dont vous ne vous êtes pas soucié), y compris l'animation de l'interface graphique et le soulèvement de la base entière du disque :

  • EURUSD,M1 : 19 538 553 ticks (5 180 083 barres) générés en 7906 ms

ce qui donne environ 2,4 mln ticks par seconde sur un i7 similaire.

Mieux vaut citer la vitesse d'optimisation (écrite ci-dessus) - en théorie, elle devrait être plus élevée pour vous. Je ne sais pas vraiment pourquoi les tics ont été générés en mode openbar ?

Au fait, est-ce que MT4 bat toujours (et si je prends en compte l'accélération du code MQL4 ?) la vitesse de MT5 en mode openbar en optimisation ou non ?

Raison: