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

 
_Konstantin_:

Пробую его переопределить, но получаю ошибку call non-const method for constant object т.к. в константном методе нельзя использовать не константные. Подскажите выход, а то не могу чего то сам додумать как правильно переопределить виртуальный константный метод.

Выход - не использовать в const методе не const методы. И перепрыгуть это никак нельзя.
 
A100:
Выход - не использовать в const методе не const методы. И перепрыгуть это никак нельзя.

Так вот в том то и дело, что MQ  на протяжении нескольких лет не хотят менять виртуальный метод Compare, который предназначен для использования в созданном механизме сортировки, а без его переопределения этот механизм просто не работает. В итоге приходится создавать свои собственные механизмы сортировки не используя задуманный MQ механизм.

Свой механизм сортировки я создал еще с самого начала введения в MQL4 ООП и по наивности думал, что этот момент в MQL5 уже исправлен, но как оказалось заблуждался :)

 
_Konstantin_:

Так вот в том то и дело, что MQ  на протяжении нескольких лет не хотят менять виртуальный метод Compare, который предназначен для использования в созданном механизме сортировки, а без его переопределения этот механизм просто не работает. В итоге приходится создавать свои собственные механизмы сортировки не используя задуманный MQ механизм.

Свой механизм сортировки я создал еще с самого начала введения в MQL4 ООП и по наивности думал, что этот момент в MQL5 уже исправлен, но как оказалось заблуждался :)

Модификатор const религия не позволяет использовать?

class IntObject : public CObject
{
public:
   int Value;
   virtual int Compare(const CObject *node,const int mode=0) const
   {
      const IntObject* intObj = node;
      if(intObj.Value < Value)return MORE;
      else if(intObj.Value > Value)return LESS;
      return EQUAL;
   }
   IntObject();
   IntObject(int value){Value=value;}
};
 
C-4:

Модификатор const религия не позволяет использовать?

У него другого типа ошибка (call non-const method for constant object)

#define NO_CONST
class IntObject : public CObject {
public:
   virtual int f(const CObject *node ) NO_CONST { return 0; }
   virtual int Compare(const CObject *node,const int mode=0) const { return f( node ); }
};
Ее нельзя преодолеть из фундаментальных соображений
 
A100:

У него другого типа ошибка (call non-const method for constant object)

Ее нельзя преодолеть из фундаментальных соображений
Как же нельзя!? Достаточно вызываемый метод в constant object сделать константным.
 
C-4:
Как же нельзя!? Достаточно вызываемый метод в constant object сделать константным.
f() можно сделать const только если она допускает это
class IntObject : public CObject { public:
        int i;
   virtual int f(const CObject *node ) const { return i = 0; } //ошибка
};
 

Возник один вопросик, может кто-то что-то подскажет!?

Создаю оффлайн график синтетика 1/EURUSD,GBPUSD а так же задаю в эквити EURUSD-1 GBPUSD+1

получаются идентичные линии графика и индикатора, практически без отличий https://charts.mql5.com/7/422/synthetic-m15-alpari-limited-6.png

И создаю второй оффлайн график синтетика EURUSD,1/GBPUSD а так же задаю в эквити EURUSD+1 GBPUSD-1

получаются НЕ идентичные линии графика и индикатора https://charts.mql5.com/7/422/synthetic-m15-alpari-limited-5.png

Есть предположение, что вероятнее всего дело в том что евро-доллар сейчас вблизи паритета поэтому его переворот с помощью 1/1.08 дает минимальное искажение, а фунт-доллар дальше паритета поэтому 1/1,48 дает искажение побольше.

Подскажите, как будет правильнее производить реверс инструмента?

 

Раньше было все нормально, а сейчас не могу в индикаторе эквити (прикрепил) в параметр Symbol_Side_A задать строку из 28 инструментов:

EURGBP-0.1 EURUSD-0.1 GBPUSD-0.1 EURCHF-0.1 EURCAD-0.1 EURAUD-0.1 EURNZD-0.1 EURJPY-0.1 AUDUSD-0.1 NZDUSD-0.1 USDCAD-0.1 USDCHF-0.1 USDJPY-0.1 GBPAUD-0.1 GBPCAD-0.1 GBPJPY-0.1 GBPCHF-0.1 NZDJPY-0.1 AUDJPY-0.1 CADJPY-0.1 CHFJPY-0.1 AUDCAD-0.1 NZDCAD-0.1 AUDCHF-0.1 AUDNZD-0.1 CADCHF-0.1 NZDCHF-0.1 GBPNZD-0.1

Часть данных почему то обрезается и при этом в этой строке данные не отображаются. Отображаются только когда активирую строку Symbol_Side_A. В чем может быть проблема? Подскажите пожалуйста.

Терминал MT4-765. АЛЬПАРИ и РВД проблема есть, а в GKFX все ОК! Странно!

Файлы:
 

Неужели так сложно сделать на форуме, что бы имена загружаемых файлов не менялись? Как на нормальных форумах!

Загрузил выше индикатор EquityHedgeGraph2(v670). Так почему название исковеркалось?

 
Нельзя комментировать внутри списка параметров #define
#define MACRO( X/*комментарий*/ )       (X) //ошибка компиляции
а бывает нужно, особенно если несколько параметров
Причина обращения: