Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 93
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Las impresiones sólo se pueden insertar dentro de una función, pero no entiendo cómo llamar a esta función para que la impresión o la alerta funcionen. ¿Puedes ayudarme arreglando mi código con tres simples variables? Hago todo como se describe en el artículo, pero el editor no funciona, o falta algo, o algo no se entiende, en cualquier caso, la pared, así que pedí ayuda. Gracias por el SKC.
Está emitiendo d con una alerta.
¿Dónde se calcula?
//| TestASD.mq4 |
//| Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int InputA=1;
input int InputB=3;
class ASD
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
int c(int m_a,int m_b)
{
m_a=a+b; m_b=a-b;
int m_d=m_a+m_b;
d=m_d;
Print(__FUNCTION__);
return(c(m_a,m_b));
}
public:
int a;
int b;
int d;
};
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
ASD ar;
void OnStart()
{
//---
ar.a=InputA;
ar.b=InputB;
Alert("ar.a=",ar.a,"\nar.b=",ar.b,"\nar.d=",ar.d);
}
//+------------------------------------------------------------------+
Dentro de la clase, haga las impresiones a los valores. Y luego mira en el registro lo que se imprimirá al ejecutar el script ;)
Y así también está bien.
clase:
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
int a_s;
int a_d;
int d;
int g ()
{d=a_s+a_d;
return (g());
}
public:
void fg (int a,int b)
{ a_s=a;
a_d=b;
}
void sf ()
{g ();
Alert (d);}
};
el guión
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
Y así también está bien.
clase:
Y así también nada
//| TestASD.mq4 |
//| Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int InputA=1;
input int InputB=3;
class ASD
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
public:
int a;
int b;
int d;
int c(int m_a,int m_b)
{
m_a=a+b; m_b=a-b;
d=m_a+m_b;
Print(__FUNCTION__);
return(d);
}
};
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
ASD ar;
void OnStart()
{
//---
ar.a=InputA;
ar.b=InputB;
Alert("ar.a=",ar.a,"\nar.b=",ar.b,"\nar.d=",ar.d,"\nar.c(",ar.a,",",ar.b,")=",ar.c(ar.a,ar.b));
}
//+------------------------------------------------------------------+
No está claro: ¿qué quieres conseguir?
Yo sí:
1. pasar datos del script a la clase
2. sumar estos datos en la clase
3. pasar la suma de la clase al script
4. desde el script, imprimir la suma de los datos en un monitor o impresora.
¡Todo!
Yo sí:
1. pasar los datos del script a la clase
2. sumar estos datos en la clase
3. pasar la suma de la clase al script
4. Desde el script, emita la suma de los datos a un monitor o impresora.
¡Todos!
Véase el ejemplo anterior
¡Pero tampoco calcula la suma de las variables a+b=d, mientras que yo necesito la suma de d!
No te mostré exactamente lo que debería contar. Te mostré cómo obtener el valor calculado: llama a la función c();
No lo llamaste a ninguna parte, y esperaste a que d se calculara por sí mismo.
Y lo que calcula la función c() depende de ti
No te mostré exactamente lo que debería contar. Te mostré cómo obtener el valor calculado: llama a la función c();
No lo has llamado en ningún sitio, y estabas esperando que d alguna manera se calculara solo.
Y tú debes decidir por ti mismo lo que cuenta la función c().
Conozco y uso cómo crear y llamar a la función en el Asesor Experto. La pregunta es sobre las clases.
No te mostré exactamente lo que debería contar. Te mostré cómo obtener el valor calculado: llama a la función c();
No lo llamaste a ninguna parte, y estabas esperando que d alguna manera se calculara a sí mismo.
Y lo que calcula la función c() depende de ti
Esa es la cuestión, cómo llamar a una función dentro de una clase, es decir, cómo private: public:, cómo pasar datos a una clase y cómo obtener el resultado de la clase. Hasta ahora, esto es todo.
Pero su función tampoco calcula nada.