Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 658

 
Bonjour ! !!

J'ai remarqué que j'ai du mal à passer les commandes de j=0 à j=OrdersTotal() - le compte continue de s'éteindre (voir pr).
Et il ne peut pas commencer à 0 et passer par quelques dizaines.
Il est très probable qu'il reprenne à chaque nouveau tic, mais on ne sait pas pourquoi il ne commence pas à 0, mais passe par plusieurs nombres et comment le gérer.

Quelqu'un a-t-il rencontré ce problème ? Quelle est la solution à cette situation ?
Dossiers :
test.jpg  82 kb
 
Algotrader18:
Bonjour ! !!

J'ai remarqué que je ne suis pas capable de parcourir les commandes de j=0 à j=OrdersTotal() - le compte continue à s'égarer (voir la précédente).
Et il ne peut pas commencer à 0 et passer par quelques dizaines.
Il est très probable qu'il reprenne à chaque nouveau tic, mais on ne sait pas pourquoi il ne commence pas à 0, mais passe par plusieurs nombres et comment le gérer.

Quelqu'un a-t-il rencontré ce problème ? Quelle est la solution à cette situation ?

Les ordres doivent être énumérés dans une boucle, pas à chaque tick... Pour être plus précis, un tick est arrivé et tous vos ordres ont été comptés dans la boucle : for(j=0;j<OrderTotal;j++)

OrdersTotal() montre combien d'ordres sont ouverts (y compris les ordres en attente, y compris les ordres sur tous les symboles...). au total... Voici le nombre d'ordres ouverts dans le terminal - voici le nombre de )))).

La numérotation des commandes se fait comme dans les tableaux, de 0 à OrdersTotal()-1 - il s'agit de la dernière commande, et vous avez probablement un numéro de ticket inexistant [OrdersTotal()] ou une autre information difficile à deviner.

 

Bonjour !


Pouvez-vous me dire combien de caractères peut contenir un commentaire sur une commande?

 
Algotrader18:
Bonjour ! !!

J'ai remarqué que j'ai du mal à passer les commandes de j=0 à j=OrdersTotal() - le compte continue de s'éteindre (voir pr).
Et il ne peut pas commencer à 0 et passer par quelques dizaines.
Il est très probable qu'il reprenne à chaque nouveau tic, mais on ne sait pas pourquoi il ne commence pas à 0, mais passe par plusieurs nombres et comment le gérer.

Quelqu'un a-t-il rencontré ce problème ? Quel est le moyen de sortir de cette situation ?
Et pourquoi avons-nous besoin d'informations sur tous les ordres à chaque tick? Ne serait-il pas préférable d'introduire des restrictions sur les ordres de visualisation, par exemple toutes les nouvelles minutes, cinq minutes, ..., heure ?
 

Sur certains VPS, la police de l'interface EA est beaucoup plus grande que celle programmée dans le code MKL.

Comment la changer, qui sait ?


 

Question : OnTimer() réinitialise les calculs quand un tick arrive ?

Dans ma fonction OnTick(), j'ai de très gros calculs et aucune donnée n'est produite, seulement après un certain temps, parfois presque immédiatement, parfois quelques minutes sont nécessaires. Pour autant que je sache, cela est dû au fait que si, pendant le calcul, un tick est arrivé, tous les calculs sont arrêtés et recommencent.

Mais je n'ai pas besoin de les faire souvent, alors je voudrais les mettre dans un minuteur ?

 
Roman Sharanov:

Question : OnTimer() réinitialise les calculs quand un tick arrive ?

Dans ma fonction OnTick(), j'ai de très gros calculs et aucune donnée n'est produite, seulement après un certain temps, parfois presque immédiatement, parfois quelques minutes sont nécessaires. Pour autant que je sache, cela est dû au fait que si, pendant le calcul, un tick est arrivé, tous les calculs sont arrêtés et recommencent.

Mais je n'ai pas besoin de les faire souvent, alors je voudrais les mettre dans un minuteur ?

Comment le savez-vous ? Ce n'est pas le cas.

Tant que tous les calculs qui ont commencé avec l'arrivée du tick ne sont pas terminés, tous les ticks suivants sont ignorés.

 
Artyom Trishkin:

Comment le savez-vous ? Ce n'est pas le cas.

Jusqu'à ce que tous les calculs commencés au moment du tic soient terminés, tous les tics suivants sont ignorés.

Hmm, j'ai vu quelque part que c'est l'inverse, donc je me trompe.
Je me demande pourquoi, avec les mêmes calculs, lorsque je place un EA sur un graphique, les résultats sont parfois immédiats et parfois je dois les attendre longtemps ?

C'est là que les tics entrent en jeu.

 
Roman Sharanov:

Hm, j'ai vu quelque part que c'est l'inverse, ça veut dire que je me trompe.
Je me demande pourquoi, avec les mêmes calculs, lorsque je place l'EA sur le graphique, les résultats sont parfois immédiats, et parfois je dois les attendre longtemps ?

Et les tics arrivent.

Personne ne peut le dire sans le code.

 
Artyom Trishkin:

Personne ne peut vous le dire sans le code.

J'ai aussi trouvé un sérieux inconvénient, il y a trop d'appels à CopyClose().

Pouvez-vous me dire comment copier les cotations d'un tableau de paires de devises dans une boucle ?

Cela semble être un tableau double, mais MQL ne le supporte pas, comme %.

...
double all_data[N][];
for(int i = 0; i < N; n++){
        CopyClose(Pairs[i], PERIOD_CURRENT, 1, Count, all_data[i]);
}
Raison: