Version bêta du livre en ligne sur la programmation MQL4 - par Sergey Kovalev (SK.) - page 11

 

à SK

1. Le tutoriel a été publié en tant que version bêta, c'est-à-dire avec une offre de critique.
2) Eh bien, j'ai souligné la phrase et trouvé la ligne "tous les tableaux sont statiques par définition".))) c'est-à-dire que ce n'est pas mon problème.
3. si nous suivons arbitrairement cette ligne critiquée du manuel scolaire supposant que tous les tableaux sont statiques par définition, nous pouvons obtenir une erreur d'adresse "incorrred start position 0 for ArrayMinimum function" dans le traceur.
(cette seule ligne n'enlève rien aux mérites du manuel, bravo à toi SK).
4) Donc. Un tableau statique est, tout d'abord, dans le sens de l'allocation de mémoire,
ou non, il peut y avoir une nouvelle initialisation de chaque élément.
Que voyons-nous dans MQL4 ? A chaque appel, chaque élément est proprement initialisé avec un zéro par défaut, explicitement à partir de la définition.
C'est-à-dire que les données des sous-programmes ne sont pas stockées sans prédéfinition statique.
Cela signifie que les sous-programmes MQL4 sont exécutés avec une allocation dynamique de la mémoire variable.
Toutes les variables et tous les tableaux sans taille explicite dans les sous-programmes MQL4 sont dynamiques par défaut. Sinon, ils doivent être corrigés par une description statique.
5. Par exemple, l'allocation dynamique de mémoire est l'occasion de déclarer le double a[][]...[] ; avec des dimensions vides,
mais il est nécessaire de mentionner que le programmeur doit être responsable de l'adressage.
(Dans l'exemple ci-dessus, la fonction standard est adressée par une ancienne référence et ne se trouve pas dans les limites du tableau).

 
Korey:

à SK


OK.
 
La question est la suivante.

Le livre est écrit en russe. Les développeurs disent que la traduction en anglais est en cours, puis en chinois apparaîtra. Je suis sûr que seules les explications sont traduites ; personne ne va toucher au code source.

Beaucoup de programmeurs par nature donnent des noms compréhensibles aux variables de leur langue, par exemple ici sur le site j'ai rencontré massiv (masiv), Koef et même MuH_IIIuPuHa_KaHaJIa. Ainsi, en feuilletant un manuel, je suis tombé sur le code suivant :




Qu'est-ce qu'un habitant de Chinatown a à dire en regardant la variable Tip ? Nous savons ce que c 'est, mais que savent les autres ?

( Trouvé ici : https://book.mql4.com/ru/trading/orderclose )
 
Parabellum:
La question est la suivante.

Le livre est écrit en russe. Les développeurs disent que la traduction en anglais est en cours, puis en chinois apparaîtra. Je suis sûr que seules les explications sont traduites ; personne ne va toucher au code source.

Beaucoup de programmeurs par nature donnent des noms compréhensibles aux variables de leur langue, par exemple ici sur le site j'ai rencontré massiv (masiv), Koef et même MuH_IIIuPuHa_KaHaJIa. Ainsi, en feuilletant un manuel, je suis tombé sur le code suivant :




Qu'est-ce qu'un habitant de Chinatown a à dire en regardant la variable Tip ? Nous savons ce que c 'est, mais que savent les autres ?

( Trouvé ici : https://book.mql4.com/ru/trading/orderclose )

Merci pour la remarque !
Les noms des variables dans les exemples, bien sûr, ne toucheront pas - en chinois, par exemple, le code source n'utilise pas de hiéroglyphes, ils doivent de toute façon composer avec l'alphabet latin. Pour comprendre le sens de cette variable, l'"habitant de Chinatown" se contentera de regarder le commentaire. De même, les habitants des pays anglophones ne percevront pas non plus le mot Tip comme "type". Parce que "type" en anglais serait "type". Et Tip est "tip" ou même "hint". Mais cela ne les empêche pas de comprendre les codes des développeurs russophones. ;))
 

Mais je pense qu'un locuteur natif devrait quand même regarder les noms des variables. Pour ne pas marcher sur un râteau. Et si la variable Tip - son son est le même que le mot russe de trois lettres, qui a au milieu la lettre U (.u.) . Et si ce n'est pas le cas ? Cela ne rendra pas le livre agréable à lire.

C'est peut-être plus simple et plus correct.

int _OrdetType=OrderType() ;

si ( _OrdetType > 1 ) ....

 

L'hypothèse est que le lecteur va quand même réfléchir un peu...

 

Ici https://book.mql4.com/ru/build/lots il y a des marques de division manquantes

il y a

Lots_New=MathFloor(Free*Percent100One_Lot/Step)*Step;// Calculer

Nous avons besoin

Lots_New=MathFloor(Free*Percent/100/One_Lot/Step)*Step;// Calculer


C'est un peu gênant, je pense que je peux voir le code. Je veux en prendre une part, mais pas toute. C'est-à-dire que je copie ce que je vois dans le tampon et le colle dans le texte de mon programme. Mais il n'est pas inséré correctement. L'ensemble du code tient sur une seule ligne. Le code de fin de ligne dans le livre et dans l'éditeur MQL ne coïncident probablement pas.

 

Voici une autre petite modification.

https://book.mql4.com/ru/build/trading

Il y a

La commande switch() est transmise à l'étiquette du cas 10 (bloc 2-3).


Besoin de

.... (bloc 2).

 
Prival:

Ici https://book.mql4.com/ru/build/lots il y a des marques de division manquantes

il y a

Lots_New=MathFloor(Free*Percent100One_Lot/Step)*Step;// Calculer

Nous avons besoin

Lots_New=MathFloor(Free*Percent/100/One_Lot/Step)*Step;// Calculer


C'est un peu gênant, je pense que je peux voir le code. Je veux en prendre une part, mais pas toute. C'est-à-dire que je copie ce que je vois dans le tampon et le colle dans le texte de mon programme. Mais il n'est pas inséré correctement. L'ensemble du code tient sur une seule ligne. Le code de fin de ligne dans le livre et dans l'éditeur MQL ne coïncident probablement pas.


Oui, ce sont les mêmes problèmes de formatage. Nous le réparerons demain.

Merci d'avoir trouvé l'erreur.

Il existe des fichiers authentifiés pour tous les codes finis. Le code dans les fichiers est censé être correct. À propos, il peut également être utilisé comme référence pour rechercher les coquilles et les inexactitudes.

 
Prival:

Voici une autre petite modification.

https://book.mql4.com/ru/build/trading

Il y a

La commande switch() est transmise à l'étiquette du cas 10 (bloc 2-3).


Besoin de

.... (bloc 2).



Il n'est pas nécessaire de corriger ici. Tous les blocs ont un point de départ et un point d'arrivée. Dans ce cas, 2 est le début, 3 la fin.

Merci quand même :)