Une minute et demie de différence entre l'heure locale et l'heure du tic-tac frais. Ce qu'il faut faire. - page 2
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Il y a un code source avec des commentaires.
Trop paresseux pour le regarder ? Ou y a-t-il quelque chose que vous ne comprenez pas ?
Je l'ai fait. J'ai eu l'idée sans le code. Je ne comprends pas pourquoi vous me conseillez :
Vous devez ajouter les instruments les plus liquides à Market Watch.
Ensuite, ajoutez des couches de ces instruments.
Et, quand OnBookEvent() se déclenche, copier 1 tick (dernier) il y aura un temps et prendre immédiatement le temps local et comparer.
En quoi votre méthode est-elle meilleure ?
J'ai jeté un coup d'oeil. J'ai eu l'idée sans le code. Je ne comprends pas pourquoi vous me conseillez :
Pourquoi votre méthode est-elle meilleure ?
Parce que c'est la bonne !
J'ai fait une erreur, pas l'heure locale, mais l'heure du serveur.
1. les ticks arrivent au terminal par paquets.
2. Chaque paquet suivant peut contenir des ticks qui n'ont pas été "empilés" dans le paquet précédent, mais qui ont la même heure que le précédent.
3) OnBookEvent() est déclenché à l'arrivée de tout tick (changement de prix, volume), c'est-à-dire à chaque tick. (vous déclenchez une minuterie - déjà mauvais).
4. Vous utilisez du temps informatique local, qui n'est pas du tout nécessaire !
Voici en fait tout ce dont vous avez besoin pour trader (vérifiez les horaires des sessions de trading)
Ajouté par
Si vous avez besoin d'une précision à la milliseconde près, alors ceci
Ajouté
Mais tout cela ne donnera pas le résultat escompté (les limites du temps de négociation) car
il peut n'y avoir aucun tic dans une session de négociation, et le temps ne s'arrête pas.
Supposons que quelqu'un ait retiré son ordre en attente, que le ticker ait changé,
il y a un signal mais il y a une corrélation "ancienne" (le temps n'est pas le temps actuel).
Le terminal ne diffuse pas l'heure exacte du serveur.
Vous ne me comprenez pas. Commençons par le début.
1) Dans votre programme, vous appelez TimeCurrent() et obtenez l'heure d'arrivée de la dernière cotation pour l'un des symboles sélectionnés dans Market Watch.
Qu'il soit 18:00:00.
2) Avec la commande suivante, vous obtenez l'heure du dernier tick par SBER.
Laisse tomber 17:58:00
3) Un peu de temps passe et vous demandez à nouveau l'heure du dernier tick par SBER.
Que ce soit 17:59:00
Notez la question : Pensez-vous qu'il est acceptable à 18:00:00 par TimeCurrent() de ne pas connaître le tick de 17:59:00 ?
Vous ne me comprenez pas. Commençons par le début.
1) Dans votre programme, vous appelez TimeCurrent() et obtenez l'heure d'arrivée de la dernière cotation pour l'un des symboles sélectionnés dans Market Watch.
Qu'il soit 18:00:00.
2) Avec la commande suivante, vous obtenez l'heure du dernier tick SBER.
Laisse tomber 17:58:00
3) Un peu de temps passe et vous demandez à nouveau l'heure du dernier tick par SBER.
Que ce soit 17:59:00
Question d'attention : Pensez-vous qu'il est acceptable d'ignorer à 18:00:00 par TimeCurrent() un tick avec l'heure 17:59:00 ?
Dans le code que j'ai cité, vous pouvez tenir compte de tous les ticks (sans problème).
Le dernier code n'utilise pas TineCurrent() maisTimeTradeServer() - cette fois-ci, il n'est que nécessaire
pour vérifier la tique avec une précision d'un jour et c'est tout !
Commençons par le début.
En général, que voulez-vous faire, pour savoir ?
Pourquoi avez-vous commencé à comparer l'heure du tic-tac avec l'heure locale ?
Quel est le but initial ?
Je vais maintenant vous montrer comment ce problème se présente en pratique. J'ai complètement remanié le conseiller expert. J'ai fait en sorte qu'il soit possible d'attraper les nouveaux ticks dans OnTimer ainsi que dans OnBookEvent.
Il y a 45 symboles dans Market Watch. La plupart d'entre eux ne sont pas liquides.
Voici le résultat de la capture de nouveaux ticks dans OnBookEvent :
C'est-à-dire qu'un nouveau tick a été pris à 18:50 sur TimeCurrent pour le symboleSNGR-3.19 avec un temps de 18:41.
Ensuite, il y a les mesures du temps de l'ordinateur local au moment de :
1) obtenir un nouveau tick, c'est-à-dire au moment du dernier appel de CopyTick (ou SymbolInfo selon les paramètres).
2) Le moment du dernier appel.
Donc, dans ce cas, le problème est survenu parce que la fonction get new n'a tout simplement pas été appelée pendant 10 minutes..... C'est parce que l'événement OnBookEvent pour leSNGR-3.19 n'a pas été généré pendant 10 minutes.
Peut-être que le terminal l'a placé dans la file d'attente des événements et qu'il a disparu de cette file d'attente. Il n'y a pas de telles erreurs avec OnTimer. Oui, il peut y avoir un tic avec 20 secondes de retard.
Quel est votre objectif initial ?
Pourquoi avez-vous besoin de comparer les heures de départ avec l'heure locale?
Quel est votre objectif initial ?
Pourquoi avez-vous besoin de comparer l'heure du tic-tac avec l'heure locale ?
Je veux connaître le délai maximum entre le moment où le tick se produit sur le serveur et celui où il arrive dans le terminal. Et je veux savoir comment minimiser ce temps.
Ces connaissances peuvent être utilisées pour écrire mon propre testeur. Vous pouvez même demander aux développeurs d'allonger le délai.
TimeCurrent() - le temps du dernier tic-tac d'un symbole sera inférieur au temps de retard, il peut donc être utilisé. L'utilisation de l'heure locale dans la première version n'était pas une bonne idée.
Je veux connaître le délai maximum entre le moment où un tick se produit sur le serveur et celui où il atteint le terminal. Et comment minimiser ce temps.
Ces connaissances pourront être utilisées lors de l'écriture de mon propre testeur. Et peut-être pourrai-je même dérouter les développeurs avec des délais plus longs.
Je vois. Continuez... Sans moi.
Et pour le reste du forum
Question d'attention : Pensez-vous qu'il est normal d'ignorer un tic à 18:00:00 par TimeCurrent() avec une heure de 17:59:00 ?
Je pense que la question est discutable. Nous voulons que la séquence de tics réponde au moins aux critères suivants :
1. il doit être séquentiel, c'est-à-dire que l'heure de chaque tick suivant >= l'heure du tick précédent ;
2. l'actualité. C'est-à-dire que l'heure du dernier tic-tac entrant est aussi proche que possible de l'heure actuelle ;
Il semble que le problème se situe au niveau du deuxième point.
L'argumentation du point 2 est la suivante : je veux que le temps entre la génération du tick sur le serveur et sa réception (lag) soit minimal, afin que je puisse le traiter plus rapidement que les autres et prendre une décision de trading. Mais si le décalage est le même pour tous les enchérisseurs, il n'y a pas de problème (d'après ce que je comprends). C'est-à-dire que le serveur du courtier a le problème, mais tout le monde est sur un pied d'égalité. Si quelqu'un a obtenu l'information sur le tic-tac à 17:59:01, et que je ne l'ai pas eu même à 18:00 - c'est le gros problème.
Et voici la question. Quel est le problème (et y en a-t-il un) ? Dans le serveur du courtier, qui ne donne pas le tick (à tout le monde) pendant un long moment, ou dans MT5, qui ne le reçoit pas pendant un long moment.