Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1005
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
Voici comment cela fonctionne.
Voici comment cela fonctionne.
Êtes-vous sûr d'avoir tout lu dans la documentation ? Tu as même lu ça :
Note
Cette fonction ne peut être appliquée qu'aux tableaux dynamiques. Vous devez garder à l'esprit que les tableaux dynamiques affectés comme tampons d'indicateurs par la fonction SetIndexBuffer() ne peuvent pas être redimensionnés. Toutes les opérations liées au redimensionnement des tampons d'indicateurs sont effectuées par le sous-système exécutif du terminal.
Le nombre total d'éléments d'un tableau ne peut pas dépasser 2147483647.
Si la mémoire est fréquemment allouée, il est recommandé d'utiliser le troisième paramètre spécifiant la réserve pour réduire la quantité d'allocation de mémoire physique. Tous les appels ultérieurs à la fonction ArrayResize n'entraîneront pas de réaffectation de la mémoire physique, mais seulement un redimensionnement de la première dimension du tableau dans la mémoire réservée. N'oubliez pas que le troisième paramètre ne sera utilisé que lorsque l'allocation de la mémoire physique est en cours, par exemple :
ArrayResize(arr,1000,1000);
for(int i=1;i<3000;i++)
ArrayResize(arr,i,1000) ;
Dans ce cas, il y aura 2 allocations de mémoire, une fois avant d'entrer dans la boucle pour 3000 itérations, avec la dimension du tableau fixée à 1000 et la seconde à i égal à 2000. Si le troisième paramètre est omis, il y aura 2 000 réallocations de mémoire physique, ce qui ralentira l'exécution du programme.
Qu'est-ce qui n'est pas clair ?
Êtes-vous sûr d'avoir tout lu dans la documentation ? Même lire ceci :
Qu'est-ce qui n'est pas clair ?
Eh bien, c'est le point qu'il n'y a pas d'images ou d'exemples, et vous pouvez deviner ce que ces redistributions signifient, et comment l'utiliser à 100% selon l'idée des développeurs si ce n'est pas expliqué. A en juger par ces 3 lignes qui sont écrites ici, je pense que ArrayResize(arr,1000,1000) ; crée un tableau de 2 mille éléments. Mais ce n'est pas clair ici. Si je fais ArrayResize(arr,1,1000) ; par exemple, 1000 restera inactif jusqu'à ce que le tableau atteigne 1000.
Ou le programme utilisera ce fragment avant l'overclocking, en incrémentant simplement le compteur. Ou bien ce 1000 est juste là pour récupérer rapidement la mémoire du CPU, si c'est le cas, la mémoire de sauvegarde devra aussi être transférée, alors il est plus facile de travailler sans sauvegarde. En général, pas de code, pas d'informations, pas d'images, aucune idée de comment ça marche.
Cela vous arrive-t-il que votre disque dur démarre à 100% une sorte de classe système (sur 10) ? Cela arrive aussi avec le terminal alps... Habituellement, les terminaux chargent le disque pendant les tests, mais ici c'est juste kabbda... Pas long, 3-5 secondes, mais concret
se produit, mais après le redémarrage du PC
10 à 15 minutes après le redémarrage du PC, Windows Defender "mâche le disque" et des statistiques sur l'utilisation du PC sont collectées
solution - suspendre le PC, mon PC peut tenir un mois sans redémarrer, j'appuie sur le bouton de veille du clavier au lieu d'éteindre le PC - quelques fois, l'électricité a été coupée, mais Win10 a pu démarrer sans problème si le PC était en veille.
Le problème, c'est qu'il n'y a pas d'images ou d'exemples, et que vous pouvez deviner ce que ces redistributions signifient, et comment les utiliser à 100% selon l'idée des développeurs si ce n'est pas expliqué. A en juger par ces 3 lignes qui sont écrites ici, je pense que ArrayResize(arr,1000,1000) ; crée un tableau de 2 mille éléments. Mais ce n'est pas clair ici. Si je fais ArrayResize(arr,1,1000) ; par exemple, 1000 restera inactif jusqu'à ce que le tableau atteigne 1000.
Ou le programme utilisera ce fragment avant l'overclocking, en incrémentant simplement le compteur. En général, je dis que ce n'est pas clair et c'est tout. Ou bien ce 1000 c'est juste stupide de traîner pour récupérer rapidement la mémoire du processeur, si c'est le cas alors tout de même et la mémoire de secours, aussi, devra être transférée alors il est plus facile de travailler sans la réserve. En général, pas de code, pas d'informations, pas d'images, aucune idée de comment ça marche.
Vous devez lire non seulement les trois lignes de code, mais aussi le texte qui explique tout très clairement.
La mémoire réservée et la taille du tableau sont des notions différentes. Si vous surchargez la taille du tableau avec ArrayResize(arr,1000,1000) ; le dernier élément du tableau sera 999 et pas plus. Mais si vous devez augmenter la taille du tableau, il n'y aura pas de réallocation de mémoire. Si vous n'avez pas besoin d'une telle réserve de taille, réduisez-la ou ne la réservez pas du tout.
Bonjour !
Je veux mettre un paramètre sous forme de tableau dans une fonction. Je n'arrive pas à trouver comment le faire correctement. Pouvez-vous corriger l'exemple ?
Bonjour !
Je veux mettre un paramètre sous forme de tableau dans une fonction. Je n'arrive pas à trouver comment le faire correctement. Pouvez-vous corriger l'exemple ?
Merci !