Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1045

 
Alexandr Sokolov:

Eu ainda recebo valores não normalizados após a normalização - MQL5

Mais desfavorável 1e-05, O que fazer?

DoubleToString(....) irá lhe ajudar.

 

Existe algum truque para obter o valor de um elemento de uma classe superior


Código:

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

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


Um elemento da classe B está dentro da classe A. Como posso obter o valor de a (da classe A) de dentro da classe B?

 
Sergey Likho:

Há algum truque para obter o valor de um elemento de uma classe superior


Código:


Um elemento da classe B está dentro da classe A. Como você pode obter o valor de a (da classe A) enquanto dentro de B?

A classe B não sabe nada sobre a classe A.
Você precisa herdar. Então você pode chamar o método da classe dos pais a partir da classe da criança. Melhor utilizar o operador de resolução de contexto ::
 
Sergey Likho:

Há algum truque para obter o valor de um elemento de uma classe superior


Código:


Um elemento da classe B está dentro da classe A. Como posso obter o valor de a (da classe A) de dentro da classe 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:

Por favor, informe:

Você pode me dizer como resolver o problema dechamar o indicador nas janelas MT5 10 X64, estou fazendo desta maneira:

#resource "MEU INDICADOR.ex5"

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

Antes funcionava sem #resource, depois só começou a trabalhar com #resource, agora nada funciona, o erro 4804 é gerado

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

Eu ainda recebo valores não normalizados após a normalização - MQL5

Mais desfavorável 1e-05, O que fazer?

Tente isto:


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

Existe algum truque para obter o valor de um elemento de uma classe superior


Código:


Um elemento da classe B está dentro da classe A. Como posso obter o valor de a (da classe A) dentro da classe 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) resultado = 10

 
Igor Makanu:

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

Errado. Você passa um ponteiro para um objeto através de um método. Meu ponto é o seguinte:

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();   
  }
Ou seja, você pode obter um ponteiro para B de A e trabalhar com ele, enquanto B tem acesso a A
 
Vladimir Simakov:

Errado. Você passa um ponteiro para um objeto através de um método. Meu ponto é o seguinte:

Ou seja, você pode levar um ponteiro para B de A e trabalhar com ele, e B tem acesso a A

Eu vi seu código

Mas esta não é a primeira vez que o questionador "lida com uma folha de figo" em termos inequívocos - eu já respondi a esta pergunta quase uma vez no OOP ))))

ele basicamente só precisava de uma descrição da classe A, mas ele é o único que sabe))))


HH: Estou passando uma referência a um objeto; você pode fazer o que quiser por essa referência, mas não há sentido em geral em tal código. Normalmente, como você escreveu em seu exemplo, você usa um ponteiro de classe para si mesmo e depois usa tudo isso convenientemente

 
Eu escrevi um simples indicador gratuito, mas não posso acrescentar uma descrição. Preencho de acordo com todos os requisitos, aperte "salvar" - tudo está bem, sem erros. Mas após o carregamento da página, não há descrição...