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

 

Bonne journée et bonne humeur à tous !

Je continue à étudier le langage de programmation MQL5. J'ai apporté une petite modification au code de Vasiliy Sokolov pour n' ouvrir qu'une seule position par jour, comme prévu initialement dans l'algorithme de l'Expert Advisor. La modification est mise en évidence en jaune.

Meilleures salutations, Vladimir.

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- Зададим условия для открытия позиций BUY и SELL
   double price=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   double point=SymbolInfoDouble(Symbol(),SYMBOL_POINT);
   int digits=(int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS);
   price=NormalizeDouble(price,digits);

   if(IsMainPositionOpen() == false && IsTimeForOpen())
     {
      if(TickUP()==(price+point))
         OpenBUY();
      else
        {
         if(TickDOWN()==(price-point))
            OpenSELL();
        }
     }
   if(IsTimeForClose())
      CloseALL();
 
Vasiliy Sokolov:

Le bloc OnInit est également trop réfléchi et n'est toujours pas écrit correctement. Tout d'abord, vous devez essayer d'écrire des identifiants, et non des chiffres. Retourne INIT_SUCCEEDED au lieu de -1. Deuxièmement, l'interrupteur est excessif ici. Ce code doit contenir un if ou un switch. Il faut d'abord écrire l'un et ensuite l'autre - juste de l'huile.

Troisièmement, nous devons surveiller tous les types de comptes. Nous avons Demo et puis nous avons Real. Et puis il y a le concours. Mais même s'il n'y avait pas de troisième compte, il devrait y avoir un talon qui permettrait d'attraper toutes les autres variantes:

Il serait probablement plus raisonnable d'expliquer le fonctionnement des exceptions, sinon on ne comprendra pas pourquoi il devrait y avoir un quelconque contrôle sur quelque chose que l'on ne connaît pas.

Dans le sens le plus exagéré, il devrait être le suivant :

1. lancer un programme à exécuter

2. travailler dans l'algorithme et en sortir dans deux directions :

a) Vrai - l'algorithme a fonctionné correctement

b) Faux - l'algorithme n'a pas fonctionné

En même temps, travailler sur a) signifie qu'ici sont remplies toutes les options que le programmeur veut mettre en œuvre, et sur b) tout le reste, et cela n'a pas d'importance, si c'est nécessaire ou non. Autrement dit, le programmeur ne met en œuvre que la fonctionnalité qu'il souhaite et tout le reste doit être exclu.

 
Konstantin:

Il est probablement plus logique d'expliquer le travail avec les exceptions, sinon on ne comprend pas pourquoi il est nécessaire de contrôler quelque chose que l'on ne connaît pas en premier lieu.

Dans sa forme la plus exagérée, elle devrait être la suivante :

1. lancer un programme à exécuter

2. travailler dans l'algorithme et en sortir dans deux directions :

a) Vrai - l'algorithme a fonctionné correctement

b) Faux - l'algorithme n'a pas fonctionné

En même temps, travailler sur a) signifie qu'ici sont remplies toutes les options que le programmeur veut mettre en œuvre, et sur b) tout le reste, et cela n'a pas d'importance, si c'est nécessaire ou non. En d'autres termes, le programmeur ne met en œuvre que la fonctionnalité qu'il ou elle insère, et tout le reste doit être rejeté comme une exception.

Bonjour Konstantin, merci pour votre clarification.

Chers participants à ce fil de discussion ! Une fois de plus, je tiens à vous remercier tous pour vos suggestions et conseils constructifs qui m'ont aidé à apprendre le langage de programmation MQL5.

Pour l'instant, j'ai fait une pause car mon travail principal ne me permet pas de consacrer beaucoup de temps et d'attention à l'auto-apprentissage, mais pour l'instant le résultat principal est atteint - je comprends les bases de la programmation, je lis les codes des tiers et j'écris mes propres fonctions.

Je publierai la version de Trailing_Stop (v.1).mq5 Expert Advisor avec des commentaires détaillés sur chaque ligne de code, sous une forme accessible à un élève de 1ère année d'une école de programmation, comme je l'ai promis plus tôt, mais un peu plus tard.

Salutations, Vladimir.

 

Bonne journée et bonne humeur à tous !

Je continue à étudier le langage de programmation MQL5. J'ai enfin assez de temps pour écrire une version de l'Expert Advisor avec des commentaires détaillés sur chaque ligne de code, sous une forme accessible aux étudiants de 1ère année d'une école de programmation. Comme le code du conseiller expert est assez volumineux, je le publie dans un fichier appelé Trailing_Stop_gv.22.mq5.

Avant de publier le code, nous avons vérifié le conseiller expert dans le testeur de stratégie. Aucun problème n'a été trouvé. Le système de compensation de la comptabilité des positions est utilisé dans l'Expert Advisor. Ce système de comptabilité signifie qu'à un moment donné sur le compte, il ne peut y avoir qu'une seule position ouverte pour un seul et même symbole (titre).

À l'heure actuelle, le conseiller expert a mis en œuvre la capacité de :

  1. Vérifiez le compte de trading sur lequel vous prévoyez de l'installer. Si le conseiller expert est installé sur un compte de démonstration, l'autorisation de continuer à travailler apparaît dans la boîte de message. Si l'on tente d'installer le conseiller expert sur un compte réel, la fenêtre de message affichera un avertissement indiquant qu'il ne peut continuer à fonctionner, puis il sera automatiquement supprimé de la fenêtre de travail du terminal de trading.
  2. Une fois par jour de négociation, à 9 heures précises (heure de Moscou), ouvrez automatiquement une position dans la direction dans laquelle le premier tick est dirigé. Par exemple, si le premier tick est dirigé vers le haut à 9 heures, heure de Moscou, une position d'achat sera ouverte ; si le premier tick est dirigé vers le bas, une position de vente sera ouverte.
  3. Définissez la taille du lot.
  4. Définissez la taille du stop loss.
  5. Spécifiez le niveau relatif au prix d'ouverture, auquel le Stop Loss est déplacé vers le Breakeven.
  6. Définissez l'étape de suivi du stop loss.

Cette version du conseiller expert met en œuvre la majorité des conseils, précédemment suggérés par Vasily Sokolov.

AVERTISSEMENT !!!

Cet Expert Advisor a été développé selon le plan d'auto-apprentissage pour les comptes de démonstration, et il est destiné à des fins de formation uniquement ! Il n'est pas destiné à négocier sur un compte réel et à réaliser des bénéfices !

Sincèrement, Vladimir.

Dossiers :
 
MrBrooklin:

Bonne journée et bonne humeur à tous !

Je continue à étudier le langage de programmation MQL5. J'ai enfin assez de temps pour écrire une version de l'Expert Advisor avec des commentaires détaillés sur chaque ligne de code, sous une forme accessible aux étudiants de 1ère année d'une école de programmation. Comme le code de l'Expert Advisor est assez lourd, je le publie sous la forme d'un fichier appelé Trailing_Stop (v.2).mq5.

Avant de publier le code, nous avons vérifié le conseiller expert dans le testeur de stratégie. Aucun problème n'a été trouvé. Le système de compensation de la comptabilité des positions est utilisé dans l'Expert Advisor. Ce système de comptabilité signifie qu'à un moment donné sur le compte, il ne peut y avoir qu'une seule position ouverte pour le même symbole (instrument financier).

À l'heure actuelle, le conseiller expert a mis en œuvre la capacité de :

  1. Vérifiez le compte de trading sur lequel vous prévoyez de l'installer. Si le conseiller expert est installé sur un compte de démonstration, l'autorisation de continuer à travailler apparaît dans la boîte de message. Si l'on tente d'installer le conseiller expert sur un compte réel, la fenêtre de message affichera un avertissement indiquant qu'il ne peut continuer à fonctionner, puis il sera automatiquement supprimé de la fenêtre de travail du terminal de trading.
  2. Une fois par jour de négociation, à 9 heures précises (heure de Moscou), ouvrez automatiquement une position dans la direction dans laquelle le premier tick est dirigé. Par exemple, si le premier tick est dirigé vers le haut à 9 heures, heure de Moscou, une position d'achat sera ouverte ; si le premier tick est dirigé vers le bas, une position de vente sera ouverte.
  3. Définissez la taille du lot.
  4. Définissez la taille du stop loss.
  5. Spécifiez le niveau relatif au prix d'ouverture, auquel le Stop Loss est déplacé vers le Breakeven.
  6. Définissez l'étape de suivi du stop loss.

Cette version du conseiller expert met en œuvre la majorité des conseils, précédemment suggérés par Vasily Sokolov.

AVERTISSEMENT !!!

Cet Expert Advisor a été développé selon le plan d'auto-apprentissage pour les comptes de démonstration, et il est destiné à des fins de formation uniquement ! Il n'est pas destiné à négocier sur un compte réel et à réaliser des bénéfices !

Sincèrement, Vladimir.

Bonjour, il ne compile pas.

Trailing_Stop_gv.22.mq5

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

J'ai compris - nom sans parenthèses pour créer Trailing_Stop (v.2) Expert Advisor

 
SanAlex:

Bonjour - il ne compile pas.

Bonjour, je viens de télécharger le fichier depuis le site web et j'ai vérifié dans mon MetaEditor, tout se compile bien.

Salutations, Vladimir.

 
MrBrooklin:

Bonjour, je viens de télécharger le fichier depuis le site web et de vérifier dans mon MetaEditor, tout se compile bien.

Salutations, Vladimir.

Merci ! pour ce travail. Je n'ai pas entré le nom correctement lors de la création de l'Expert Advisor. tout fonctionne.

 
SanAlex:

Merci ! pour le travail. Je n'ai pas entré le nom correctement lors de la création de l'expert. tout fonctionne.

Tout le plaisir est pour moi !

Salutations, Vladimir.

 

Chers participants à ce fil de discussion !

Une fois encore, je tiens à vous remercier tous pour vos suggestions constructives, vos astuces et vos conseils, qui m'ont aidé à apprendre les bases du langage de programmation MQL5. Un grand merci à Vasily Sokolov! Que Dieu vous bénisse tous !

Avec tout le respect dû à chacun, Vladimir.

 

Bonne journée et bonne humeur à tous !

Je continue à étudier le langage de programmation MQL5. Je suis en train d'écrire le code d'un nouvel EA. J'ai été confronté à un point que je ne comprends pas bien comment résoudre. La tâche semble simple - je veux que mon conseiller expert travaille sur le graphique de la paire de devises, qui est définie dans les paramètres d'entrée de l'EA. Si une tentative est faite (par exemple, par erreur) pour l'installer sur le graphique d'une autre paire de devises, le conseiller expert devrait émettre un avertissement sur l'impossibilité de poursuivre le travail.

Voici le schéma du code du programme :

input string Symbol_Main="GBPUSDrfd";  //Валютная пара, на которую ставим советник

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   /* Определим график валютной пары, на который будем устанавливать советник*/
   string currency_chart=SymbolInfoString(Symbol(),SYMBOL_DESCRIPTION);
   if(currency_chart==Symbol_Main) //если график валютной пары совпадает со входным параметром
     {
      /* выводим окно сообщений на торговом терминале и продолжаем работу советника */
      MessageBox("Работа советника на данной валютной паре разрешена!");
      return(INIT_SUCCEEDED); //возвращаем для функции OnInit значение означающее "удачная инициализация"
     }
   else //в противном случае, если график валютной пары не совпадает со входным параметром
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Работа советника на данной валютной паре запрещена! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
  }

Le compilateur ne montre aucune erreur. Le code qui ne fonctionne pas est surligné en jaune. C'est peut-être parce que je ne comprends pas bien la signification de l'identifiant SYMBOL_DESCRIPTION - description en chaîne du caractère. J'ai essayé d'utiliser d'autres identifiants mais le résultat est le même. Peut-être que la fonction SymbolInfoString() n'est pas du tout nécessaire ici ? J'ai écrit le nom de la paire de devises GBPUSDrfd uniquement parce que je prévois d'utiliser le conseiller expert sur Alpha-Forex, alors que tous les symboles de ce courtier ont la terminaison rfd.

Cher conseiller expert, veuillez me conseiller sur la direction à prendre !

Salutations, Vladimir.

Raison: