Souhaits pour MT5 - page 50

 

Yedelkin:

Eh bien, parce que le manuel dit que"l'événement NewTick est généré lorsqu'un nouveau tick est reçu sur le symbole auquel l'EA est attaché au graphique.", le fait de recevoir de nouveaux ticks devrait entraîner la génération d'événementsNewTick.

D'après la question, vous pensez qu'aucun événement NewTick n'est généré lorsque OnTick() est désactivé ? Mais je n'ai pas trouvé cette information dans le manuel de référence.

C'est ainsi que je vois les choses : s'il n'y a pas de gestionnaire, l'événement n'est pas mis en file d'attente. C'est logique, et je ne vois pas l'intérêt d'en parler dans l'aide.

Le conseiller expert génère un grand nombre d'événements (événements de transaction, à partir d'un graphique, etc.), il n'est pas nécessaire de les traiter tous.

Si tous les événements (y compris ceux qui ne sont pas gérés) étaient mis en file d'attente, certaines AE ne fonctionneraient pas - leur événement n'arriverait pas dans la file d'attente (par exemple, lorsqu'on ne travaille qu'avec le minuteur une fois par jour).

 
komposter:

C'est ainsi que je vois les choses - s'il n'y a pas de gestionnaire, l'événement ne sera pas mis en file d'attente. C'est logique et je ne vois pas l'intérêt d'en parler dans l'aide.

Le conseiller expert génère un grand nombre d'événements (événements de transaction, événements graphiques, etc.), il n'est pas nécessaire de les traiter tous.

Si tous les événements (y compris les événements non gérés) étaient placés dans la même file d'attente, certains conseillers experts ne pourraient pas travailler - leur événement n'arriverait pas dans la file d'attente (par exemple, lorsque seule la minuterie fonctionne une fois par jour).

A mon avis, les deux types d'événements (NewTick et Timer) doivent être traités séparément des autres.

Très probablement, nous devrions également séparer les événements de transaction (Trade) et les événements pour le traitement de la profondeur de marché (BookEvent).

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 

Lizar, intéressant,

Je me suis trompé sur les conclusions de l'opération de test. Apparemment, j'ai confondu les journaux de la démo avec ceux du testeur. La conception de

void OnChartEvent(const int id,           
                const long& lparam,   
                const double& dparam, 
                const string& sparam  
                )
  {
   if(id==CHARTEVENT_CUSTOM) TesterWithdrawal(1);
  }

ne fonctionne pas encore pour moi. Cela suggère que l'événement utilisateurCHARTEVENT_CUSTOM provenant des indicateurs sur les symboles aliens n'est pas reçu ou n'est pas traité.

 
komposter:

Je crois que c'est le cas - s'il n'y a pas de gestionnaire, l'événement n'est pas mis en file d'attente.

Il serait bien que cette version soit confirmée. Mais pour le testeur, les tics sont générés de toute façon. Même quand ils sont absolument inutiles.

komposter:

C'est logique et je ne vois pas de raison d'en parler dans l'aide.

C'est peut-être logique, mais pas pour tout le monde. Les développeurs ont à plusieurs reprises reproché aux utilisateurs de trop réfléchir. C'est pourquoi, dans mes conclusions, j'essaie de les fonder uniquement sur les informations disponibles à l'heure actuelle. Et actuellement, comme il a été dit plus tôt, le manuel dit que"l'événement NewTick est généré lorsqu'unnouveau tick est reçu pour le symbole, au graphique duquel le Conseiller Expert est attaché". Je n'ai pas trouvé de clause d'exception, j'en suis donc arrivé à la conclusion que le fait de recevoir de nouveaux ticks doit provoquer la génération d'événementsNewTick.

komposter:

Le conseiller expert génère un grand nombre d'événements (événements de transaction, du graphique, etc.), il n'est pas nécessaire de les traiter tous.

Pour s'assurer que l'événementNewTick n'est pas géré, je propose de faire une fonction switch. Le conseiller expert pourra décider lui-même s'il a besoin de la génération d'événementsNewTick par le terminal. Mon conseiller expert ne devrait fonctionner qu'avec des signaux "étrangers", mais il doit quand même être attaché à un graphique. Et il s'avère, par exemple, que pendant les tests/optimisations, un certain temps est passé à générer des ticks pour le symbole auquel le conseiller expert est attaché alors que le conseiller expert n'a pas du tout besoin de ces ticks (et des événements NewTick).
 
Yedelkin:

Mais pour le testeur, les tics sont générés de toute façon. Même quand ils sont complètement inutiles.

Qu'est-ce que ça veut dire ? Et il vérifiera le déclenchement des ordres (en attente, SL et TP) à quels prix ?

Dans le testeur, nous avons besoin de ticks pour tous les symboles sur lesquels l'EA opère. Bien entendu, plus le nombre d'instruments est important et plus la qualité de la modélisation est élevée, plus l'opération sera lente.


Yedelkin:

Et pour le moment, comme indiqué ci-dessus, le manuel dit que"l'événement NewTick est générélorsqu'un nouveau tick arrive pour le symbole auquel le conseiller expert est attaché". Je n'ai pas trouvé de clause d'exception à cette règle et j'en suis donc venu à la conclusion que l'arrivée de nouveaux ticks doit provoquer la génération d'événementsNewTick.

Oui, mais en suivant cette logique, tous les autres événements devraient être mis en file d'attente de la même manière. Ce serait trop.

 
komposter:

Comment cela ? Et il vérifiera le déclenchement des ordres (en attente, SL et TP) à quels prix ?

Eh bien, je le répète : l'EA ne fonctionne pas du tout avec le symbole qui lui est attaché. Et il n'est pas nécessaire de suivre le SL et le TP de ce symbole. C'est-à-dire que l'EA n'a pas besoin de ticks pour ce symbole. L'EA n'est attaché au symbole que lorsque cela est nécessaire, car il doit être attaché au moins quelque part pour être déclenché.

komposter:


Oui, mais en suivant cette logique, tous les autres événements doivent être mis en file d'attente exactement de la même manière. Ce serait trop.

Suivant cette logique, toutes les exceptions aux règles de génération de ticks et/ou d'événements de mise en file d'attente doivent être répertoriées dans le livre de référence. Jusqu'à présent, je n'ai trouvé qu'une seule exception, - par exemple, lorsque (1) il y a la fonction OnTick(), (2) cette fonction gère l'événement NewTick précédent. Cette exception ne convient pas à mon cas.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 

Yedelkin:

Suivant cette logique, toutes les exceptions aux règles de génération de ticks et/ou d'événements de mise en file d'attente doivent être listées dans le manuel. Jusqu'à présent, je n'ai trouvé qu'une seule exception - pour le cas où (1) il existe une fonction OnTick(), (2) cette fonction gère l'événement NewTick précédent. Cette exception ne correspond pas à mon cas.

Il serait logique de supposer que si OnTick() est absent, il n'y a pas de traitement des ticks pour ce graphique (par le symbole de ce graphique).

Que les événements soient mis en file d'attente ou non, et dans quelle file d'attente, c'est une autre question. L'essentiel est que les ticks ne sont pas traités par le graphique (conseiller expert sur celui-ci) !

Si nous tenons compte du fait que l'EA traite des ticks provenant d'autres graphiques, nous devrons envisager le traitement des ticks EXTERNES.

Ainsi, à mon avis, dans mon Expert Advisor devrait être créé son propre traitement des ticks, dans lequel comme paramètres d'entrée de passer : symbole, temps, prix (l'événement personnalisé permet théoriquement de faire tout cela).

Je pense que c'est le travail avec le potk d'événement personnalisé qui doit être étudié et optimisé en détail.

 
Interesting:

Si l'on tient compte du fait que l'EA traite des ticks provenant d'autres graphiques, alors il est nécessaire de travailler avec le traitement des ticks EXTERNES.

Ainsi, à mon avis, dans Expert Advisor devrait être créé son propre traitement des ticks, dans lequel comme paramètres d'entrée de passer : symbole, temps, prix (l'événement personnalisé permet théoriquement de faire tout cela).

À mon avis, le travail avec le potk d'événement personnalisé devrait être étudié et optimisé en détail.

Vous avez raison, c'est exactement ce que j'ai fait, en ne traitant que les tics externes. Pas de questions pour l'instant.

Intéressant:

Il serait logique de supposer que si OnTick() est absent, le traitement des ticks pour ce graphique (selon le symbole de ce graphique) n'est pas effectué.

Que les événements soient mis en file d'attente ou non, et dans quelle file d'attente , c'est une autre question. L'essentiel est que les ticks ne sont pas traités par le graphique (conseiller expert sur celui-ci) !

Je m'efforce donc de faire en sorte que la file d'attente générale ne soit pas encombrée d'événements provenant de ticks "internes". Je peux me tromper, bien sûr, mais il devrait être beaucoup plus facile de "désactiver" que de "garantir la génération opportune de ticks, la mise en file d'attente correcte des événements, la synchronisation avec le serveur, etc." ... Laissez le "défaut" pour la plupart des gens comme il est actuellement, et pour les gens extrêmes comme moi, ajoutez une fonction de désactivation/interrupteur. Avec des mises en garde dans le manuel s'il peut y avoir des effets secondaires.
 
Yedelkin:

C'est exact, c'est exactement la façon dont je m'y suis pris - en traitant exclusivement les tics externes. Il n'y a pas encore de questions ici.

C'est ce qui me préoccupe, pour m'assurer que la file d'attente générale n'est pas encombrée d'événements provenant de ticks "internes". Je peux me tromper, bien sûr, mais "désactiver" devrait être beaucoup plus facile que "assurer la génération opportune des ticks, la mise en file d'attente des événements, la synchronisation avec le serveur, etc." ... Laissez le "défaut" pour la plupart des gens comme il est actuellement, et pour les gens extrêmes comme moi, ajoutez une fonction de désactivation/interrupteur. Avec des mises en garde dans le manuel s'il peut y avoir des effets secondaires.

Quant à la facilité, c'est une question discutable, et la variante que vous proposez ne l'est pas moins (à mon avis).

La question concernant les ticks, et tous les événements en général, est de savoir ce qui arrive aux événements s'il n'y a pas de gestionnaire dans Expert Advisor.

Ma deuxième question à cet égard serait la suivante : tous les événements sont-ils traités dans la même file d'attente ou certains événements (OnTimer, OnTick et OnTrade) ont-ils leur propre file d'attente ?

 
Interesting:

Plus facile est discutable, et l'option que vous proposez ne l'est pas moins (à mon avis).

Je suis d'accord ; il est difficile de juger ce que l'on ne connaît pas. Il ne reste plus qu'à exprimer des souhaits :) Pour ce qui est de l'inutilité de ma version, je peux dire que l'idée principale ici est l'idée de "Je n'ai pas besoin de tics" ; la façon dont elle sera mise en œuvre dépend des développeurs.

Intéressant:

La question des ticks, et de tous les événements en général, est de savoir ce qui arrive aux événements s'il n'y a pas de gestionnaire dans Expert Advisor.

Exactement. Il n'y a qu'une seule solution pour moi - couper les extrémités (introduire la fonction d'interrupteur), et c'est la garantie de ne pas s'embêter avec la question :) Mais il ne faut pas oublier non plus le testeur qui perd son temps à créer (générer ?) des tics qui sont en principe inutiles. Seulement parce que le testeur est obligé de s'attacher à l'un des personnages.

Intéressant:

La deuxième question que je me pose dans ce contexte est la suivante : tous les événements sont-ils traités dans une seule file d'attente ou existe-t-il des files d'attente distinctes pour certains événements (OnTimer, OnTick et OnTrade) ?

Eh bien, il est explicitement indiqué dans le manuel que "tous les événements qui se produisent" sont placés dans une file d'attente commune et traités un par un dans l'ordre d'arrivée. La seule exception est spécifiée pour NewTick. Vous avez en quelque sorte prouvé que l'événement OnTimer n'est pas toujours traité, mais il peut aussi être supprimé à la suite d'un débordement de la file d'attente commune. Je n'ai pas du tout vu de mention de files d'attente séparées pour chaque événement.