Questions des débutants MQL5 MT5 MetaTrader 5 - page 1320

 
pivomoe:

Après la mise à niveau vers la version 2981, une erreur a commencé à apparaître dans la ligne

Veuillez indiquer comment remplacer cette ligne.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Particularités de mql5, trucs et astuces

Ilyas, 2021.05.28 18:18

Nous étendons nos séquences d'initialisation "{ ... Dans la prochaine version, il sera possible d'utiliser n'importe quelle expression, et pas seulement des constantes.

A la place de ce changement, il y aura une restriction sur l'utilisation des constantes pour les énumérations (comme pour une expression ordinaire) : si la constante n'appartient pas à l'énumération, l'erreur correspondante sera produite.

L'analyse des codes existants a montré que la séquence de zéro unique "{0}" est souvent utilisée de manière incorrecte.

Par exemple, comme ceci :

MqlTradeRequest request={0};


Une telle notation signifie que la valeur zéro est attribuée au premier champ de la structure et que les autres champs sont mis à zéro.

Pour la ligne de code ci-dessus, selon les nouvelles règles, il y aura une erreur puisque le premier champ a le type ENUM_TRADE_REQUEST_ACTIONS, une énumération qui n'a pas la valeur "0".

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


La manière correcte serait :

MqlTradeRequest request={};

 
Merci.
 
Kira27:

J'écris donc : de quelle classe dois-je hériter pour utiliser ces méthodes de leur bibliothèque standard ?

Qu'est-ce qui ne va pas dans ma question ? ))))

 

Voici le code, qu'est-ce qui ne va pas ?

//+------------------------------------------------------------------+
//|                                            Test_Nasledovania.mqh |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <Object.mqh>
#include <Trade\Trade.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class Test_Nasledovania : public CObject
  {
private:

public:
                     Test_Nasledovania();
                    ~Test_Nasledovania();

   void              test();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
Test_Nasledovania::Test_Nasledovania()
  {

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
Test_Nasledovania::~Test_Nasledovania()
  {
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void      Test_Nasledovania::test()
{
Buy  -- Метод Buy не высвечивается как подключеный
}
//+------------------------------------------------------------------+

Le cours comprend


La classe Test_Nasledovania : public CObject est elle-même une héritière de la classe de base CObject de toute la bibliothèque standard).

 
Kira27:

Voici le code, qu'est-ce qui ne va pas ?

Le cours comprend


La classe Test_Nasledovania : public CObject est elle-même une héritière de la classe de base CObject de toute la bibliothèque standard).

En plus de connecter la classe de trading, vous devez également créer un objet de la classe de trading, puis faire référence aux méthodes de la classe par le biais de l'objet créé.

***
#include <Trade\Trade.mqh>
//---
CTrade         m_trade;                      // object of CTrade class
***
void OnTick()
  {
   m_trade.Buy(***
  }
 
Kira27:

Qu'est-ce qui ne va pas dans ma question ? ))))

Parce que l'aide a tout l'héritage de toutes ces classes écrit noir sur blanc.

 
Vladimir Karputov:

En plus de connecter une classe de trading, vous devez également créer un objet de cette classe de trading et ensuite faire référence aux méthodes de la classe par le biais de l'objet créé.

La question de l'utilisation des méthodes de classe dans les conseillers experts et les scripts concerne bien sûr la création d'objets, mais la question porte sur l'utilisation des méthodes d'une classe de base dans une classe descendante. Pourquoi avons-nous besoin de créer des objets à cet endroit ?

 
Kira27:

Pour ce qui est de l'utilisation des méthodes des classes, dans les conseillers experts et les scripts, il va de soi que nous créons des objets, mais la question porte sur l'utilisation des méthodes d'une classe de base dans une classe descendante. Pourquoi devez-vous créer des objets à cet endroit ?

Vous avez hérité votre classe de CObject:

class Test_Nasledovania : public CObject

Excusez-moi, mais quelles méthodes vous attendiez-vous à voir ?

Документация по MQL5: Стандартная библиотека / Базовый класс CObject
Документация по MQL5: Стандартная библиотека / Базовый класс CObject
  • www.mql5.com
Базовый класс CObject - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Voici un exemple de la façon d'utiliser les méthodes d'une classe de base dans une classe héritée sans utiliser d'objet.

#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

//#include <Object.mqh>
#include <Trade\Trade.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class Test_Nasledovania : public CTrade
  {
private:

public:
                     Test_Nasledovania();
                    ~Test_Nasledovania();

   void              test();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
Test_Nasledovania::Test_Nasledovania()
  {

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
Test_Nasledovania::~Test_Nasledovania()
  {
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void      Test_Nasledovania::test()
{
Buy
}
//+------------------------------------------------------------------+

Je veux donc utiliser toutes les méthodes incluses dans le module

De quelle classe dois-je hériter ma classe, afin de pouvoir utiliser les méthodes de toutes ces classes à l'intérieur de ma classe sans créer d'objets ? si c'est possible))))

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Artyom Trishkin:

Vous avez hérité votre classe de CObject:

Désolé, quelles méthodes vous attendiez-vous à voir ?

Je suis d'accord))), j'ai été stupide))), la classe de base de toutes ces méthodes, ne permet pas d'utiliser les méthodes des classes de ses descendants))).