Ошибки, баги, вопросы - страница 1060

 
x100intraday:
 Понимаете. Отсутствие более высоких таймфреймов у меня в голове невольно приравнивается к подозрительному "разработчики чего-то недоговаривают..." У кого-то не так?
У меня не так ! и я уверен что всё "договаривается" - потому как ,таких как вы ,очень мало ,кому нужна такая фишка
 
server:
У меня не так ! и я уверен что всё "договаривается" - потому как ,таких как вы ,очень мало ,кому нужна такая фишка

 Моё мнение: много данных для аналитики не бывает. Даже для краткосрочника порой нелишне бывает знать, что делается за пределами дня сегодняшнего. Недостаток информации, особенно не слишком очевидной по важности, рано или поздно оборачивается против трейдера.

 Впрочем, иногда следует слишком большое количество противоречивых расчётов для принятия решения, поэтому, казалось бы, куда уж больше данных? Но это вопрос не избыточности данных, а правильного ими распоряжения. С избытком исходной информации человек в силах что-то сделать, в том числе и проигнорировать, а вот с недостатком информации далеко и в нужную сторону не уйдёшь.

 
MetaDriver:
2013.09.07 02:39:36    iTester-SL (GBPUSD,M1)    1 object of type CTestStat left
2013.09.07 02:39:36    iTester-SL (GBPUSD,M1)    1 undeleted objects left

Утечка памяти.  //  или глюк компоновщика.

Объект был объявлен как статическая глобальная переменная. (!)  Т.е. вообще не динамический. 

Проблема появилась после выноса части кода, использующего данную переменную, в .mqh файл и объявления её в этом файле как extern (до этого никакой утечки не было):

Программа при этом нормально работает.

// Для себя проблему обошёл объявив объект динамическим. Теперь создаю в OnInit(), в OnDeinit() удаляю.  Утечка (сообщения об утечке) прекратилась.

Спасибо, проверим.
 

Кто-нибудь знает, что это за торговый инструмент такой PROFIT.

 

 
MetaDriver:

Большая просьба к присутствующим на форуме, простестировать  OnCalculate()  на  дублирование вызовов и обнуление prev_calculated на каждом тике.

И выложить свои результаты здесь (есть/нет дублирование).

Тестирующий индикатор здесь.

Кажется удалось разобраться с дублированием тиков.  Помог  Pavel Tsatsenko (kPVT)  // Большое спасибо!

Выяснилось, что сия беда происходит при запросах копирования ( CopyXXX(...) ) за пределами диапазона копируемого буфера. В частности в предложенном для тестирования индикаторе есть неточность, приводящая к запросу более rates_total баров. 

В прицепе поправленная версия.  У меня в терминале работает без дублирования тиков при всех установках терминала. Заинтересованные в теме товарисчи могут проверить. Если у кого-то будут дублирования тиков просьба просигналить.

Файлы:
 
paladin800:

Кто-нибудь знает, что это за торговый инструмент такой PROFIT.

 

скорее всего это сделки которые не попали ни в один символ, может быть пополнение счета. 
 

Наследственность классов забагована. Я уже 3 день не могу закончить класс, потому что баги компиляции лезут!

Вот первый баг:

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


А вот второй:

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

Ну, нет тут private members!

Номер в багрепорта - #835727

 
Roffild:

Наследственность классов забагована. Я уже 3 день не могу закончить класс, потому что баги компиляции лезут!

Вот первый баг:


А вот второй:

Ну, нет тут private members!

Номер в багрепорта - #835727

Есть, однако.   Попробуй так:

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);
   }
};
Приватное наследование делает все члены наследуемого класса приватными. 
 
MetaDriver:
 // Наследование по умолчанию приватное. И в С++ и в mql

Из справки по MQL5:

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

Из справки по MQL5:

Кто живёт по книжке - тот умрёт от опечатки.

Причина обращения: