Erreurs, bugs, questions - page 1593
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
Le script magique inverse le temps ;-)
Le smartphone reçoit un message à propos d'une revue de produit, mais pas sur la LC ou sur le haut du site mcl.
Ce n'est pas un bogue, mais je ne peux m'empêcher de le partager.
Rédaction
Le compilateur émet un avertissement
date invalide *****.mq4 115 46
Il vérifie également les dates valides des chaînes de caractères, je suis choqué). (30 jours de juin)
Apparemment, tout le monde s'en fiche, mais je vais écrire à nouveau.
La véritable tâche consiste à créer des tableaux d'une taille totale d'environ 100 % de la mémoire libre, à les remplir rapidement de chiffres, à effectuer des calculs et à les libérer.
J'essaie d'obtenir la taille de la mémoire libre avec
résultat : 23987 Mo, ma mémoire physique est de 12141 Mo, soit moitié moins.
Je comprends que ce chiffre est destiné aux Martiens, mais je continue à y croire et à écrire un script pour le tester :
J'obtiens un résultat logique - il est impossible d'allouer array3 car la mémoire est épuisée.
Puis je décommente la ligne, où je spécifie la quantité de mémoire disponible maintenant :
Après cela, le script s'exécute avec succès.
Je ne veux pas être une nuisance pour les développeurs, mais il est important de savoir combien de mémoire est disponible.
Veuillez faire en sorte qu'il soit possible de le connaître par le biais de TerminalInfoInteger.
Savez-vous que dans la plupart des cas, vous ne pourrez pas récupérer toute la mémoire disponible ?
La fragmentation de la mémoire existe. Vous avez décidé de diviser toute la mémoire en 5 fragments - et le système ne dispose pas d'un seul fragment ininterrompu de mémoire de la taille dont vous avez besoin.
Savez-vous que, dans la plupart des cas, vous ne pourrez pas récupérer toute la mémoire disponible ?
Une telle notion existe - la fragmentation de la mémoire. Vous avez décidé de diviser toute la mémoire en 5 fragments - mais le système ne dispose pas d'un seul fragment de mémoire continue de la taille dont vous avez besoin.
1. Pouvez-vous d'abord trouver ce que le paramètre TERMINAL_MEMORY_AVAILABLE signifie physiquement ?
2. En ce qui concerne les fragments, je pense que cela devrait être géré par le gestionnaire de mémoire de Windows, et non par le programmeur.
J'ai besoin de savoir combien je peux utiliser à un moment donné, par exemple, je veux utiliser 50% de la mémoire disponible.
Une autre tâche réelle est la demande de CopyTicks. Si vous demandez plus de ticks que la mémoire disponible, vous obtenez le message "out of memory".
Un autre vrai défi est la demande de CopyTicks. Si vous demandez plus de ticks que la mémoire disponible, vous obtenez le message "out of memory".
Vous pouvez également télécharger les données dans un fichier et y prélever les segments nécessaires.
C'est lent pour moi. Je veux tout faire par la mémoire. En fait, c'est ce qui est fait maintenant, mais je dois appeler GlobalMemoryStatusEx pour connaître la taille de la mémoire disponible.
Ce problème est particulièrement aigu lors de l'optimisation d'agents en nuage, dont vous ne connaissez pas les capacités dès le départ. Il est impossible de déterminer la quantité réelle de mémoire disponible, ni par MQL, ni par WinApi (car les appels de dll sont interdits).
On ne voit vraiment pas quel sens pratique a TERMINAL_MEMORY_AVAILABLE alors ? Pourquoi l'introduire si cela ne nous rend ni heureux ni malheureux ?
C'est lent pour moi. Je veux tout faire par la mémoire. En fait, c'est ce qui est fait maintenant, mais je dois appeler GlobalMemoryStatusEx pour connaître la taille disponible.