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

 
odyn:

Salut les connaisseurs !

Voici le code :

struct STRUCT_POSITION {\...\}

STRUCT_POSITION SPosition[] ;

Question :

Qu'est-ce que STRUCT_POSITION SPosition[] ; ? S'il s'agit de créer une instance de la structure, pourquoi s'agit-il d'un tableau dynamique? Est-il vraiment possible de le faire ? Pourquoi ?


Je vous serai très reconnaissant de votre réponse.

Déclarer une structure STRUCT_POSITION {\...\}, c'est la création d'un type de données défini par l'utilisateur. Et STRUCT_POSITION SPosition[] ; est la déclaration d'une variable de type utilisateur. Le fait que la variable soit un tableau est indiqué par des crochets [] Vous pouvez déclarer plusieurs variables du type personnalisé comme tout autre type.

double a, b[];

STRUCT_POSITION Pos, SPosition[];// при условии, что структура уже создана.
Dans cette entrée, type, variable,tableau
 
Bonjour à tous, heure du jour.
Sur l'un de mes appareils androïdes, MT5 ne fonctionne plus.
Il a juste cessé de fonctionner. Je n'ai rien changé, je n'ai rien configuré.
Cela ressemble à la capture d'écran.
J'ai Internet, tout le reste fonctionne.
Désolé si je suis au mauvais endroit.
Dossiers :
 

Existe-t-il un utilitaire (comme WatchDog) pour redémarrer MT5.


Supposons que MT5 soit fermé en raison d'une erreur. Comment puis-je le tracer à distance immédiatement et redémarrer MT5.

J'utilise MT4bar pour MT4. Besoin de quelque chose de similaire pour MT5.

 

Bon après-midi.

J'essaie de créer une classe de base universelle pour toujours définir et appeler un objet de la même classe.

Et je fais deux solutions pour tester les nouvelles. J'ai une classe de base CNewsFilter et deux classes héritées CNewsFilterLive et CNewsFilterTester. Je veux définir un objet CNewsFilter dans mon code. Et il sélectionnera automatiquement une classe en fonction du mode en cours. Mais quelque chose ne fonctionne pas. Voici une classe de base, je n'ai laissé que la méthode Init() pour l'exemple.

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilter
  {
protected:
   //---
public:
                     CNewsFilter(void);
                    ~CNewsFilter(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilter::Init(string symbol_name,int magic_number)
  {
   return true;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif

Une classe héritée :

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilterTester : public CNewsFilter
  {
protected:
public:
                     CNewsFilterTester(void);
                    ~CNewsFilterTester(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::CNewsFilterTester() :  m_delimiter('\t')
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::~CNewsFilterTester(void)
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilterTester::Init(string symbol_name,int magic_number)
  {
   // some code
   return true;
  }

Et ensuite je l'appelle dans mon code EA :

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

Lors du débogage, il n'entre jamais dans la classe héritée CNewsFilterTester, qui devrait y entrer selon la directive de la classe de base, que j'ai ajoutée à la fin du code de la classe de base. __MQL5__ est ici uniquement à titre d'exemple. Comment le faire avec le testeur est une autre question. Jusqu'à présent, l'idée elle-même ne fonctionne pas - les méthodes de la classe héritée ne sont pas appelées. Lorsque Init() est appelé, il ne va pas à Init() de la classe héritée - dans cet exemple CNewsFilterTester. Aidez-nous, s'il vous plaît.

#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif
 
leonerd:

Bon après-midi.

J'essaie de créer une classe de base universelle pour toujours définir et appeler un objet de la même classe.

Et je fais deux solutions pour tester les nouvelles. J'ai une classe de base CNewsFilter et deux classes héritées CNewsFilterLive et CNewsFilterTester. Je veux définir un objet CNewsFilter dans mon code. Et il sélectionnera automatiquement une classe en fonction du mode en cours. Mais quelque chose ne fonctionne pas. Voici une classe de base, je n'ai laissé que la méthode Init() pour l'exemple.

Une classe héritée :

Et ensuite je l'appelle dans mon code EA :

Lors du débogage, il n'entre jamais dans la classe héritée CNewsFilterTester, qui devrait y entrer selon la directive de la classe de base, que j'ai ajoutée à la fin du code de la classe de base. __MQL5__ est ici uniquement à titre d'exemple. Comment le faire avec le testeur est une autre question. Jusqu'à présent, l'idée elle-même ne fonctionne pas - les méthodes de la classe héritée ne sont pas appelées. Lorsque Init() est appelé, il ne va pas à Init() de la classe héritée - dans cet exemple CNewsFilterTester. Aidez-moi, s'il vous plaît.

Ici

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

vous créez un objet de classe de base. En conséquence - vous avez une classe de base partout.

 

Comment rédiger correctement une condition :

comme ceci

if(((MASlowHandle - PBid) > 0.0002) && ((MASlowHandle - MAFastHandle) > 0.0002))

ou comme ça :

if((MASlowHandle - PBid) > 0.0002 && (MASlowHandle - MAFastHandle) > 0.0002)

? ?

 
odyn:

Comment rédiger correctement une condition :

comme ceci

ou comme ça :

? ?

Cela n'a pas vraiment d'importance. Vous pouvez même l'écrire comme ça.

if(MASlowHandle - PBid > 0.0002 && MASlowHandle - MAFastHandle > 0.0002)

Les opérations arithmétiques ont la priorité sur les opérations logiques.

Mais s'il y a à la fois && et || dans la condition, il est préférable de les séparer par des parenthèses pour faciliter la compréhension.

 
Alexey Viktorov:

Ce n'est pas une question de principe. Vous pouvez même le dire de cette façon

La priorité de l'arithmétique est plus élevée que celle de la logique.

Mais si la condition comporte à la fois && et ||, il est préférable de la diviser par des parenthèses pour en faciliter la compréhension.

Merci pour la réponse !

 

Quelle est la raison pour laquelle je ne peux pas publier le code ?

Je reçois toujours un message :

Examen du code terminé avec des erreurs:
Erreurs détectées lors de la vérification des codes Rapport en temps réel des statistiques de trading.
https://www.mql5.com/en/code/28074/230766

Mais je ne comprends pas la raison de l'erreur de publication du code.

Veuillez me répondre à ce sujet.

Quel est le problème, il faut au moins le souligner.

 
jaffer wilson:

Quelle est la raison pour laquelle je ne peux pas publier le code ?

Je reçois toujours un message :

Lavérification du code est terminée avec des erreurs:
Erreurs détectées lors de la vérification du code Statistiques de trading Rapport en temps réel.
https://www.mql5.com/en/code/28074/230766

Mais je ne comprends pas la raison de l'erreur de publication du code.

Veuillez me répondre à ce sujet.

Quel est le problème, il faut au moins le souligner.

Où est la question ? Quelles sont exactement les erreurs ? Désolé, tous les télépathes sont en vacances.

Cliquez sur