Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1045

 
Alexandr Sokolov:

У меня после нормализации всё равно выскакивают не нормализованные значения - MQL5

Наиболее неблагоприятное 1е-05, Что делать?

DoubleToString(....)   вам поможет.    

 

Есть какой-то прием как получить значение элемента из более высокого класса


Код:

class B
  {
   int x
   int               GetA()
     { ????  }
  };

class A
  {
   int               a;
   B                 b;
public:
  };


Элемент класса B внутри класса А.   Как можно получить значение а (из класса A) находясь внутри B?

 
Sergey Likho:

Есть какой-то прием как получить значение элемента из более высокого класса


Код:


Элемент класса B внутри класса А.   Как можно получить значение а (из класса A) находясь внутри B?

Класс В ничего не знает про класс А. 
Вам нужно наследоваться. Тогда можно из дочернего класса вызвать метод родительского. Лучше с использованием оператора разрешения контекста ::
 
Sergey Likho:

Есть какой-то прием как получить значение элемента из более высокого класса


Код:


Элемент класса B внутри класса А.   Как можно получить значение а (из класса A) находясь внутри B?

class A;

class B
  {
   A*  ptr;
   int x;
public:
   B(int mX,A* mPtr):ptr(mPtr),x(mX){}
   void  Print() {Alert("From B\na=",ptr.Get(),"\nx=",x);}
  };

class A
  {
   int               a;
   B*                b;
public:
   A(int mA,int mB):a(mA),b(new B(mB,&this)){}
  ~A() {delete b;}
   void   PrintB() {b.Print();}
   void   PrintA() {Alert("From A\na=",a);}
   int    Get()   {return a;}
  };
  
void OnStart(){
   A a(8,10);
   a.PrintA();
   a.PrintB();   
  }
 
Artyom Trishkin:

Подскажите пожалуйста:

Подскажите как решить проблему с вызовом индикатора на МТ5 windows 10 X64, делаю вот таким способом:

#resource "\\Indicators\\MyIndicator.ex5"

handle=iCustom(NULL,0,"::Indicators\\MyIndicator");

Раньше работало и без #resource, потом с #resource только стало работать, сейчас ни чего не получается, пишет ошибку 4804

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • www.mql5.com
В MQL5 существует несколько вариантов вызова индикаторов, и осуществляются они в основном при помощи функций IndicatorCreate() и iCustom(). Причем эти функции лишь возвращают хендл индикатора, и дальнейшая работа с индикаторами ведется именно через него. Так что же такое хендл? Как работать с функциями IndicatorCreate() и iCustom()? И как...
 
Alexandr Sokolov :

У меня после нормализации всё равно выскакивают не нормализованные значения - MQL5

Наиболее неблагоприятное 1е-05, Что делать?

попробуй это:


if (index <= 65 && index> = 55 ) PrintFormat (index, "" , up, "" , down, "" , sum, "%.5f" , minus);
 
Sergey Likho:

Есть какой-то прием как получить значение элемента из более высокого класса


Код:


Элемент класса B внутри класса А.   Как можно получить значение а (из класса A) находясь внутри B?

class A;

class B
{
public:
   int x;
   int               GetA(A &reference) {  return reference.a;} };
//+------------------------------------------------------------------+
class A
{
public:
   int               a;
   B                 b; };
//+------------------------------------------------------------------+
A obj;
void OnStart()
{
   obj.a = 10;
   int result = obj.b.GetA(obj);
   printf("result = %d",result);
}
//+------------------------------------------------------------------+

2020.01.20 20:30:05.534 tst (EURUSD,H1) result = 10

 
Igor Makanu:

2020.01.20 20:30:05.534 tst (EURUSD,H1) result = 10

Не то. Ты передаешь указатель на объект в метод. У меня смысл в следующем:

class A;

class B
  {
   A*  ptr;
   int x;
public:
   B(int mX,A* mPtr):ptr(mPtr),x(mX){}
   void  Print() {Alert("From B\na=",ptr.Get(),"\nx=",x);}
  };

class A
  {
   int               a;
   B                 b;
public:
   A(int mA,int mB):a(mA),b(mB,&this){}
   void   PrintB() {b.Print();}
   void   PrintA() {Alert("From A\na=",a);}
   int    Get()   {return a;}
   B*     GetB() {return &b;}
  };

void OnStart(){
   A a(8,10);
   B* b=a.GetB();
   b.Print();   
  }
То есть, можно получить из А указатель на B и работать уже с ним, при этом B имеет доступ к A
 
Vladimir Simakov:

Не то. Ты передаешь указатель на объект в метод. У меня смысл в следующем:

То есть, можно получить из А указатель на B и работать уже с ним, при этом B имеет доступ к A

я видел Ваш код

но и вопрошающий не первый раз "лепит фиговый листочек" не пойми куда - отвечал ему уже по вопросу почти по ООП когда-то ))))

ему, в принципе, нужно было вообще только форвард описание class A , а что он там лепит в очередной раз одному ему это известно )))


ЗЫ: я ссылку на обьект передаю, по ссылке можно что хошь делать в дальнейшем, но смысла в принципе вообще нет в таком коде, обычно, как Вы пишете в своем примере,  используют указатель класса на самого себя и потом удобно все это использовать

 
Написал простой бесплатный индикатор, но никак не могу добавить описание. Заполняю вроде по всем требованиям, жму "сохранить" - все тип-топ, ошибок не пишет. Но после загрузки странички нет описания...