Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 264

 
mais c'est comme ça que ça se passe. Si la taille du tableau n'est pas prédéfinie, alors il faut absolument utiliser ArrayResize. Et à la fin de ArrayResize(array,0) ; oui, c'est parfait, je n'y avais jamais pensé...........Uchtu....... Merci))))
 
Vous ne pouvez pas faire un ArrayResize sur chaque tick!!!!!!!. Sinon, vous vous enliserez dans des calculs.................... Et aucun processeur multi-core ne vous sauvera.........
 
L'article "ShowCandleSize" publié le 11.11.2013 07:54 ne s'affiche pas correctement et ne peut être édité pour une raison inconnue.
J'ai contacté le service d'assistance le 15 novembre avec ce problème à l'adresse noreply@metaquotes.net, mais je n'ai pas reçu de réponse.
Pouvez-vous m'indiquer l'adresse correcte pour une telle question ?
Respectueusement.
--
Vladislav Shurkin,
Le 20 novembre 2013.
 
artmedia70:
Tous les résultats des transactions fermées peuvent être consultés dans l'historique du compte. Par logiciel. Est-il nécessaire d'en remplir un tableau en permanence ? Il y en a peut-être beaucoup. Il est préférable de limiter la profondeur nécessaire de l'histoire et de remplir le tableau, si vous ne pouvez vraiment pas vous en passer.

Merci pour cette précision !

"Tous les résultats des transactions clôturées peuvent être consultés dans l'historique du compte. Par logiciel." - Comment ?
 
VladislavVG:


À la fin du programme, la mémoire allouée dynamiquement doit être libérée pour éviter les fuites de mémoire. Je ne sais pas si les développeurs de MKL suivent cette règle.



C'est le cas, c'est pourquoi les tableaux sont statiques, pour les rassembler à un endroit et les libérer plus tard. ArrayResize(a,0) à la fin du programme n'a pas beaucoup de sens, ne serait-ce que pour se rassurer.
 
Leo59:
Merci pour votre clarification !

" Tous les résultats des transactions fermées peuvent être consultés dans l'historique du compte. De manière programmatique." - Comment ?

OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY)

ou

OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)

 
alsu:

OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY)

ou

OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)




Merci !


Qu'est-ce qui est bon dans le tutoriel de Kovalev ? Je pense que c'est bien parce que vous apprenez à résoudre des problèmes simples en utilisant des exemples simples de code de programme.

En fait, j'ai commencé à apprendre la programmation à partir du code indicateur de Vladislav Goshkov. J'ai dessiné cet indicateur avec les rayons de support et de résistance de De-Mark. Il y avait les lignes suivantes :
ObjectMove(buff_str, 1, UpBT[0], UpP[0]) ;
ObjectMove(buff_str, 0, UpBT[1], UpP[1]) ;
Je l'ai placé. Je l'ai regardé dans le testeur et j'ai vu comment il fonctionnait. Il dessine des rayons par fractales mais il regarde dans le passé au lieu du futur... )))). J'ai commencé à poser des questions et ça a marché ! Respect à Vladislav !!!!
Je suis tombé sur le manuel de Kovalev plus tard. J'aimerais qu'on réponde à plus de questions dans ce format.

Et encore une chose.
"Vous voulez écrire votre propre expert et vous ne savez pas par où commencer ? Avec l'apparition des articles de Rosh sur le site d'Alpari, les premières étapes de la création d'un expert peuvent être rendues faciles et indolores.
Rosh explique les étapes par lesquelles passe tout rédacteur d'EE de manière simple et accessible. De nombreuses nuances de la programmation, dont la connaissance s'acquiert avec une longue expérience, sont désormais accessibles à tous.
Étape par étape, en commençant par les bases, vous apprendrez les subtilités de la programmation Forex."

Peut-être savez-vous à quel lien cet article peut être lu ?
 
VladislavVG:


Parce que ce n'est pas un tableau, pour être précis. Si vous voulez plus de détails - voir les descriptions de C. Je m'y réfère, car les développeurs ont dit dès le début que pour tout ce qui n'est pas clair ou présenté de manière incomplète - voir la norme C.

Lorsque vous déclarez la variable double buffer[], vous allouez de la mémoire pour une variable qui, en langage C, est appelée "pointeur", est de type entier et stocke l'adresse de la cellule de mémoire à partir de laquelle le tableau va commencer. Si vous vérifiez la dimensionnalité de la variable dans MCL, vous obtenez la valeur 0. Cela signifie que le tableau lui-même n'a pas de mémoire allouée et que lorsque vous essayez d'attribuer une valeur, il n'y a nulle part où l'écrire : en MCL, il n'y a pas d'arithmétique d'adresse et les pointeurs ne peuvent pas être manipulés. En C, vous pouvez l'écrire, mais avec de la mémoire "non allouée", cela conduit généralement à un crash du système. Lorsque vous appliquez AreiResize(array,N), (N>0), cela alloue de la mémoire pour le tableau (au moins un élément) et crée de l'espace pour écrire des valeurs. Ensuite, lors de la vérification, la dimension du tableau sera différente de 0.

Le concept de tableau statique en termes de C a plusieurs significations :

1. un tableau statique (ainsi qu'une variable/type statique) sont des variables/réseaux dont la dimensionnalité est connue à la compilation (précompilation pour MKL4). Par exemple, lorsque l'on décrit double buff[10000] ;, le compilateur est informé de la taille de la variable et peut immédiatement allouer de la mémoire. À l'opposé de ce concept, il existe le concept de "tableau dynamique", c'est-à-dire un tel tableau dont la taille est inconnue au moment de la compilation et ne devient connue qu'au moment de l'exécution ; ce sont tous des tableaux de taille variable. Lors de l'accès à de tels tableaux, la mémoire doit être allouée au préalable. La mémoire est allouée en dehors de la mémoire statique du programme.

En C/C++, si un tableau est décrit dans un bloc, sa visibilité est limitée par le bloc - qu'il s'agisse d'un tableau statique ou dynamique. Les erreurs dans les programmes telles que les "fuites de mémoire" sont associées aux tableaux dynamiques définis localement, c'est-à-dire lorsqu'un pointeur mémoire est détruit parce qu'il quitte la portée, mais que la mémoire qui lui est allouée reste occupée.

2 Le concept de tableau "statique" comme une variable décrite avec le modificateur statique - de telles variables ne sont pas détruites lorsqu'elles quittent la portée du bloc - elles sont situées dans une zone de mémoire séparée - donc les valeurs qu'elles contiennent sont préservées. Le risque de fuites de mémoire est réduit. Un tableau déclaré comme dynamique au sens de p.1 (c'est-à-dire que la taille du tableau n'est pas connue au moment de la compilation), peut également être statique au sens de p.2, c'est-à-dire déclaré avec le modificateur "static".

Lors de la fin d'un programme, la mémoire allouée dynamiquement doit être libérée pour éviter les fuites de mémoire. Je ne sais pas si les développeurs de MKL suivent cela, mais dans mes programmes je libère toujours de la mémoire - habitude du C - ArreyResize(array,0) ;

En MKL, tous les tableaux sont statiques au sens du point 2.

Maintenant, concernant votre question : "Pourquoine peut-on pas attribuer des valeurs à un tableau statique double buffer[] ; ". Parce qu'aucune mémoire ne lui est allouée (en fait, il s'agit d'un tableau dynamique avec un modificateur statique). Avant d'attribuer des valeurs, il faut allouer de la mémoire, c'est-à-dire qu'il faut appliquer à ce tableau un ArrayResize dont la taille est supérieure à 0. Pour les tableaux, vous devez contrôler le dépassement de mémoire (en dehors du tableau).

SZ J'espère que j'ai été clair. J'ai essayé de le rendre aussi simple que possible.

"Vous ne pouvez pas perdre votre savoir-faire" !
Merci !!!!!!!!
 
VladislavVG:

Parce que ce n'est pas un tableau, pour être précis. Si vous voulez plus de détails, consultez les descriptions du langage C. J'y fais référence parce que les développeurs ont dit dès le début que pour tout ce qui n'est pas clair ou incomplet, consultez la norme C.
........

Merci beaucoup. Je me suis réveillé avec les yeux collés mais je suis tellement content d'avoir tout lu, merci encore.
 
Leo59:


Connaissez-vous, peut-être, un lien où l'on peut lire cette critique d'article ?


https://www.mql5.com/ru/articles/mt4


Ah non, ça ne s'ouvre plus(((.