Services, nouvelles fonctionnalités dans l'architecture de MT5, les funérailles de MT4 ne sont pas loin. - page 6

 
Petros Shatakhtsyan:


Oui, mais il faut aussi tenir compte du fait qu'il n'y a qu'une seule minuterie, et pas tellement de VC++, et que si vous avez beaucoup de vérifications de la minuterie, vous risquez de perdre beaucoup de ticks, et tout deviendra de la bouillie.

Ce n'est pas un problème. Avec une seule minuterie, vous effectuez un contrôle à chaque fois que la minuterie démarre et les autres X secondes après le dernier contrôle pertinent.
 
Alexey Kozitsyn:
Ce n'est pas un problème. C'est juste que dans une minuterie, vous faites un contrôle à chaque passage de la minuterie, et les autres X secondes après le dernier contrôle pertinent.


Je ne comprends pas. Savez-vous combien ça coûte de faire fonctionner une minuterie. Est-il possible de l'exécuter plus d'une fois ?

J'ai dit que chaque tic est important et vous parlez de secondes. Ils doivent tous fonctionner en parallèle, indépendamment les uns des autres.

 
Petros Shatakhtsyan:


Je ne le fais pas. Savez-vous combien ça coûte de faire fonctionner la minuterie. Est-il possible de l'exécuter plus d'une fois ?

J'ai dit que chaque tic est important et vous parlez de secondes.

Le fonctionnement de la minuterie coûte exactement ce qui est nécessaire pour la tâche, si elle ne peut pas être effectuée autrement. Il n'est pas nécessaire de l'exécuter plusieurs fois, il suffit de faire un contrôle 3 fois sur 3 et un autre 1 fois sur 3. J'espère que l'idée est claire maintenant.

 
Petros Shatakhtsyan:


Il serait inefficace que EA traite chaque tick, même si des millisecondes sont utilisées dans le timer.

Besoin d'un moyen plus facile d'obtenir tous les ticks directement à partir de l'aperçu du marché.

Un OpTisk n'est pas possible, parce qu'il ne fonctionne que lorsque le prochain tick arrive là où se trouve l'EA.


La variante est de l'exécuter sur le symbole le plus volatile. Bien sûr, il y aura une certaine perte... mais il y aura une perte dans la vitesse d'exécution de la logique de l'EA entière.
 
Maxim Dmitrievsky:

Eh bien, comme une option exécuté sur le symbole le plus volatile. bien sûr, il y aura une certaine perte ... mais il y aura aussi une perte dans la vitesse d'exécution de tous les EA de la logique.


C'est pourquoi je vous ai dit de créer un autre OnTick qui recevra les ticks de tous les symboles qui sont actuellement disponibles dans l'aperçu du marché. Une variante simple et rapide.

Et pas seulement ça. Vous devez également disposer d'une fonction qui renvoie l'effet de levier réel de chaque symbole.

 
Petros Shatakhtsyan:


Et ainsi dit de faire un autre OnTick, qui a obtenu les ticks de tous les symboles actuellement disponibles dans l'aperçu du marché. Une option simple et rapide.

En fait, OnTick() saute les ticks. Même OnCalculate() saute des ticks. De plus, les tiques peuvent venir en groupe. Le chronomètre n'est donc pas quelque chose de très coûteux, d'autant plus lorsqu'on analyse de nombreux caractères. L'essentiel est que le calcul soit rentable.
 
Alexey Kozitsyn:
En fait, OnTick() saute les ticks. Même OnCalculate() saute des ticks. En outre, les tiques peuvent se déplacer en groupe. Le chronomètre n'est donc pas quelque chose de très coûteux, d'autant plus lorsqu'on analyse de nombreux caractères. L'essentiel est de faire un calcul économique.

Eh bien, vous pouvez aussi le faire par le biais d'un minuteur. La bonne chose est que nous avons EventSetMillisecondTimer mais il est mauvais qu'il lance également OnTimer. Nous aurions dû ajouter OnMillisecondTimer.
 
Petros Shatakhtsyan:

Eh bien, vous pouvez le faire avec un minuteur. C'est bien que EventSetMillisecondTimer existe, mais c'est mal qu'il lance aussi OnTimer. Vous auriez dû ajouter OnMillisecondTimer.

Qu'est-ce qui vous empêche de le faire de cette façon ?

void OnTimer()
{
if( condition1 )
   {...копируем тики...}
if( condition2 )
   {...иной расчет, который не нужно запускать так часто, как condition1...}
}
Et dans l'ensemble, il serait bon d'ajouter le champ de symbole comme gestionnaire OnBookEvent().
 
Alexey Kozitsyn:
En fait, OnTick() saute les ticks. Même OnCalculate() saute des ticks. En outre, les tiques peuvent se déplacer en groupe. Le chronomètre n'est donc pas quelque chose de très coûteux, d'autant plus lorsqu'on analyse de nombreux caractères. L'essentiel est de faire un calcul économique.

Le chronomètre sautera aussi les ticks, si vous devez les compter jusqu'au tic, vous devez les compter par le volume du tic là... mais cela ne vous sauvera pas non plus... les ticks peuvent venir très vite et par lots, oui
 
Maxim Dmitrievsky:

le chronomètre va aussi manquer, si vous avez besoin d'aller directement à la tique vous devez les suivre, par le volume de la tique là... mais il ne sauvera pas non plus... les tiques peuvent venir très vite et beaucoup, oui
Rien ne peut sauver cela. Vous ne pouvez pas traiter absolument tous les tics.