Fehler, Irrtümer, Fragen - Seite 1060

 
x100intraday:
Sie sehen. Das Fehlen höherer Zeitrahmen ist für mich unwillkürlich gleichbedeutend mit dem Verdacht: "Die Entwickler verheimlichen mir etwas... "Ist das nicht auch bei jemand anderem so?
Und ich bin sicher, dass alles "verhandelbar" ist - denn es gibt nur wenige Menschen wie Sie, die einen solchen Trick brauchen.
 
server:
Und ich bin sicher, dass sich alles arrangieren lässt, denn es gibt nur wenige Menschen wie Sie, die es brauchen.

Meine Meinung: Man kann nie zu viele Daten für die Analyse haben. Selbst für den kurzfristigen Händler ist es manchmal nützlich zu wissen, was außerhalb des heutigen Tages geschieht. Fehlende Informationen, vor allem solche, deren Bedeutung nicht allzu offensichtlich ist, wenden sich früher oder später gegen den Händler.

Manchmal gibt es jedoch zu viele widersprüchliche Berechnungen, um eine Entscheidung zu treffen, so dass es scheint, dass es keinen Bedarf an weiteren Daten gibt. Es geht aber nicht um Datenredundanz, sondern um die richtige Datenverwaltung. Mit einem Überschuss an Hintergrundinformationen ist man in der Lage, etwas zu tun, auch wenn man es ignoriert, aber mit einem Mangel an Informationen kann man nicht weit und in die richtige Richtung gehen.

 
MetaDriver:
2013.09.07 02:39:36 iTester-SL (GBPUSD,M1) 1 Objekt vom Typ CTestStat übrig
2013.09.07 02:39:36 iTester-SL (GBPUSD,M1) 1 nicht gelöschte Objekte übrig

Speicherleck // Oder Compiler-Fehler.

Das Objekt wurde als statische globale Variable deklariert. (!) Das heißt, sie ist überhaupt nicht dynamisch.

Das Problem trat auf, nachdem der Teil des Codes, der diese Variable verwendet, in eine .mqh-Datei verschoben und in dieser Datei als extern deklariert wurde (vorher wurde kein Leck entdeckt):

Das Programm funktioniert einwandfrei.

// Ich habe das Problem vermieden, indem ich das Objekt als dynamisch deklariert habe. Jetzt erstelle ich sie in OnInit() und lösche sie in OnDeinit(), und die Leckage (Leckagemeldungen) hat aufgehört.

Danke, schauen wir uns das mal an.
 

Weiß jemand, was für ein Handelsinstrument PROFIT ist?

 
MetaDriver:

Eine große Bitte an die Anwesenden im Forum, OnCalculate() auf doppelte Aufrufe und Nulling von prev_calculated bei jedem Tick zu testen.

Und posten Sie Ihre Ergebnisse hier (ist/ist nicht dupliziert).

Testindikator hier.

Ich glaube, ich habe es geschafft, die Verdoppelung von Zecken zu berücksichtigen. Pavel Tsatsenko (kPVT) hat mir geholfen // Vielen Dank!

Es stellte sich heraus, dass dieses Problem auftritt, wenn Kopieraufträge ( CopyXXX(...) ) außerhalb des Bereichs des zu kopierenden Puffers liegen. Insbesondere im Indikator, der zum Testen angeboten wird, gibt es eine Ungenauigkeit, die dazu führt, dass mehr als rates_total Balken angefordert werden.

Die korrigierte Version ist im Anhang beigefügt und funktioniert in meinem Terminal ohne doppelte Ticks bei allen Einstellungen des Terminals. Interessierte Genossinnen und Genossen können es überprüfen. Wenn jemand Duplikate von Zecken hat, bitte melden.

Dateien:
 
paladin800:

Weiß jemand, was für ein Handelsinstrument PROFIT ist?

Höchstwahrscheinlich handelt es sich um Geschäfte, die keines der Symbole getroffen haben, vielleicht eine Aufstockung.
 

Die Klassenvererbung ist fehlerhaft. Ich konnte seit 3 Tagen keinen Kurs mehr beenden, weil sich Kompilierfehler eingeschlichen haben!

Hier ist der erste Fehler:

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);
   }
};


Und hier ist die zweite:

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);
   }
};

Nun, es gibt keine privaten Mitglieder!

Die Nummer des Fehlerberichts ist #835727.

 
Roffild:

Die Klassenvererbung ist fehlerhaft. Ich konnte seit 3 Tagen keinen Kurs mehr beenden, weil sich Kompilierfehler eingeschlichen haben!

Hier ist der erste Fehler:


Und hier ist die zweite:

Nun, es gibt keine privaten Mitglieder!

Die Nummer des Fehlerberichts ist #835727.

Versuchen Sie es doch einmal so:

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);
   }
};
Bei der privaten Vererbung sind alle Mitglieder einer geerbten Klasse privat.
 
MetaDriver:
 // Наследование по умолчанию приватное. И в С++ и в mql

Aus der MQL5-Hilfe:

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

Aus der MQL5-Hilfe:

Wer sich an die Vorschriften hält, wird an einem Tippfehler sterben.