Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1335

 
¿Cómo puedo abrir una cuenta?
 
Artyom Trishkin:

No debería haber ninguna diferencia. A mí me parece más bonito: el código está menos cargado de paréntesis y sangrías.

Para una comprobación (if) sí, pero en el código hay dos, y si hay muchas, entonces lógica Si Sí, contingente y nueva iteración del bucle, Si no acción A lógica Si No entonces acción Si no pasa a la siguiente condición Si No. En este caso, el cuerpo del bucle llegará hasta el final.

 
Valeriy Yastremskiy:

Para una comprobación (if) sí, pero hay dos en el código, y si hay muchos, entonces la lógica Si Sí, continuar y una nueva iteración del bucle, de lo contrario la acción Una lógica Si No entonces la acción de lo contrario pasar a la siguiente condición Si No. En este caso, el cuerpo del bucle llegará hasta el final.

No entiendo nada, pero que sea así.

 
Artyom Trishkin:

Lo harán. Lo uso porque quiero :) Esto especifica explícitamente qué métodos de la clase se utilizan.

Si tienes dos clases, una como padre y otra como clase heredada, y tienen dos métodos con el mismo nombre, pero no son virtuales por alguna razón, tienes que especificar explícitamente qué método usar.

Supongamos que la clase padre es CParent y la clase heredada es CInheritedy ambas tienen el método Method().

En este caso, si llamamos a un método Method() de una clase CParent, se llamará explícitamente a un método de la clase CParent - esto no es necesario aquí. Podemos llamar al método con o sin él.

Sillamamos a un métodoMethod() en una clase heredada de CInherited,también se llamará al métodode esa clase, ya que primero buscamos un método perteneciente a la clase desde la que lo llamamos.

Sillamamos a CParent::Method() en una clase CInherited, es el método de la clase padre el que será llamado de esta manera, porque hemos especificado explícitamente un método que pertenece a la clase padre mediante el operador de resolución de contexto.

Pero aún así, yo llamaría al método Method() en la clase CInherited conindicación this - para estar seguro de que se llamará al método de esta (this == "this") clase heredada.

Hay otras explicaciones para usar esto. Tal vez alguien más experimentado en OOP nos pueda decir.

Artem, muchas gracias por una respuesta tan completa, que cambia la actitud hacia la POO para mejor).

 
Ахад Ахмедрв:
¿Cómo puedo abrir una cuenta real?

1. Elija un corredor.
2. Elija una plataforma, MT4 o MT5.
3. Abra una cuenta real con el broker.

 
Artyom Trishkin:

Bueno, sí. Yo soy una de esas "algunas personas", especialmente cuando llamo a una función estándar desde una clase, me aseguro de especificar el contexto global. Sólo porque se me ocurre añadir un método en esa clase con el mismo nombre que la función estándar, para no olvidar nunca lo que hace. Y eso es cuando se necesita :: para llamar a una función estándar, y esto - para llamar a mi método con el mismo nombre.

Artem, ya refuta la segunda parte de la expresión "necesario - no necesario". Es necesario, significa que es necesario. No hay ninguna objeción...

 

Hola

Cómo calcular la distancia en pips desde el precio actual hasta laorden pendiente de límite más cercana. Estoy interesado en un código ya hecho.


 
Valeriy Yastremskiy:

Para una comprobación (if) sí, pero hay dos en el código, y si hay muchos, entonces la lógica Si Sí, continuar y una nueva iteración del bucle, de lo contrario la acción Una lógica Si No entonces la acción de lo contrario pasar a la siguiente condición Si No. En este caso, el cuerpo del bucle llegará hasta el final.

Para mí, la opción preferida es

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i == a && b == 7)
   {
    Print(b);
   }
  // если условие if(i == a) НЕ выполнено, следующая итерация………
 }

o esto

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i == a)
   {
    if(b == 7)
     Print(b);
   }
  // если условие if(i == a) НЕ выполнено, следующая итерация………
 }

Otra variante

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i != a)
   continue; // если условие if(i != a) выполнено, следующая итерация………
    if(b == 7)
     Print(b);
 }

La otra variante está al borde de la idiotez.

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i != a)
   continue; // если условие if(i != a) выполнено, следующая итерация………
    if(b != 7)
     continue;
     
  Print(b);
 }

Pero esto es cuestión de gustos. El que quiera.

Según tengo entendido, esta forma se utilizaba cuando el operador if comprobaba TODAS las condiciones desde el principio hasta el final. Se justifica por el hecho de que si no se cumple la primera condición, no tendrá que comprobar las siguientes. Ahora no se comprueban todas las condiciones posteriores a la que no se ha cumplido. Y las escaleras de tal condición ya no son necesarias, sólo queda la costumbre.

 
Alexey Viktorov:

Artyom, esto ya refuta la segunda parte de la expresión "debería-no". Si tengo que hacerlo, tengo que hacerlo. Ninguna objeción...

Con la advertencia: si lo hago.
 
Hola, el probador de estrategias muestra un 44% de calidad en el historial, ¿cómo lo arreglo? Buscando en el foro no encontré nada, también busqué información en la ayuda, tampoco hay nada.
Razón de la queja: