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

 
leonerd:

mais est-il possible de déclarer une classe comme classe de base et ensuite, selon les conditions, de la surcharger comme l'une des classes héritées ?

La tâche consiste à garder le même nom de classe dans le code.

Veuillez également indiquer quelle directive utiliser pour définir le testeur.

Est-il possible de procéder de cette manière ?

#include <NewsFilter.mqh>
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
 
Artyom Trishkin:

Merci. Oui, mais ici l'objet news_filter s'avère être indéfini. Il doit être déclaré globalement pour être accessible de n'importe où dans le code. Que faire ?

CNewsFilter       news_filter;
void OnInit()
  {
  }
 
leonerd:

Merci. Oui, mais ici l'objet news_filter s'avère être indéfini. Il doit être déclaré globalement pour être accessible de n'importe où dans le code. Que faire ?

Dans quels cas serait-il indéfini ?

 
Artyom Trishkin:

Dans quels cas sera-t-il indéfini ?

#include <NewsFilter.mqh>

void OnInit()
  {
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
  }
void OnTick()
  {
   news_filter.Check()...
  }
 

Veuillez m'aider à comprendre la logique qui sous-tend l'exécution de cette instruction et l'expression de sa condition.


CTrade         m_trade;

CPositionInfo  m_position;

if(!m_trade.PositionClose(m_position.Ticket()))

S'il ne ferme PAS la position définie par le ticket ?

Il reçoit d'abord un ticket de position -> le programme essaie de fermer la position -> la valeur booléenne renvoyée est inversée.

N'est-ce pas ?

 
odyn:

Veuillez m'aider à comprendre la logique qui sous-tend l'exécution de cette instruction et l'expression de sa condition.


S'il ne ferme PAS la position définie par le ticket ?

Il reçoit d'abord un ticket de position -> le programme essaie de fermer la position -> la valeur booléenne renvoyée est inversée.

N'est-ce pas ?

-> Retourne vrai si la position avec le ticket spécifié est fermée, sinon faux.

La condition est la suivante : Si la position avec le ticket spécifié n'est pas fermée...

 
Сергей Таболин:

-> Retourne vrai si la position avec le ticket spécifié est fermée, sinon faux.

La condition est la suivante : Si la position avec le ticket spécifié n'est pas fermée...

La question est de savoir si le programme essaie de fermer la position ou non.

 
odyn:

La question est de savoir si le programme essaie de fermer la position ou non.

Oui, c'est vrai.

 
Сергей Таболин:

Oui, il l'est.

Merci de votre réponse

 

Veuillez expliquer.

La fonctionOnTradeTransaction.

Doit-il être dans le conseiller expert ?

Si ce n'est pas le cas, dans quels cas faut-il l'inclure dans le code ? et pourquoi ?