Erreurs, bugs, questions - page 2488

 
Igor Makanu:

Je peux me tromper bien sûr, mais il semble qu'il y a 2 mois mon modèle fonctionnait, mais maintenant quand j'appelle le destructeur CList, les objets qui n'ont pas été détruits restent en mémoire, le code :

#property strict
#include <Arrays\List.mqh>
//+------------------------------------------------------------------+
class CData : public CObject
  {
public:
   int               x;
   double            y;
                     CData(){};
                     CData(int ival,double dval){x=ival;y=dval;}
  };
//+------------------------------------------------------------------+
template<typename T>class CDataBase
  {
private:
   CList            *mlist;
   T                Tptr;
public:
   void CDataBase()           { mlist=new CList;                                    }
   void ~CDataBase(void)      { delete mlist;                                       }
   int ArraySize(void)        { return(mlist.Total());                              }
   T operator[](int index)   { return(mlist.GetNodeAtIndex(index));                }
   void  AddValue (T &value)  { Tptr  = value; mlist.Add(Tptr);      }
   string TypeName()          { return(typename(T));                                }
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   CDataBase<CData*>* data=new CDataBase<CData*>;
   int i;
   for(i=0; i<5; i++)
     {
      CData* Tmp = new CData(i,i*2.0);
      data.AddValue(Tmp);
     }

   for(i=0; i<data.ArraySize(); i++)
     {
      Print(i," : ",data[i].x," , ",data[i].y);
     }
   Print(data.TypeName());
   delete data;
  }
//+------------------------------------------------------------------+
 
fxsaber:

Oui, vous avez probablement raison, votre exemple fonctionne correctement, quelque part j'ai mélangé les exemples de test dans mes sources

Merci !

 
Вероника Сорокина:
Bon après-midi. Voici la situation. Mon Expert Advisor mql4/Script/indicateur/quoi que ce soit que j'ai écrit n'est pas attaché à une fenêtre de graphique, je veux qu'il reste attaché à un programme... comme, je vais écrire quelque chose d'utile et je ne veux pas qu'il soit attaché à de nouveaux graphiques ouverts tout le temps. Quelque chose comme un service (de MT5), mais vous en avez besoin sur MT4.

Utiliser les services

 

Est-il possible d'ajouter le code actuel de ME aux favoris du terminal ?



En fait, j'aimerais avoir un onglet "Débogage" distinct où je pourrais ajouter le code qui est en train d'être écrit et testé.

Or, il s'avère que pour un travail pratique, il est nécessaire d'avoir un Terminal séparé, où tout ce qui ne concerne pas les projets en cours est absent.

Le débogage est alors beaucoup plus rapide, car il n'y a pas de confusion avec le reste du code dans le terminal lui-même.

 

Chers développeurs. Veuillez clarifier, la répartition automatique des tampons indicateurs est-elle normale ? Par re-partitionnement, j'entends ce qui suit : le nombre maximum de barres dans la fenêtre, par exemple 5000. La taille du tampon + le taux_total sont remis à 5000 lorsqu'ils atteignent 6439. Le même phénomène se produit lorsque le nombre maximal de barres dans la fenêtre est de 10000. La réinitialisation a lieu à 11439.

Pour cette raison, les indicateurs peuvent se bloquer et afficher des données incorrectes.

Construire 2085. J'ai remarqué ce comportement depuis environ 2000 constructions.

 
Alexey Kozitsyn:

Chers développeurs. Veuillez clarifier, la répartition automatique des tampons indicateurs est-elle normale ? Par re-partitionnement, j'entends ce qui suit : le nombre maximum de barres dans la fenêtre, par exemple 5000. La taille du tampon + le taux_total sont remis à 5000 lorsqu'ils atteignent 6439. Le même phénomène se produit lorsque le nombre maximal de barres dans la fenêtre est de 10000. La réinitialisation a lieu à 11439.

Pour cette raison, les indicateurs peuvent se bloquer et afficher des données incorrectes.

Construire 2085. J'ai remarqué ce comportement depuis environ 2000 builds.

Ce comportement était à l'origine dans cinq.

Donnez un exemple de panne d'indicateur due à la réallocation de la mémoire tampon.

 
Slava:

C'était le comportement de Five depuis le début.

Donnez un exemple de plantage d'indicateur à cause de la redistribution des buffers.

Vous confirmez donc que lorsqu'il y a une accumulation de 1439 barres au-dessus de la norme, le terminal DOIT réinitialiser la taille du tampon à la valeur des barres maximales dans la fenêtre ? Si OUI, cela doit être mentionné dans la documentation. Comme il s'agit d'un comportement imprévu.

En ce qui concerne l'exemple. Je veux dire des développements personnalisés qui fonctionnent avec des numéros de barre. J'ai mémorisé le numéro de barre 6438 et après 2 minutes (M1 TF) les tampons ont été redistribués et je suis sorti du tableau. Il est maintenant clair qu'il s'agit d'un comportement "standard". Veuillez mettre à jour la documentation.

 

Erreur pendant l'exécution :

class A { public:
        virtual void f( int = 0 ) { Print( 1 ); }
};
class B : public A { public:
        virtual void f( int     ) { Print( 2 ); }
};
void OnStart()
{
        B b;
        b.f();
}

Résultat : 1

Attendu : 2 ou (comme dans C++) - erreur de compilation

 
Alexey Kozitsyn:

Veuillez mettre à jour la documentation.

Où la documentation doit-elle être mise à jour ?

L'identifiant sans équivoque d'un bar a toujours été l'heure du bar, et non le numéro du bar.

Si quelqu'un appelait ChartSetSymbolPeriod à votre graphique, vous pourriez facilement détecter un changement dans le nombre de barres. Surprise ?

À propos, il existe un paramètre rates_total dans OnCalculate.

 
Slava:

Oh, à propos, OnCalculate a le paramètre taux_total

Dans OnCalculate, le paramètre rates_total indique également plus que ce qui est configuré dans le terminal.

Raison: