Erreurs, bugs, questions - page 1060

 
server:
Je ne l'ai pas comme ça ! Et je suis sûr que tout peut être arrangé - parce qu'il y a peu de gens comme vous qui en ont besoin.

Mon avis : on n'a jamais trop de données à analyser. Même pour le trader à court terme, il est parfois utile de savoir ce qui se passe en dehors de la journée du jour. Le manque d'informations, notamment celles dont l'importance n'est pas trop évidente, se retourne tôt ou tard contre le commerçant.

Cependant, il arrive que les calculs contradictoires soient trop nombreux pour permettre de prendre une décision. Il semblerait donc qu'il ne soit pas nécessaire de disposer de plus de données. Mais ce n'est pas une question de redondance des données, mais de gestion correcte des données. Avec un surplus d'informations de base, on est capable de faire quelque chose, y compris de l'ignorer, mais avec un manque d'informations, on ne peut pas aller loin et dans la bonne direction.

 
MetaDriver:
2013.09.07 02:39:36 iTester-SL (GBPUSD,M1) 1 objet de type CTestStat quitté
2013.09.07 02:39:36 iTester-SL (GBPUSD,M1) 1 objets non supprimés restants

Fuite de mémoire // Ou problème de compilation.

L'objet a été déclaré comme une variable globale statique. ( !) C'est-à-dire qu'il n'est pas du tout dynamique.

Le problème est apparu après que la partie du code qui utilise cette variable a été déplacée vers un fichier .mqh et déclarée dans ce fichier comme extern (aucune fuite n'avait été détectée auparavant) :

Le programme fonctionne bien.

// J'ai évité le problème en déclarant l'objet dynamique. Maintenant je le crée dans OnInit(), le supprime dans OnDeinit(). Les fuites (messages de fuites) ont cessé.

Merci, allons voir ça.
 

Quelqu'un sait-il quel type d'outil de trading est PROFIT?

 
MetaDriver:

Une grande demande aux personnes présentes sur le forum, de tester OnCalculate() pour les appels en double et le nullage de prev_calculated à chaque tick.

Et postez vos résultats ici (est/sont pas dupliqués).

Testez l'indicateur ici.

Je pense avoir réussi à prendre en compte la duplication des ticks. Pavel Tsatsenko (kPVT) m'a aidé // Merci beaucoup !

Il s'est avéré que ce problème se produit lorsque les demandes de copie ( CopyXXX(...) ) se situent en dehors de la plage du tampon à copier. En particulier, dans l'indicateur, qui est proposé pour le test, il y a une inexactitude qui a pour conséquence de demander plus que les barres rates_total.

La version corrigée est jointe dans le trailer. Elle fonctionne dans mon terminal sans duplication des ticks à tous les réglages du terminal. Les camarades intéressés peuvent le consulter. Si quelqu'un a des doublons, merci de le signaler.

Dossiers :
 
paladin800:

Quelqu'un sait-il quel type d'outil de trading est PROFIT?

il s'agit probablement de transactions qui n'ont pas touché un seul symbole, peut-être une recharge.
 

L'héritage des classes est bogué. Je n'ai pas pu finir un cours depuis 3 jours maintenant parce que les bugs de compilation s'insinuent !

Voici le premier bug :

class CAbstract
{
protected:
   int m_handle;

public:
   CAbstract() : m_handle(INVALID_HANDLE) {}
   int GetHandle() const {return(m_handle);}
};

class CMyObj : CAbstract
{
};

class CHandle : CAbstract
{
protected:
   CMyObj *m_objects[];

public:
   ~CHandle()
   {
      int x;
      // Error: 'CAbstract::GetHandle' - cannot call private member function
      for (x = ArraySize(m_objects)-1; x>-1;x--) Print(m_objects[x].GetHandle());
      
      Print(m_handle);
   }
};


Et voici la deuxième :

class CAbstract
{
protected:
   int m_handle;

public:
   CAbstract() : m_handle(INVALID_HANDLE) {}
   int GetHandle() const {return(m_handle);}
};

class CMyObj : CAbstract
{
};

class CHandle : CMyObj
{
public:
   void Log()
   {
      // Error: 'm_handle' - private member access error
      Print(m_handle);
   }
};

Eh bien, il n'y a pas de députés !

Le numéro du rapport de bogue est #835727.

 
Roffild:

L'héritage des classes est bogué. Je n'ai pas pu finir un cours depuis 3 jours maintenant parce que les bugs de compilation s'insinuent !

Voici le premier bug :


Et voici le second :

Eh bien, il n'y a pas de députés !

Le numéro du rapport de bogue est #835727.

Il y en a un, cependant. Essayez de cette façon :

class CAbstract
{
protected:
   int m_handle;

public:
   CAbstract() : m_handle(INVALID_HANDLE) {}
   int GetHandle() const {return(m_handle);}
};

class CMyObj : public CAbstract   // Наследование по умолчанию приватное. И в С++ и в mql
{
};

class CHandle : CAbstract
{
protected:
   CMyObj *m_objects[];

public:
   ~CHandle()
   {
      int x;
      // Error: 'CAbstract::GetHandle' - cannot call private member function
      for (x = ArraySize(m_objects)-1; x>-1;x--) Print(m_objects[x].GetHandle());
      
      Print(m_handle);
   }
};
L'héritage privé rend tous les membres de la classe héritée privés.
 
MetaDriver:
 // Наследование по умолчанию приватное. И в С++ и в mql

Extrait de l'aide de MQL5 :

class CDerived: public CBaseClass // public наследование можно не указывать, оно по умолчанию
  {
 
Roffild:

Extrait de l'aide de MQL5 :

Celui qui vit selon le livre mourra d'une faute de frappe.

 
// Наследование по умолчанию приватное. И в С++ и в mql
public наследование можно не указывать, оно по умолчанию
Ce n'est pas bon. Si vous avez commencé à copier le C++, vous devez le copier exactement, et dans ce cas, vous trompez les programmeurs respectés. Après tout, c'est la seule différence entre une classe et une structure - l'héritage par défaut.