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
Un noyau en temps réel serait-il utile ?
Mettez plus de cœurs dans le système et ne faites pas de la situation une charge à 100 % d'un seul cœur.
Ne croyez pas aux contes de fées, les processeurs et le planificateur de threads ne fonctionnent pas comme vous l'imaginez.
Dans les dernières versions, la réception du flux tic n'a aucun effet, même en théorie. Pratiquement, SymbolInfoTick fonctionne déjà avec le cache, mais les particuliers continuent à chercher un chat noir.
Et ce n'est même pas 80% dans le test. Il compte 6 agents fonctionnant sur 4 cœurs, soit une garantie de 100%.
La seule question est de savoir comment le planificateur de tâches de son système gère la situation. Dans le même temps, certains affirment que c'est la mise en œuvre du terminal qui est en cause.
En d'autres termes, une situation est créée artificiellement lorsqu'un ordinateur est surchargé, lorsque littéralement tout ce qui s'y trouve ralentit, et ensuite certaines revendications sont faites sous la forme de "Oh, regardez, pourquoi le terminal traîne-t-il parfois".
Fermons les yeux sur le fait que, même dans de telles conditions, elle est "d'environ 0,01%" - au diable les détails ! Il suffit de dire que "personne ne se soucie de la température moyenne d'un hôpital", "les décalages posent des problèmes lors des transactions" et "nous voulons du HFT".
De plus, il est évident que nous voulons HFT dans 20 experts sur un vieux bureau de bureau ou une machine virtuelle morte.
PS PositionSelectByTicket() dans son implémentation a certainement accès à une ressource partagée avec synchronisation des accès. Et si vous ne sélectionnez pas la position sur chaque appel, vous lisez l'ancien prix. Il était plus facile de faire un "snapshot" via SymbolInfoDouble.
merci
J'ai obtenu ma question parce qu'il y a six mois, j'optimisais mon code et testais la vitesse des fonctions du système, et il y a six mois, SymbolInfoDouble était plus lent que SymbolInfoTick
Peut-être que c'est vrai ce que vous dites. J'ai cherché quelques articles sur le cache multi-core aujourd'hui (je ne me suis pas intéressé à cette information depuis longtemps),
voici un court articlehttps://i2hard.ru/publications/25666/
le fait est que les données ne peuvent être exécutées dans l'ALU qu'à partir du cache L1 qui est très petit et si vous chargez le processeur à pleine vitesse, alors vraiment - le test se transformera en un test du système d'exploitation + un test de la vitesse du cache du processeur (chargement, prédiction des données L1+L3) mais pas en un test des performances du code (application).
fxsaber, et si vous définissiez une priorité faible pour les agents dans le gestionnaire de tâches et une priorité élevée pour MT5 ?
Je n'arrive pas à trouver un utilitaire qui bloque l'allocation de tous les programmes/filières du système d'exploitation à un thread spécifique du CPU, sinon il serait possible de réserver un thread pour MT5 et de le bloquer automatiquement pour qu'il ne soit pas utilisé par d'autres programmes, ce qui pourrait en théorie réduire les décalages.
Dans les dernières versions, la réception du flux tic n'a aucun effet, même en théorie. En pratique, SymbolInfoTick fonctionne déjà avec le cache, mais certains citoyens continuent à chercher un chat noir.
Un citoyen particulier a faitdupliquer le code MQL de son pantalon large qui a montré que la béquille fonctionne plus rapidement que la fonction régulière dans les mêmes conditions.
Mais vous soutenez que votre fonction est bonne, elle a juste des limitations sur les conditions d'utilisation.
Et ce n'est même pas 80% dans le test. Il y a 6 agents fonctionnant sur 4 cœurs, c'est-à-dire 100% garantis.
La seule question est de savoir comment le planificateur de tâches de son système gère la situation. Dans le même temps, certains prétendent que c'est la mise en œuvre du terminal qui est en cause.
En d'autres termes, une situation est créée artificiellement lorsqu'un ordinateur est surchargé jusqu'à ses limites et que tout y est ralenti, puis certaines revendications sont formulées sous la forme de "Oh, regardez, pourquoi le terminal est parfois lent".
6/8 - rien ne traîne. Les navigateurs, la compilation, le débogage, etc. fonctionnent en parallèle sans aucun décalage.
Mais maintenant, j'ai fait exprès de tout éteindre, ne laissant que 4/8 agents. La situation n'a pas changé avec votre freinage de fonction.
Deplus, nous voulons bien sûr HFT en 20 experts sur un vieux bureau de bureau ou une machine virtuelle morte.
Une machine rapide a été utilisée. Et seulement 6 graphiques donnaient déjà le coup de frein.
PS PositionSelectByTicket() dans son implémentation a certainement accès à une ressource partagée avec synchronisation des accès. Et si vous ne sélectionnez pas la position sur chaque appel, vous lisez l'ancien prix. Il était plus facile de faire un "snapshot" via SymbolInfoDouble.
Je l'utilise aussi.
De quelle sorte de rapidité dans les performances de combat pouvons-nous parler quand il y a des problèmes dans le terminal.
Le conseiller expert analyse tous les instruments financiers et recherche un modèle donné.
Il trébuche sur un symbole et s'accroche ! !!
Code de l'aide, je ne mets que les étapes, l'instrument financier avec le problème et le timer :
Résultat des travaux :
Je n'ai jamais attendu que le script finisse de s'exécuter.
Tant que le terminal présente de tels bugs, il est hors de question d'exécuter une bataille ! !!
On s'attendait à ce que, lorsqu'un titre fait l'objet d'un examen du marché, au moins toutes ses propriétés et la date de début de l'historique soient affichées. S'il n'y a pas d'historique sur le serveur, alors
SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date)
Devrait retourner NULL instantanément, pourquoi le temps d'exécution est de 18446744073475877138 ?
Peut-être que je ne connais pas quelque chose, la fonction CopyXXX se bloque également pendant 16-29 secondes !!!
Il n'est pas normal qu'un courtier dispose de 3000 à 6000 instruments financiers.
Peut-être que je ne sais pas quoi, les fonctions CopyXXX se bloquent aussi pendant 16-29 secondes !!!
Il n'est pas normal qu'un courtier dispose de 3000 à 6000 instruments financiers.
Les bars sont diaboliques. Veuillez donc en parler dans un autre fil.
Les bars sont diaboliques. Veuillez donc en parler dans un autre fil.
Peut-être savez-vous comment sélectionner par programme un instrument financier et ne pas rester bloqué pendant des heures ?
Peut-être savez-vous comment sélectionner par programme un instrument financier et ne pas rester bloqué pendant des heures ?
Je n'ai jamais rencontré une telle tâche.
fxsaber, et si vous définissiez une priorité faible pour les agents dans le gestionnaire de tâches et une priorité élevée pour MT5 ?
Je n'arrive pas à trouver un utilitaire qui bloquerait l'allocation d'un thread CPU spécifique à tous les programmes/secteurs d'activité, sinon il serait possible de réserver un thread pour MT5 et de bloquer automatiquement son occupation par d'autres programmes, ce qui pourrait en théorie réduire les décalages.
Réglez tous les agents sur la priorité la plus basse.
Cela ne fonctionne pas.
ZZZ Le nombre d'EAs en cours d'exécution affecte le résultat.
Chers développeurs, pourriez-vous me dire comment est calculé MQL_MEMORY_USED ?
J'ai fait un calcul de la mémoire qu'occupent toutes les variables EA.
Il est inférieur à 10%. Si je comprends bien, MQL_MEMORY_USED contient le cache de l'historique et le cache de CopyTicks. Mais c'est toujours beaucoup moins.
Dans le même temps, le conseiller expert parallèle consomme plusieurs fois moins. Mais le principe est le même.
En général, qu'est-ce qui est inclus dans cette valeur ?
J'ai enregistré un modèle avec Expert Advisor et je l'ai appliqué au même graphique en provoquant un rechargement. Je l'ai vu comme ça.
L'utilisation de la mémoire a changé de près d'un ordre de grandeur. Il est difficile d'expliquer ce que cela signifie pour le moment.