Errori, bug, domande - pagina 1060

 
x100intraday:
Vedete. La mancanza di tempi più alti nella mia mente equivale involontariamente a un sospetto"gli sviluppatori non mi stanno dicendo qualcosa... "Non è così per qualcun altro?
Io non ce l'ho così! E sono sicuro che tutto si "negozia" - perché ci sono poche persone come te che hanno bisogno di un tale trucco
 
server:
Io non ce l'ho così! E sono sicuro che tutto si può organizzare - perché ci sono poche persone come te che ne hanno bisogno.

La mia opinione: non si hanno mai troppi dati per l'analisi. Anche per il trader a breve termine è a volte utile sapere cosa si sta facendo al di fuori della giornata di oggi. La mancanza di informazioni, soprattutto non troppo evidenti per importanza, prima o poi si ritorce contro il trader.

Tuttavia, a volte ci sono troppi calcoli contraddittori per prendere una decisione, quindi sembrerebbe che non ci sia bisogno di più dati. Ma non è una questione di ridondanza di dati, ma di corretta gestione dei dati. Con un surplus di informazioni di base si è in grado di fare qualcosa, compreso ignorare, ma con una mancanza di informazioni non si può andare lontano e nella giusta direzione.

 
MetaDriver:
2013.09.07 02:39:36 iTester-SL (GBPUSD,M1) 1 oggetto di tipo CTestStat lasciato
2013.09.07 02:39:36 iTester-SL (GBPUSD,M1) 1 oggetti non cancellati rimasti

Perdita di memoria // O errore del compilatore.

L'oggetto è stato dichiarato come variabile globale statica. (!) Cioè, non è affatto dinamico.

Il problema si è verificato dopo che la parte di codice che utilizza questa variabile è stata spostata in un file .mqh e dichiarata in questo file come extern (prima non era stata rilevata alcuna perdita):

Il programma funziona bene.

// Ho evitato il problema dichiarando l'oggetto dinamico. Ora lo creo in OnInit(), lo cancello in OnDeinit(). La perdita (messaggi di perdita) si è fermata.

Grazie, controlliamo.
 

Qualcuno sa che tipo di strumento di trading è PROFIT?

 
MetaDriver:

Una grande richiesta ai presenti al forum, per testare OnCalculate() per le chiamate duplicate e la nullità di prev_calculate su ogni tick.

E pubblica qui i tuoi risultati (è/non è duplicato).

Prova l'indicatore qui.

Penso di essere riuscito a considerare la duplicazione delle zecche. Pavel Tsatsenko (kPVT) mi ha aiutato // Grazie mille!

Si è scoperto che questo problema si verifica quando si copiano richieste ( CopyXXX(...) ) al di fuori dell'intervallo del buffer da copiare. In particolare, nell'indicatore, che viene offerto per il test, c'è un'imprecisione che risulta nel richiedere più barre di rates_total.

La versione corretta è allegata nel rimorchio. Funziona nel mio terminale senza duplicazione di tick a tutte le impostazioni del terminale. I compagni interessati possono controllare. Se qualcuno ha dei duplicati di tick, per favore segnali.

File:
 
paladin800:

Qualcuno sa che tipo di strumento di trading è PROFIT?

molto probabilmente si tratta di trade che non hanno colpito nessuno dei simboli, forse un top-up.
 

L'ereditarietà delle classi è buggata. Sono 3 giorni che non riesco a finire una lezione perché i bug di compilazione si stanno insinuando!

Ecco il primo 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);
   }
};


Ed ecco il secondo:

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

Beh, non ci sono membri privati!

Il numero di segnalazione del bug è #835727.

 
Roffild:

L'ereditarietà delle classi è buggata. Sono 3 giorni che non riesco a finire una lezione perché i bug di compilazione si stanno insinuando!

Ecco il primo bug:


Ed ecco il secondo:

Beh, non ci sono membri privati!

Il numero di segnalazione del bug è #835727.

Però c'è, provate così:

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'ereditarietà privata rende privati tutti i membri di una classe ereditata.
 
MetaDriver:
 // Наследование по умолчанию приватное. И в С++ и в mql

Dalla guida di MQL5:

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

Dalla guida di MQL5:

Chi vive secondo le regole morirà per un errore di battitura.