Auto-apprentissage du langage MQL5 à partir de zéro - page 39

 
MrBrooklin:

Oui, les crochets ouvrants et fermants convergent verticalement après "Styling", mais soit le rétroéclairage ne comprend pas ce que c'est, soit je ne le vois pas. Le niveau de compétence en programmation, pour le moment, est proche de zéro.

Salutations, Vladimir.

la mise en évidence est une parenthèse éclairée après le titre de la fonction, elle doit être éclairée en paire avec la parenthèse inférieure, c'est-à-dire que chaque parenthèse doit avoir une paire, elles sont éclairées, si ce n'est pas le cas, cela signifie qu'il manque une parenthèse fermante.

 
Fast235:

la mise en évidence est la première parenthèse éclairée après l'en-tête de la fonction, elle doit être appariée avec la parenthèse inférieure, c'est-à-dire que chaque parenthèse doit avoir une paire, elles sont éclairées, sinon, il manque la parenthèse de fermeture.

Merci pour l'astuce. Il s'avère qu'ils ne sont pas mis en évidence sur mon écran, mais mis en évidence par l'épaisseur. Oui, tous les supports sont là. Maintenant, il suffit de déplacer le bloc fonctionnel derrière le support OnStart inférieur et les erreurs ont disparu. Merci pour votre aide !

Salutations, Vladimir.

 
MrBrooklin:

Merci pour le conseil. Il s'avère qu'ils ne sont pas mis en évidence sur mon écran, mais qu'ils ressortent en épaisseur. Oui, tous les supports sont là. Maintenant, il suffit de déplacer le bloc fonctionnel derrière le support OnStart inférieur et les erreurs ont disparu. Merci pour votre aide !

Salutations, Vladimir.

Toutes les fonctions sont déclarées dans la portée globale, c'est-à-dire en dehors de l'espace des autres fonctions, qui est limité par leurs parenthèses.
 
Реter Konow:
Toutes les fonctions sont déclarées dans la portée globale, c'est-à-dire en dehors de l'espace des autres fonctions, qui est délimité par leurs parenthèses.

Cher Peter, dites-nous comment vous avez réussi à créer votre soi-disant langage de balisage (), ce sera utile pour les nouveaux arrivants, et j'en ai besoin pour développer la pensée logique, qui est très importante ici.

peut-être que quelque chose a mangé beaucoup, a grimpé à un arbre
 
MrBrooklin:

Bonsoir à tous !

Chers experts en programmation, pourriez-vous me dire ce que signifie l'erreur générée par le compilateur :"les déclarations de fonctions ne sont autorisées que dans la zone globale, l'espace de noms ou la classe", ou pour être plus précis, qu'est-ce qu'un espace de noms et où doit-il se trouver dans le script ?

La question porte sur l'écriture du code de fonction pour "Enough_time" et "Enough_patience".

Salutations, Vladimir.

Zone globale, la zone en dehors des fonctions. et peu importe où, vous pouvez entre les fonctions, j'espère que vous comprenez où elles commencent et se terminent, vous pouvez faire tout ce que vous pouvez dans la zone globale, déclarer des variables globales, des propriétés ou tout autre chose à la fin. Les variables déclarées dans la portée globale sont visibles partout, littéralement. La portée locale est la zone allant du début à la fin, en fermant les accolades, de la fonction. Les variables déclarées dans la zone locale ne sont visibles que dans cette zone.

Veuillez noter que le code est lu de haut en bas et de gauche à droite. Le compilateur ne réarrange pas les chaînes de caractères. La règle est donc qu'une variable est toujours déclarée au-dessus ou à gauche de la référence à celle-ci. Et seulement dans son propre cadre. Dans différentes zones locales, les variables peuvent avoir les mêmes noms. Et d'ailleurs les boucles et si elles sont des fonctions avec leurs propres zones aussi)

 
Valeriy Yastremskiy:

La portée globale, la zone en dehors des fonctions. et cela ne fait aucune différence où, vous pouvez entre les fonctions, j'espère que vous comprenez où elles commencent et finissent, vous pouvez tout faire dans la portée globale à la fin, déclarer des variables globales, des propriétés ou autre. Les variables déclarées dans la portée globale sont visibles partout, littéralement. La portée locale est la zone allant du début à la fin, en fermant les accolades, de la fonction. Les variables déclarées dans la zone locale ne sont visibles que dans cette zone.

Veuillez noter que le code est lu de haut en bas et de gauche à droite. Le compilateur ne réarrange pas les chaînes de caractères. La règle est donc qu'une variable est toujours déclarée au-dessus ou à gauche de la référence à celle-ci. Et seulement dans son propre cadre. Dans différentes zones locales, les variables peuvent avoir les mêmes noms. (Et d'ailleurs les boucles et les si sont des fonctions avec leurs propres champs d'application aussi)

nous devrions écrire un livre. ensemble, nous tous

 
Реter Konow:
Toutes les fonctions sont déclarées dans la portée globale, c'est-à-dire en dehors de l'espace des autres fonctions, qui est limité par leurs parenthèses.

Merci, Peter ! On m'a déjà aidé à comprendre cette question.

Je continue mon étude du langage de programmation MQL5 et aujourd'hui je colle le code d'un script, qui est la continuation d'une des tâches des participants de ce fil. J'ai testé le script dans tous les modes. Tout fonctionne comme il se doit. J'ai réglé les paramètres d'entrée au minimum pour commencer.

Salutations, Vladimir.

//+------------------------------------------------------------------+
//|                                                Learning_MQL5.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
#property script_show_inputs
//--- Зададим входные параметры скрипта 
input ushort Период_обучения=500; //Полный период обучения в днях
input ushort Прошло_дней=10;      //Сколько дней прошло с начала обучения
input bool   Терпение=true;       //Терпение (true - достаточно; false - не достаточно)
//--- Зададим глобальные переменные
ushort Достаточность_времени;
bool Достаточность_терпения;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   if(Достаточно_времени()==0 && Достаточно_терпения()==true)
     {
      Print("Я выучу язык MQL5!");
     }
   else
     {
      Print("Я не выучу язык MQL5!");
     }
  }
//--- Создадим функцию Достаточно_времени
ushort Достаточно_времени()
  {
   Достаточность_времени=(Период_обучения-Прошло_дней);
   return(Достаточность_времени);
  }
//--- Создадим функцию Достаточно_терпения
bool Достаточно_терпения()
  {
   Достаточность_терпения=Терпение;
   return(Достаточность_терпения);
  }
//+------------------------------------------------------------------+
 
MrBrooklin:

Merci, Peter ! On m'a déjà aidé à comprendre cette question.

Je continue mon étude du langage de programmation MQL5 et aujourd'hui je colle le code d'un script, qui est la continuation d'une des tâches des participants de ce fil. J'ai testé le script dans tous les modes. Tout fonctionne comme il se doit. J'ai réglé les paramètres d'entrée au minimum pour commencer.

Sincèrement, Vladimir.

Structurellement, les fonctions sont écrites correctement, mais la logique est boiteuse. Regardez attentivement tout le code.

Le résultat de la fonction Sufficient_time() devait être supérieur à zéro, ce qui était une condition logique.
 
MrBrooklin:

Merci, Peter ! On m'a déjà aidé à comprendre cette question.

Je continue mon étude du langage de programmation MQL5 et aujourd'hui je colle le code d'un script, qui est la continuation d'une des tâches des participants de ce fil. J'ai testé le script dans tous les modes. Tout fonctionne comme il se doit. J'ai réglé les paramètres d'entrée au minimum pour commencer.

Salutations, Vladimir.

Décrivez (écrivez) ce que fait votre script. Et c'est toujours mieux de le faire au début. La cible, pourquoi. Quelles sont les tâches qui permettent d'atteindre l'objectif. Comment les tâches peuvent être résolues, les algorithmes pour les résoudre et ensuite le code. Et d'ailleurs, la division des tâches est une décomposition).

 
Fast235:

Nous devrions écrire un livre. Ensemble, nous devrions tous

Cette question est attendue depuis longtemps. Sergey Kovalev a écrit un manuel pour le langage de programmation MQL4. Il faut maintenant qu'un autre expert soit inspiré pour faire cette noble action pour MQL5.

Meilleures salutations, Vladimir.