Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1045

 
Alexandr Sokolov:

Sigo obteniendo valores no normalizados después de la normalización - MQL5

Más desfavorable 1e-05, ¿Qué hacer?

DoubleToString(....) le ayudará.

 

¿Hay algún truco para obtener el valor de un elemento de una clase superior


Código:

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

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


Un elemento de la clase B está dentro de la clase A. ¿Cómo puedo obtener el valor de a (de la clase A) desde B?

 
Sergey Likho:

¿Hay algún truco para obtener el valor de un elemento de una clase superior


Código:


Un elemento de la clase B está dentro de la clase A. ¿Cómo se puede obtener el valor de a (de la clase A) estando dentro de B?

La clase B no sabe nada de la clase A.
Tienes que heredar. Entonces puedes llamar al método de la clase padre desde la clase hija. Mejor usar el operador de resolución de contexto ::
 
Sergey Likho:

¿Hay algún truco para obtener el valor de un elemento de una clase superior


Código:


Un elemento de la clase B está dentro de la clase A. ¿Cómo puedo obtener el valor de a (de la clase A) desde 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, avisa:

Me puedes decir como solucionar el problema dellamar al indicador en MT5 windows 10 X64, lo estoy haciendo así:

#resource "\\N-indicadores.ex5"

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

Antes funcionaba sin #recurso, luego empezó a funcionar sólo con #recurso, ahora no funciona nada, se genera el error 4804

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

Sigo obteniendo valores no normalizados después de la normalización - MQL5

Más desfavorable 1e-05, ¿Qué hacer?

Prueba esto:


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

¿Hay algún truco para obtener el valor de un elemento de una clase superior


Código:


Un elemento de la clase B está dentro de la clase A. ¿Cómo puedo obtener el valor de a (de la clase A) dentro de 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

No es así. Se pasa un puntero a un objeto en un método. Mi punto es el siguiente:

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();   
  }
Es decir, se puede obtener un puntero a B desde A y trabajar con él, mientras que B tiene acceso a A
 
Vladimir Simakov:

No es así. Se pasa un puntero a un objeto en un método. Lo que quiero decir es esto:

Es decir, se puede tomar un puntero a B desde A y trabajar con él, y B tiene acceso a A

He visto su código

Pero no es la primera vez que el autor de la pregunta "maneja una hoja de parra" en términos inequívocos - ya respondí a esta pregunta casi en OOP una vez ))))

básicamente sólo necesitaba una descripción del delantero de clase A, pero él es el único que lo sabe))


HH: Estoy pasando una referencia a un objeto; puedes hacer lo que quieras por esa referencia, pero no tiene sentido en general ese código. Normalmente, como has escrito en tu ejemplo, usas un puntero de clase a ti mismo y luego lo usas todo convenientemente

 
He escrito un simple indicador gratuito, pero no puedo añadir una descripción. Lo relleno de acuerdo con todos los requisitos, pulso "guardar" y todo está bien, sin errores. Pero después de la carga de la página, no hay ninguna descripción...
Razón de la queja: