La table de tous les métiers. Accès via MQL5 - page 5

 
prostotrader:

Voici dans mon code la prévention de la duplication :

Alors :) il y a une perte de ticks dans votre code.
 
Yury Kulikov:
Alors :) il y a une perte de ticks dans votre code.

:) mais pour une raison quelconque, ils sont redondants :)

Merci beaucoup Yuri, je vais m'en occuper maintenant.

 

En effet, en passant en mode COPY_TICKS_TRADE - l'erreur de mélange de ticks a disparu, mais en même temps en mode COPY_TICKS_TRADE les drapeaux ne peuvent pas être reçus

  • TICK_FLAG_BUY - un tick s'est produit à la suite d'une transaction d' achat.
  • TICK_FLAG_SELL - le tick s'est produit à la suite d'une transaction de vente.

 
Karputov Vladimir:

En effet, en passant en mode COPY_TICKS_TRADE - l'erreur de mélange de ticks a disparu, mais en même temps en mode COPY_TICKS_TRADE les drapeaux ne peuvent pas être reçus

  • TICK_FLAG_BUY - un tick s'est produit à la suite d'une transaction d' achat.
  • TICK_FLAG_SELL - le tick s'est produit à la suite d'une transaction de vente.

Les drapeaux sont le résultat d'un échange réel (je les teste actuellement).
 
Yury Kulikov:
Eh bien, alors :) il y a une perte de ticks dans votre code.

Yuri, essaie mon indicateur (regarde bien)

J'attends que les tics apparaissent, plutôt que de les observer dans l'historique.

Je copie à chaque fois, avant que de nouveaux tics n'apparaissent.

int copied=CopyTicks(Symbol(),ticks,COPY_TICKS_TRADE,start_time,0);

"0" est le nombre de ticks qui sont réapparus.

Si copié = 0, il n'y a pas de nouveaux ticks.

Si nous supprimons ce "soutien".

if(start_time==ulong(ticks[copied-1].time_msc)) return;

alors il y aura certainement une duplication.

La tâche n'est pas de visualiser l'historique des ticks, mais d'afficher le flux de ticks en temps réel.

 
prostotrader:
Sur le réel, les drapeaux arrivent (je suis en train de tester sur le réel en ce moment).

Oui, c'est vrai. Je me suis embrouillé avecCOPY_TICKS_INFO.

Ajouté :

Néanmoins, en mode COPY_TICKS_ALL les ticks, certains, arrivent dans un ordre désordonné.

 
prostotrader:

Yuri, essaie mon indicateur (regarde attentivement)

Votre code a trop de lettres :)

L'algorithme est simple. Dans OnCalculate() regardez le volume actuel, s'il a changé, alors chargez les derniers ticks, rappelez-vous combien de ticks il y avait au dernier moment (la même valeur time_msc), de sorte que le prochain appel CopyTicks() pour couper ces ticks du calcul.

 
Yury Kulikov:

Il y a trop de lettres dans votre code :)

L'algorithme est simple. Dans OnCalculate() regardez le volume réel, s'il a changé, alors chargez les derniers ticks, rappelez-vous combien de ticks étaient au dernier moment (la même valeur time_msc), ainsi le prochain appel CopyTicks() exclura ces ticks du calcul.

Merci, je pense savoir comment résoudre le problème...
 
Yury Kulikov:

Il y a trop de lettres dans votre code :)

L'algorithme est simple. Dans OnCalculate () on regarde le volume actuel, s'il a changé, on télécharge les derniers ticks, et on se rappelle combien de ticks il y avait au dernier moment (la même valeur time_msc), donc l'appel suivant CopyTicks () exclut ces ticks du calcul.

Yuri, merci encore beaucoup pour ces conseils compétents.

J'ai tout fait et cela fonctionne parfaitement, mais pendant plus de 3 heures il n'y a aucune situation qui

Je l'ai décrit :)

 

Eh bien, enfin ! Ça a marché !

Tout est correct et les ticks ne sont plus dupliqués ou perdus.

La démo est dans le fichier ZIP, et si vous voulez la vérifier vous-même, la version de débogage est dans le sous-sol.

Dossiers :