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
J'ai vu plus d'une fois des situations où le terminal charge le CPU à 100 % au point qu'il ne réagit plus à rien.
Puis j'ai regardé les journaux et j'ai vu qu'il y avait des sauts de ticks sauvages dans OnTick. Cependant, si j'écris correctement un EA, cette situation désastreuse n'affectera pas les résultats du trading. Je l'ai analysé précisément, tout est clair.
Je me demande dans quelle mesure les mécanismes permettant de faire face aux retards dans les produits de marché sont répandus. Je n'ai jamais vu une seule fois une mention de la puissance de la machine pour fonctionner. Le ping minimum est un oui.
Où les lanciez vous ?
Si vous êtes sur un VPS pour 2-5 dollars, alors des retards de dizaines et de centaines de millisecondes sont facilement pris en compte dans n'importe quelle fonction WinAPI à peine sérieuse. Tout ralentit à partir du niveau de l'hyperviseur, transformant une machine virtuelle en un diaporama.
Expliqué ci-dessus.
Ce n'est pas GetMicrosecondsCount qui ralentit, mais le système d'exploitation qui quantifie les ressources CPU pour n'importe quel thread dans votre VPS étranglé. Pour toute fonction, toute action, tout programme au sein de votre UPU.
Eh bien, aucun shell CPU ne peut découper et allouer les ressources de manière équitable lorsqu'il dispose de 20 (c'est encore respectable) systèmes d'exploitation avec 1500 threads d'exécution par copie. Prenez 8 à 16 cœurs et répartissez-les sur 20 * 1 500 = 30 000 (trente mille pistes physiques).
Dans mon cas (boîte virtuelle avec vin7 + 2 cœurs + 16 GB de RAM sur mon propre matériel sans rien d'autre), d'où viennent les 2-3 µs périodiques ?
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
MT5 et vitesse en combat
Andrey Khatimlianskii, 2020.10.05 10:19
Pas vraiment une UPU, mais une machine virtuelle sur du matériel loué :
Dans mon cas (boîte virtuelle avec win7 + 2 cœurs + 16GB de RAM sur son propre matériel sans rien d'autre qui tourne), d'où vient la périodicité de 2-3 µs ?
C'est le prix de la double virtualisation.
D'autant plus que VirtualBox n'est pas un hyperviseur complet de type Hyper-V, mais vit au-dessus de votre système d'exploitation de bureau actuel (Windows 7 aussi ?) qui a une coquille de CPU conçue pour un cas d'utilisation différent.
Vous avez donc : Windows 7/10 -> VirtualBox -> Windows 7. Essentiellement, deux niveaux de virtualisation, le premier ignorant les aspirations de VirtualBox, le considérant comme un programme ordinaire. L'allocation des ressources du CPU (le threadsheduler) est clairement foutue.
Il devrait l'être : Hyper-V 2016/2019 -> Windows 2016/2019
Ce n'est pas GetMicrosecondsCount qui ralentit, c'est l'OS qui quantifie les ressources CPU pour n'importe quel thread dans votre VPS étranglé. Pour toute fonction, toute action, tout programme au sein de votre UPU.
Je pense qu'un argument comme celui-ci vous fera réfléchir. Conseiller.
C'est loin de tout ralentir. C'est pourquoi j'ai pu changer pour winmm::timeBeginPeriod(1)+winmm::timeGetTime() de manière tout à fait inoffensive, obtenant une vitesse comme GetTickCount, mais sans la redoutable limite de 16 ms. Cependant, les producteurs de marché ne sont pas autorisés à le faire, car il s'agit d'une DLL. Il est peu probable que vous fassiez une version régulière à la milliseconde.
La fonction MQL5 permettant de réduire toutes les fenêtres et l'application elle-même est une excellente idée. Nous allons travailler sur ce point.
Voici une autre chose.
terminal sur un VPS, elle sera fortement opposée à ce que tout soit brusquement basculé. Il peut et doit minimiser lui-même les fenêtres s'il quitte la session RDP.
Voici un exemple de ce que je voulais dire.
Les deux serveurs sont des courtiers différents, se trouvent dans la même zone, voire au même endroit.
La carte de service suggère que l'AMP soit situé au Royaume-Uni.
Et pour Juste pour une raison quelconque offre dans NL.
Pourquoi ? S'il y a un vpc plus proche.
Je pense que vous trouverez que c'est un argument qui vous fera réfléchir. Conseiller.
C'est loin de ralentir les choses. C'est pourquoi j'ai pu changer pour winmm::timeBeginPeriod(1)+winmm::timeGetTime() de manière tout à fait inoffensive, obtenant une vitesse comme GetTickCount, mais sans la redoutable limite de 16ms. Cependant, les producteurs de marché ne sont pas autorisés à le faire, car il s'agit d'une DLL. Il est peu probable que vous fassiez une version régulière en millisecondes.
Eh bien, vous êtes un maître des tests de stress de course sans corrélation ni contrôle de vraisemblance.
Bien entendu, le comptage à la microseconde nécessite des ressources pour pouvoir mesurer des intervalles 1000 fois plus petits qu'une milliseconde.
Si vous avez occasionnellement besoin de mesurer des intervalles avec une grande précision, utilisez les microsecondes. Et cela vous coûtera 0 microseconde.
Si vous êtes configuré pour appeler des millions de fois l'auto-mesure, vous êtes probablement en train de vous faire des illusions.
Sur un VPS étouffé, surclocker le timer du système via timeBeginPeriod est risqué. Vous ne feriez qu'augmenter la charge du processeur :
Sinon, le système d'exploitation aurait dû faire des GetTickCount/GetTickCount64 précis depuis longtemps et se réjouir de la précision gratuite. Mais non, vous devrez payer pour la précision de cette minuterie.
Voici un exemple de ce que je voulais dire.
Les deux serveurs sont des courtiers différents, se trouvent dans la même zone, voire au même endroit.
La carte de service suggère que l'AMP soit situé au Royaume-Uni.
Et pour Juste pour une raison quelconque offre dans NL.
Pourquoi ? S'il y a un RTCP plus proche.
Nous connaissons les géo-points des serveurs, et ici les positions des serveurs de courtage sont construites à partir des bases GeoIP.
Et il arrive souvent que les informations ne correspondent pas à la réalité. Par conséquent, nous ne devons jamais supposer que la position du courtier est exacte.
Nous examinerons ce point plus en détail demain, car nous devons tout revérifier et re-scanner manuellement pour répondre à la question.
C'est le prix de la double virtualisation.
D'autant plus que VirtualBox n'est pas un hyperviseur complet de type Hyper-V, mais vit au-dessus de votre système d'exploitation de bureau actuel (Windows 7 également ?) qui a un shell CPU adapté à un cas d'utilisation différent.
Vous avez donc : Windows 7/10 -> VirtualBox -> Windows 7. Essentiellement, deux niveaux de virtualisation, le premier ignorant les aspirations de VirtualBox, le considérant comme un programme ordinaire. L'allocation des ressources du processeur (le threadsheduler) est clairement détraquée.
Il devrait l'être : Hyper-V 2016/2019 -> Windows 2016/2019
Non, j'ai des virtualisateurs qui tournent sous CentOS. Mais je ne suis pas compétent pour poursuivre ce dialogue.