Discussion de l'article "Le MQL5 Wizard : Comment apprendre à un EA à ouvrir des ordres en attente à n’importe quel prix" - page 2

 

Bonjour vladimir,


J'ai bien aimé cet article, est-il possible d'écrire un EA qui n'utilise que les ordres en attente pour ouvrir des trades en utilisant un autre indicateur. par exemple si le prix se déplace dans une direction de 5, il déclenche un achat ou une vente indépendamment.

 
Tafadzwa Nyamwanza :

Bonjour Vladimir,


J'aime bien cet article, est-il possible d'écrire un EA qui utilise seulement les ordres en attente pour ouvrir des trades avec l'utilisation d'un autre indicateur. par exemple si le prix se déplace dans une direction par 5 il déclenche un achat ou une vente indépendamment.

Etes-vous sûr que votre question se rapporte à un article MQL5 Wizard : How to Teach an EA to Open Pending Orders at Any Price (Assistant MQL5 : Comment apprendre à un EA à ouvrir des ordres en attente à n'importe quel prix) ?

 
Hey Vladimir.

Je sais que cet article traite des ordres en attente, mais comment programmez-vous votre EA pour ouvrir un ordre de marché ?

 
Ayanda Mhlauli:
Hey Vladimir.

Je sais que cet article traite des ordres en attente, mais comment programmez-vous votre EA pour ouvrir un ordre de marché ?

input double             Signal_PriceLevel         =0.0;         // Niveau de prix pour exécuter une transaction
 
Ne serait-il pas suffisant d'appeler PriceLevel() directement à l'intérieur du générateur de signaux, pourquoi faut-il passer le pointeur *signal dans le générateur de signaux ?
 

Bonjour @Vladimir Karputov -- c'était un article très instructif, merci pour cela !

Personnellement, je trouve ce framework OOP dans MQL5 assez intéressant pour construire des bots en composant des objets représentant des experts, des signaux, des filtres, des indicateurs, des gestionnaires de risque, et ainsi de suite -- une approche très élégante à mon avis, car elle favorise la réutilisation du code et l'extensibilité sans apparemment sacrifier beaucoup de puissance... cependant, en raison de sa complexité, la courbe d'apprentissage semble assez abrupte.

Quoi qu'il en soit, comme je suis en train de passer exclusivement à MQL5 et que j'ai une bonne expérience des concepts/langages OOP, j'ai vraiment envie de l'adapter à mon propre usage pour prototyper de nouvelles idées de trading et développer des systèmes de trading à l'étude. J'ai étudié et joué avec le code de la bibliothèque et je me demandais si vous recommandiez une approche de meilleure pratique pour ce qui suit :

QUESTION : Comment intégrer un filtre de tendance pour les signaux reçus dans l'expert ?

La bibliothèque inclut la propriété CExpertBase::m_trend_type mais malheureusement elle n'est utilisée nulle part dans les exemples fournis avec la plateforme. Je suis partagé entre deux possibilités de conception... Ajouter un objet objet de filtrage de tendance directement dans ma sous-classe de CExpert (voir l'extrait de code ci-dessous), ce qui pourrait offrir plus de contrôle sur la prise de décisions de trading au niveau de l'expert. Une autre façon de résoudre le problème pourrait consister à jouer avec les filtres de mon objet signal principal et d'une certaine façon calculer la tendance et prendre une décision à l'intérieur de ma sous-classe de CSignalExpert, par exemple à l'intérieur de CSignalWithTrendFilter::Direction(). Je ne sais pas encore exactement quels sont les avantages et les inconvénients d'une méthode par rapport à l'autre, et laquelle me donnera plus de flexibilité pour les besoins de mes futurs projets, c'est-à-dire plus de réutilisation de code sans complications et moins de modifications de mes classes de base.

class CExpertWithTrendFilter : public CExpert
{
protected:
   CExpertSignal    *m_trend;   // travaille en parallèle avec CExpert::m_signal pour filtrer les signaux qu'il génère
// ...
   virtual bool      Processing(void);
   virtual bool      CheckOpen(void);
// ...
};

bool CExpertWithTrendFilter::Processing(void)
{
   CExpertBase::m_trend_type = (ENUM_TYPE_TREND) m_trend.Direction();   // déterminer la tendance actuelle à partir d'un objet spécialisé dérivé de CExpertSignal
   
   m_signal.TrendType(m_trend_type);             // transmet le type/la force de la tendance à m_signal, également sous-classé à partir de CExpertSignal
   m_signal.SetDirection();                      // OPTION #1 >>> calculer la direction du signal, en tenant éventuellement compte de la tendance établie ci-dessus (ou non)

// ...

   if(CheckOpen())                               // OPTION #2 >>> alternativement, le type et la force de la tendance peuvent être vérifiés par un expert avant d'ouvrir une position longue ou courte.
      return(true);

   retun(false);                                 // retour sans aucune opération
}

bool CExpertWithTrendFilter::CheckOpen(void)
{
   if(m_trend_type > TYPE_TREND_FLAT && CheckOpenLong())    // n'autorise l'ouverture d'une position longue que si la direction du filtre de tendance est d'accord
      return(true);
   if(m_trend_type < TYPE_TREND_FLAT && CheckOpenShort())   // n'autorise l'ouverture d'une position courte que si la direction du filtre de tendance est approuvée
      return(true);

   return(false);                                // retour sans aucune opération
}

Merci d'avance pour votre aide et vos recommandations.

 
Je suis passé à mon moteur de trading il y a longtemps Une tentative de développement d'un constructeur d'EA - c'est plus flexible.
An attempt at developing an EA constructor
An attempt at developing an EA constructor
  • www.mql5.com
In this article, I offer my set of trading functions in the form of a ready-made EA. This method allows getting multiple trading strategies by simply adding indicators and changing inputs.
 
Vladimir Karputov #:
Je suis passé à mon moteur de trading il y a longtemps Une tentative de développement d'un constructeur d'EA - c'est plus flexible.

OK, je vois -- je suis en train de lire l'article et je vais jeter un coup d'œil au code joint... en tout cas, j'apprécierais toujours votre commentaire/opinion sur la question ci-dessus si cela ne vous dérange pas. Merci d'avance !

 
Dima Diall # :

OK, je vois -- je suis en train de lire l'article et je vais jeter un coup d'œil au code joint... en tout cas, j'apprécierais toujours votre commentaire/opinion sur la question ci-dessus si cela ne vous dérange pas. Merci d'avance !

CExpertSignal est le passé. Pas de commentaires.

 
Vladimir Karputov #:

CExpertSignal, c'est le passé. Pas de commentaires.

:-)