Discussion de l'article "L’algorithme de génération de ticks dans le testeur de stratégie du terminal MetaTrader 5" - page 4

 
Renat :
Mais vous participez au sujet MetaTrader 5 + MQL5 + Tester et vous êtes en concurrence directe avec les développeurs.


Puisque vous ne connaissez pas le terminal MetaTrader 5, vous n'êtes pas au courant des modes de trading dans Tester et vous n'avez même pas prêté attention à mon explication de ces modes avec une image sur la première page de ce sujet.

Les modes de test sont spécialement conçus pour dégriser les traders et écrire des Expert Advisors robustes. Cela améliorera considérablement et qualitativement les conseillers experts.

J'ai écrit à plusieurs reprises sur les modes agressifs du testeur dans les forums (MQL4.com et MQL5.com).

C'est la racine des problèmes - la réticence à tester en pratique.

En général, notre dialogue ressemble à une discussion entre les opposants et les partisans des verrous,

Chaque partie ne veut pas entendre l'autre (probablement parce qu'une partie a souffert de certaines solutions que les opposants ne voient pas et ne comprennent pas).

Il serait bon que vous ayez raison et que la pratique le démontre,

Je vous souhaite bonne chance et croyez-moi c'est un souhait sincère car il est plus important pour moi d'utiliser un meilleur terminal.

(et de faire des bénéfices avec son aide) que d'avoir raison dans un quelconque litige.

 
Renat писал(а) :

...
4. Se souvenir de votre "compétence" en matière de modélisation et de votre attitude à cet égard dans MT4. Je peux encore poser une question. Avez-vous le même nombre de ticks dans une barre ? Dans MT4, vous aviez l'habitude de jeter 20% des ticks. Qu'en est-il aujourd'hui ? Si une barre réelle a 100 ticks, combien de ticks aurez-vous dans la modélisation ?

Cela coïncide, mais vous ne voulez rien vérifier. La théorie vous suffit.

D'accord, vérifions. J'ai dessiné un expert. Voici le code.

  int ticks=0; 
  double  old_bid=0, old_ask=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {return(0);}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick)) // получаем тик по символу
     {
     // ограничение по времени, собираем смоделированные тики за 1 час. 2010.05.21   22:00
      if(last_tick.time>"2010.05.21 21.00.00" && last_tick.time<"2010.05.21 23.00.00") {
      if(old_ask!=last_tick.ask || old_bid!=last_tick.bid)  { // если нет изменения цены это не тик, пропускаем
         // это тик запоминаем цену, увеличиваем счетчик тиков и выводим принт для проверки
         old_bid=last_tick.bid;
         old_ask=last_tick.ask;
         ticks++;
         Print("ticks=", ticks," ",last_tick.time,": Bid =",last_tick.bid," Ask =",last_tick.ask);
     }      
     }
     }
   else Print("SymbolInfoTick() failed, error =",GetLastError());
//---
  }

Voici le résultat.

Les chiffres ne correspondent pas. De deux choses l'une : soit j'ai les mains tordues, soit vous mentez. N'importe qui peut télécharger et vérifier par lui-même. Si vous trouvez une erreur dans mon code, je vous en serais reconnaissant.

Dossiers :
111.mq5  3 kb
 

L'examen pratique a abouti à la première option. Vous avez fait une erreur dans les limites en indiquant 2 heures au lieu d'une.

Voici la variante correcte de la limite de temps :

      if(last_tick.time>="2010.05.21 21:00" && last_tick.time<"2010.05.21 22:00") 

Et les résultats :

2010.05.23 20:13:07     Core 1  ticks= 2315   2010.05.21 21:59:59 : Bid = 1.25721  Ask = 1.25738

2315 ticks ont été générés alors que les 2318 ticks réels ont été générés. Une perte de 3 ticks sur 2318 est une variante normale.


 

Vous êtes d'accord pour que ce code soit vérifié. Il vous suffit de saisir l'intervalle de temps correct. Veuillez saisir celui-ci.

      if(last_tick.time>"2010.05.19 12.00.00" && last_tick.time<"2010.05.19 13.00.00") {

Expliquez où sont passés les 5200 ticks ?

 

C'est une bonne chose que vous continuiez à faire les tests pratiques.

Je n'ai pas 5869 ticks sur cette montre, j'en ai 679. Voici mes résultats pour cette période - 679 ticks. 100% des tics ont été simulés.


Apparemment, vous avez une horloge mise en cache (et les minutes étaient correctes pour un total de 679 tics) - nous avons activé le téléscripteur pendant une courte période le 19, mais nous l'avons ensuite annulé.

Il suffit d'invoquer la commande "Refresh" sur le graphique et de l'exécuter à nouveau.

Faites attention au format correct de l'heure AAAA.MM.DD HH:MM:SS.

 

une question que l'on a oublié de traiter dans cet article

avec l'apparition de données de volume réel dans mt5

comment ces informations seront générées

 

Je comprends parfaitement les traders de pips, même si Urain et Prival les rejettent. Mais mes TS sont construits au contraire sur le plus grand filtrage de bruit possible, les TS deviennent immunisés contre les qualités des ticks, et peuvent être utilisés avec n'importe quel fournisseur de cotations. De tels TS peuvent être utilisés avec n'importe quel fournisseur de cotations. En ce qui concerne le NN, mentionné par Urain, cela n'a aucun sens de construire un TS sur le NN sensible à la qualité des ticks.

Je comprends bien les développeurs.

Je vois un compromis dans la création par les développeurs d'un add-on au générateur de ticks standard qui permettrait de réguler le "fluffiness" des ticks générés, avec la possibilité de réguler la fréquence d'occurrence et la taille des émissions dans les ticks. À mon avis, ce n'est pas la même chose que de régler le "degré d'agressivité" des tests. Peut-être devrions-nous envisager une variante d'une sorte d'analyseur du degré de correspondance entre les tics générés dans le testeur et les tics réels, de manière à pouvoir afficher les paramètres que les utilisateurs peuvent ajuster.

Quoi qu'il en soit, les développeurs doivent faire quelque chose pour protéger leurs intérêts et ceux des traders finaux. Il est presque toujours possible de trouver des solutions de compromis.

PS Oui, et encore une chose. Je ne sais pas pourquoi nous avons besoin de l'historique des ticks (parce que des tests réels adéquats sont nécessaires), si DC peut changer les filtres même chaque jour, rendant l'historique des ticks accumulé inutile, puisque le comportement futur du TS sera très différent de ce qui était attendu après les tests, même sur l'historique des ticks réel. C'est pourquoi je considère que la variante avec réglage de la "fluffiness" par l'utilisateur est plus préférable que la possibilité d'avoir un véritable historique des tics.
 
joo писал(а) :

Je comprends parfaitement les traders de pips, même si Urain et Prival les rejettent. Mais mes TS sont construits au contraire sur le maximum de filtrage de bruit possible, les TS deviennent immunisés aux qualités des ticks. .....

Et je ne comprends pas les gens qui étiquettent sans comprendre. Encore une fois, voici le lien de la première page. https://www.mql5.com/ru/forum/115584/page11#150512. Regardez de plus près l'image ! !! vous pouvez tout y voir - les transactions sont tracées sur le graphique.

Paramètres - taille moyenne des transactions en pips 650, temps minimum pour tenir une transaction 1 heure. SUIS-JE UN HOMME À PIPS ?

Pourquoi m'interdisez-vous d'analyser les ticks ? Est-ce que je vous interdis de travailler et d'analyser les informations entrantes comme VOUS l'entendez ? Vous pensez qu'en travaillant sur des ticks horaires VOUS vous débarrassez automatiquement du bruit - c'est une illusion, je suggère une variante encore meilleure - travaillez sur des chandeliers annuels, le système sera encore meilleur, encore plus robuste, encore plus silencieux, les fournisseurs de données n'ont aucun problème, ils donnent 5 chiffres de OHLC et du "volume" une fois par an au trader et le laissent trader. Tout le monde est content, le trader a un système robuste, il n'y a pas de bruit, le fournisseur n'a pas de problème de mise à l'échelle, etc. (il existe une telle méthode en science, la substitution de cas extrêmes pour comprendre si une idée est absurde ou non... tirez vos propres conclusions).

Maintenant, je vais écrire une réponse à Renat et c'est tout. J'essaierai de décrire où je vois des divergences entre la modélisation et les citations réelles. C'est son idée, il a décidé de modéliser les ticks, et il pense que de nombreux paramètres de ne sont pas importants dans la modélisation.

Notre travail consiste à comprendre dans quels domaines nous pouvons faire confiance au testeur et dans quels domaines. Et où le testeur nous trompera. Nous ne pouvons pas nous faire changer d'avis. Renat s'imagine qu'il est possible de créer un modèle qui soit meilleur que le modèle réel. Je ne le crois pas.

On nous donne la possibilité d'étudier le TC uniquement sur le modèle et il n'y a aucune possibilité d'utiliser le TC créé sur des données réelles (bonnes ou mauvaises, floues ou non, cela n'a pas d'importance). Nous n'avons pas cette possibilité! !!. Pourquoi ne nous donnent-ils pas la possibilité de télécharger l'historique au moins indépendamment, disons à partir d'ici http://www.dukascopy.com/swiss/russian/data_feed/historical/, de le mettre dans le testeur et d'exécuter le TS sur ces données ? Le résultat que vous connaissez tous très bien, personne ne l'a rencontré ? Dans le testeur tout va bien, mais dans la vie réelle, même si vous avez trouvé le TS, vous pouvez obtenir si magnifiquement sur le visage https://www.mql5.com/ru/forum . Et il faut être un paranoïaque absolu pour modéliser une telle chose (même avec l'aide d'un générateur) et essayer de créer un TS qui sera résistant à une telle chose et qui fonctionnera dans de telles conditions.....

Pour ce qui est de la comparaison entre le nombre de tics historiques et le nombre de tics modélisés....

Oui, il s'agit d'un problème d'historique (c'est exactement ce dont nous parlons).

J'ai écrit au Service Desk #14710 2010.05.18 08:42 a.m. à propos des échecs dans les citations. Ils ont mis beaucoup de temps à régler le problème, et il semble qu'ils ne l'aient pas résolu. Le 20.05 j'ai effacé tous les devis manuellement, je les ai téléchargés à nouveau, donc ce n'est pas ça (vous faisiez des expériences le 19). Les devis que j'ai récupérés par correspondance du Service Desk ont été téléchargés vers le 2010.05.20 12:08.

Pour qu'il n'y ait plus de malentendus. J'ai de nouveau supprimé complètement le dossier Histoires et j'en ai téléchargé un nouveau.

  1. En effet, lorsque j'ai cliqué sur le bouton d'actualisation, l'historique a changé. Les données correspondent à ticks= 678.
  2. Du point de vue du fournisseur de données, c'est une bonne chose, il peut modifier l'historique comme un magicien.
  3. Du point de vue du trader, c'est un cauchemar. Exclure une telle situation. J'ai ces données dans mon terminal, elles participent aux calculs, aux indicateurs, elles sont utilisées pour construire des TS et prendre des décisions.

Ce à quoi j'ai prêté attention, cette vérification est inutile.

if(old_ask!=last_tick.ask || old_bid!=last_tick.bid)  

1) Vous n'avez pas de situations où seul le ask ou le bid change (le vendeur ou l'acheteur est démantelé). Or, cela arrive très souvent. L'offre reste inchangée, seule la demande change et vice versa.

2. Le spread est égal à une constante. Cela ne correspond pas non plus à la réalité.

3) Si vous voulez de l'aide pour rechercher la qualité du modèle, recueillez les ticks vous-même, de préférence à partir de 3 ou 4 sources, et publiez-les. Recueillez vous-même des ticks, de préférence à partir de 3 ou 4 sources, et publiez-les. Montrez les résultats de la modélisation de ces ticks, non pas sous la forme d'une image où le prix baisse de 30 points pour 1000 ticks. Mais disons pour une journée, où il y a différentes situations, y compris des mouvements importants dans un court intervalle de temps.

4. Donnez les caractéristiques numériques de l'écart par rapport aux données réelles, au moins le RMS sur les deux axes.

5. Cela se fait dans le monde entier, les résultats sont fiables si quelqu'un d'autre obtient le même résultat avec les mêmes données initiales.

6. Sinon, la situation sera la même que celle décrite ci-dessus, vous avez 678 ticks dans le terminal, j'en ai 5800. Si nous ajoutons ici toutes les nuances de la collecte des ticks, nous ne trouverons jamais la vérité.

7. Rester assis pendant 2 ou 3 jours à collecter des ticks pour montrer ou prouver quelque chose à quelqu'un, désolé, j'ai déjà collecté en mon temps. Il me suffit de voir comment les tics sont générés pour me faire une opinion.

8. Il est dommage qu'en raison du format choisi pour stocker et alimenter l'historique dans le terminal, nous, les traders, perdions des informations. Renat, vous aurez beau essayer, vous ne pourrez pas construire un graphique, disons sous la forme de Renko, Kagi. Il sera redessiné et différent de ce qui est construit sur des données réelles.

Mes conclusions et recommandations pour les traders. Vous pouvez les prendre en compte, ou pas, c'est à vous de voir.

  1. Le mode test est inutile. C'est une perte de temps, car la structure des ticks à l'intérieur de la barre n'est pas reproduite fidèlement.
  2. La méthode de test la plus correcte est probablement la même que dans MT4 aux prix d'ouverture. Plus précisément, vous devez vous assurer qu'une nouvelle barre a commencé et prendre les prix de la précédente. En même temps, dans le trading réel, vous devez utiliser des contrôles "paranoïaques" pour la présence et la synchronisation de données comme celle-ci https://www.mql5.com/ru/forum/993 et les résultats peuvent toujours ne pas coïncider.
  3. Si vous testez le système avec un petit stop ou une petite valeur de chalut, les résultats peuvent différer même aux prix d'ouverture, en raison d'un éventuel décalage entre l'heure du plus bas et celle du plus haut(ils peuvent être réarrangés). (Ils peuvent être réarrangés).
  4. Avant que le conseiller expert ne fonctionne dans la vie réelle, lorsque vous l'initialisez, vous devez d'une manière ou d'une autre vérifier l'exactitude de l'historique (simuler l'appui sur le bouton d'actualisation).
MetaTrader не отражает реальности ! как с этим бороться? - MQL4 форум
  • www.mql5.com
MetaTrader не отражает реальности ! как с этим бороться? - MQL4 форум
 
Prival :

Je ne comprends pas les gens qui étiquettent les gens sans savoir de quoi ils parlent. Une fois de plus, voici le lien de la première page. https://www.mql5.com/ru/forum/115584/page11#150512. Regardez de plus près l'image ! !! vous pouvez tout y voir - les marchés sont représentés sur le graphique.

Paramètres - taille moyenne des transactions en pips 650, temps minimum pour tenir une transaction 1 heure. SUIS-JE UN HOMME À PIPS ?

Pourquoi m'interdisez-vous d'analyser les ticks ? Est-ce que je vous interdis de travailler et d'analyser les informations entrantes comme VOUS l'entendez ? Vous pensez qu'en travaillant sur des ticks horaires VOUS vous débarrassez automatiquement du bruit - c'est une idée fausse, je suggère une option encore meilleure - travailler sur des chandeliers annuels, le système sera encore meilleur, encore plus robuste, encore plus silencieux, les fournisseurs de données n'ont aucun problème, ont donné 5 chiffres de OHLC et le "volume" une fois par an au trader et l'ont laissé trader. Tout le monde est content, le trader a un système robuste, il n'y a pas de bruit, le fournisseur n'a pas de problème de mise à l'échelle, etc. (il existe une telle méthode en science, la substitution de cas extrêmes pour comprendre si l'idée exprimée est absurde ou non... vous pouvez tirer vos propres conclusions).

................

Pourquoi réagissez-vous si violemment, je suis un peu pris au dépourvu ? Je soutenais votre point de vue. Je n'aime pas le mot "pipsqueak" - je le retire. Je suis désolé d'avoir provoqué chez vous une tempête d'émotions négatives.

Je comprends le mot "piper" dans un sens plus large. Un piper est un TS qui est sensible à la qualité des tics. C'est tout. Comme si vous n'aviez lu que la première ligne de mon message. Et plus loin dans mon post, j'ai proposé une solution de compromis.

PS J'utilise d'autres méthodes de filtrage du bruit que le passage à un TF plus élevé (en gras dans mon post). Mes recherches se concentrent sur M1.

 
joo писал(а) :

....

Si vous avez pris cette information personnellement, je m'en excuse. Oui, je réagis violemment, parce qu'au lieu de négocier et de gagner un morceau de pain pour ma famille, je m'assois et j'écris. J'ai plutôt écrit à l'intention de ceux qui pensent que si une personne analyse les ticks, c'est qu'elle est un joueur de pips. Ce n'est pas vrai. J'essaie de le montrer autant que possible.

Il n'y a pas de concept de tick qualitatif/non qualitatif. En conséquence, il n'y a pas d'agrégat de ticks qualitatifs ou non qualitatifs. Un tick est une réalité qui nous est donnée dans le terminal de trading. Il vient à nous, le conseiller expert est lancé et nous l'analysons. Quiconque est présent ici sera en mesure de dire : "Ce tick est-il de haute qualité ? Ce tick est-il de haute qualité et celui-ci ne l'est-il pas ?

Quelqu'un n'analyse que la fermeture des barres = un tick qui est arrivé à la fin de l'heure. En quoi ce tic-tac diffère-t-il en qualité du tic-tac survenu une seconde plus tôt ? Supposons que quelqu'un affirme qu'il est plus "cotonneux", qu'est-ce que c'est et avec quoi ? J'espère que vous voyez l'absurdité de telles affirmations.

Les fournisseurs de devis travaillent au niveau des tiques, oui ils les filtrent, ils ont plusieurs fournisseurs, ils nous donnent ce qu'ils considèrent comme nécessaire et rentable pour eux à un moment donné. Mais ils travaillent avec des ticks, pas avec des OHLC, mais avec des ticks. Celles qui sont ensuite pliées en barres. Les DCs sont-ils tous stupides et ne voient-ils pas qu'il est suicidaire de travailler au niveau des ticks ?

Sinon, sont-ils intelligents et compétents ? Pourquoi devrions-nous travailler avec la température moyenne de l'hôpital et non avec des tiques ? À partir des tiques, on peut faire tout ce que l'on veut, n'importe quel type de graphique. On ne peut pas faire cela avec les minutes, car il s'agit d'une forme de compression de données avec perte, une perte irréversible.

C'est comme un algorithme d'emballage, le même *.rar a compressé l'information, l'a transmise à un autre, qui l'a décompressée et l'a lue, disons qu'il s'agit d'un livre. Et maintenant, nous changeons l'algorithme, nous ne décompressons que la première(Open) et la dernière(Close) lettre de la phrase, eh bien, vous pouvez ajouter deux lettres supplémentaires, la plus épaisse (analogue de High) et la plus fine (analogue de Low). Qu'en pensez-vous ? Qui aimerait lire un tel livre ? C'est la même chose ici ((((