Discussion de l'article "Assistant MQL5 : Nouvelle version" - page 4

 

1. Pouvez-vous me dire comment inverser un signal ?

exemple : pour confirmer un signal d'achat GBP/USD, nous avons besoin d'un signal de vente MACD EUR/GBP.

Je ne sais pas s'il est possible d'inverser un signal ou s'il est plus facile de creuser dans le code de la bibliothèque et de changer "plus" en "moins" et de l'enregistrer en tant que bibliothèque sous un nom différent.

P.S. Ce serait bien de pouvoir choisir, lors de la création d'un Expert Advisor, quel signal prendre : signal avant ou arrière.

2. Comment puis-je retirer les poids des motifs qui sont cousus dans la bibliothèque, afin d'optimiser ces poids ?

 
52_rus:

1. Pouvez-vous me dire comment inverser le signal ?

Exemple : pour confirmer un signal d'achat GBP/USD, nous avons besoin d'un signal de vente MACD EUR/GBP.

Ou est-il plus facile de creuser dans le code de la bibliothèque et de changer "plus" en "moins" et de l'enregistrer en tant que bibliothèque sous un nom différent.

P.S. Ce serait bien de pouvoir choisir, lors de la création d'un Expert Advisor, quel signal prendre : signal avant ou arrière.

2. Comment pouvons-nous extraire les poids des motifs qui sont cousus dans la bibliothèque, afin d'optimiser ces poids ?

1. Les mécanismes permettant d'inverser (et d'ignorer) les signaux sont intégrés dans la classe de base CExpertSignal, mais ne sont malheureusement pas encore disponibles dans l'assistant.

2. Il en va de même pour les poids des modèles.

Veuillez joindre la source du conseiller expert, obtenue après l'"Assistant" et brièvement. J'essaierai d'expliquer comment procéder "à la main".

PS. L'"Assistant" sera développé et ces paramètres seront disponibles ultérieurement.

 

1. Comment puis-je ajouter ma bibliothèque (par exemple : changer le MACD actuel et le sauvegarder sans effacer la bibliothèque principale) à la liste des signaux principaux ?

2. Question sur le travail avec les bibliothèques :

Considérons un Expert Advisor basé sur MAKD réalisé avec l'aide de l'assistant : nous l'avons créé et compilé, nous l'avons testé et nous avons obtenu quelques résultats

Les signaux MAKD de la bibliothèque étaient les suivants :

//--- définition des "poids" par défaut des modèles de marché
   m_pattern_0    =10;       // modèle 0 "l'oscillateur a demandé une direction"
   m_pattern_1    =30;       // modèle 1 "inversion de l'oscillateur dans le sens voulu"
   m_pattern_2    =80;       // modèle 2 "croisement d'une ligne principale et d'une ligne de signalisation"
   m_pattern_3    =50;       // modèle 3 "franchissement de la ligne principale au niveau zéro"
   m_pattern_4    =60;       // modèle 4 "divergence de l'oscillateur et du prix"
   m_pattern_5    =100;      // modèle 5 "double divergence de l'oscillateur et du prix" 

Далее, если я занулю не нужные мне паттерны (например 0,1,2,4,5) в библиотеке:

//--- définition des "poids" par défaut des modèles de marché
   m_pattern_0    =0;       // modèle 0 "l'oscillateur a demandé une direction"
   m_pattern_1    =0;       // modèle 1 "inversion de l'oscillateur dans le sens voulu"
   m_pattern_2    =80;       // modèle 2 "croisement d'une ligne principale et d'une ligne de signalisation"
   m_pattern_3    =0;       // modèle 3 "franchissement de la ligne principale au niveau zéro"
   m_pattern_4    =0;       // modèle 4 "divergence de l'oscillateur et du prix"
   m_pattern_5    =0;      // modèle 5 "double divergence de l'oscillateur et du prix" 

Je ne compilerai que la bibliothèque (je ne compilerai pas le code de l'EA lui-même). Je la testerai et obtiendrai exactement le même résultat que lors du premier test.

Si je compile également le code EA, j'obtiendrai un résultat différent, dans cet exemple uniquement pour le modèle 2.

J'ai une question : pourquoi dois-je recompiler le code EA après avoir modifié certains paramètres dans la bibliothèque ? (Elle n'a pas changé).

 
52_rus:

1. Comment puis-je ajouter ma bibliothèque (par exemple : changer le MACD actuel et le sauvegarder sans effacer le principal) à la liste principale des signaux ?


Vous voulez dire le fichier include qui contient le code du module signaux ? Modifiez le module actuel comme vous le souhaitez et enregistrez-le dans le même répertoire, mais avec un nom différent. Plus de détails à ce sujet sont donnés dans l'article :

Créer un robot de trading dans le nouvel assistant MQL5

Le code de l'EA est construit en utilisant l'assistant MQL5 du MetaEditor.

Les classes de base des stratégies de trading sont situées dans le dossier terminal_data_folder\MQL5\Include\Expert\. Les algorithmes prêts des classes de signaux de trading, des classes de gestion des positions ouvertes et des classes de gestion du capital et du risque sont situés dans les sous-répertoires Signal, Trailing et Money. L'assistant MQL5 analyse les fichiers de ces répertoires et les utilise pour générer le code de l'EA.

Cela signifie que les modules de signaux se trouvent (et doivent se trouver, pour être vus par l'assistant MQL5) dans le répertoire terminal_data_folder\MQL5\Include\Expert\Signal.
 
tout a fonctionné, merci, j'ai juste corrigé le code, mais je n'ai pas changé le nom de la classe....
 

Pour une raison quelconque, les nouvelles versions du terminal ne contiennent plus les versions personnalisées des modules du générateur de signaux. Il y a 30 modules dans le dossier /MQL5/Include/Expert/Signal/, mais l'assistant ne voit que 20 modules fournis en standard selon l'aide.

Est-ce que c'est moi ou est-ce que l'éditeur MT5 ne scanne plus le dossier des modules de signaux à la recherche de nouveaux modules ? Même les anciens modules de signaux basés sur des modèles de chandeliers développés par Metaquotes ne sont pas connectés.

 
Livingston:

Pour une raison quelconque, les nouvelles versions du terminal ne contiennent plus les versions personnalisées des modules du générateur de signaux. Il y a 30 modules dans le dossier /MQL5/Include/Expert/Signal/, mais l'assistant ne voit que 20 modules fournis en standard selon l'aide.

Est-ce que c'est moi ou est-ce que l'éditeur MT5 ne scanne plus le dossier avec les modules de signaux pour trouver de nouveaux modules ? Même les anciens modules de signaux basés sur des motifs de chandelier développés par Metaquotes ne sont pas connectés.

Un nouveau module de signaux doit avoir une description de module différente et son type doit être SignalAdvanced.


 
Rosh:

Le nouveau module de signal doit avoir une description différente et son type doit être SignalAdvanced.


Je vous remercie de votre attention.
 
Rosh:

Un nouveau module de signaux doit avoir une description de module différente et son type doit être SignalAdvanced.


Si vous remplacez Signal par SignalAdvanced dans les modules de signaux précédemment écrits, ils ne fonctionnent toujours pas. Les fonctions CheckOpenShort/CheckOpenLong ne sont plus utilisées et sont remplacées par ShortCondition/LongCondition ?

Il n'y a pas de paramètres dans ces fonctions, il n'est donc pas clair comment définir les takeouts et les stops.

int CSignalMA::LongCondition()
  {
   int result=0;
   int idx   =StartIndex();
//--- analyser la relation positionnelle du prix de clôture et de l'indicateur à la première barre analysée
   if(DiffCloseMA(idx)<0.0)
     {
      //--- le prix de clôture est inférieur à l'indicateur
      if(IS_PATTERN_USAGE(1) && DiffOpenMA(idx)>0.0 && DiffMA(idx)>0.0)
        {
         //--- le prix ouvert est au-dessus de l'indicateur (c'est-à-dire qu'il y a eu une intersection), mais l'indicateur est orienté à la hausse
         result=m_pattern_1;
         //--- considère qu'il s'agit d'un "piercing" non formé et propose d'entrer sur le marché au prix actuel
         m_base_price=0.0;
        }
     }
   else
     {
      //--- le prix de clôture est supérieur à l'indicateur (l'indicateur n'a pas d'objection à l'achat)
      if(IS_PATTERN_USAGE(0))
         result=m_pattern_0;
      //--- si le modèle 2 est utilisé
      if(IS_PATTERN_USAGE(2) && DiffMA(idx)>0.0)
        {
         //--- l'indicateur est dirigé vers le haut
         if(DiffOpenMA(idx)<0.0)
           {
            //--- le prix ouvert est inférieur à l'indicateur (c'est-à-dire qu'il y a eu une intersection)
            result=m_pattern_2;
            //--- suggérer d'entrer sur le marché au moment du "roll back"
            m_base_price=m_symbol.NormalizePrice(MA(idx));
           }
         else
           {
            //--- le prix d'ouverture est supérieur à l'indicateur
            if(DiffLowMA(idx)<0.0)
              {
               //--- le prix le plus bas est inférieur à l'indicateur
               result=m_pattern_2;
               //--- considère qu'il s'agit d'un "piercing" formé et suggère d'entrer sur le marché au prix actuel
               m_base_price=0.0;
              }
           }
        }
     }
//--- renvoie le résultat
   return(result);
  }

IS_PATTERN_USAGE() est maintenant utilisé partout dans le module signaux, mais on ne sait pas pourquoi.

En général, nous attendons des informations sur la façon de créer soi-même le module de signaux.

et l'ancien mode de l'assistant Type=Signal sera-t-il disponible ? ou tous les modules seront-ils désormais écrits d'une nouvelle manière ?

 

Chaque modèle de marché se voit attribuer une importance, mesurée de 1 à 100. Plus la valeur est élevée, plus le modèle est solide.

MA avec une pondération de 0,4 et Stochastique avec une pondération de 0,8 - ceci est défini dans les variables externes, et d'où vient MA - sa signification est de 100. La signification stochastique de ce modèle est égale à 80. Où est fixée la signification de chaque modèle ou comment est-elle déterminée ?