Lógica de aprendizaje - página 9

 

Sí :) Estaba exagerando un poco.

Aquí hay otro ejemplo :) pero dudo que funcione en MQL, funcionará en C++:

for (int i = OrdersTotal(); i--;)
{
   if (!OrderSelect(i - 1, SELECT_BY_POS)) continue;

   //...
}
 
Mathemat:

¿Se vende después de todo?

Bueno, bueno. Tenemos un operando lógico en el interior, y lo leí mal. Resulta que es cierto cuando

- ¿Es eso?

Bueno, entonces es una mierda al cuadrado. El código es ilegible :)


El código es bastante legible. No deberías.
 

Para no tener que descifrar lo que se quiere decir (cualquier orden de venta), tendría más sentido escribir los identificadores de los tipos de órdenes. Sería más corto, pero mucho más claro.

En términos de brevedad, sí, es una solución, pero no muy fiable. El desarrollador no garantiza que los valores numéricos de estas constantes no cambien nunca.

 
Mathemat:

Para evitar tener que descifrar lo que se quiere decir (cualquier orden de venta), tendría más sentido escribir los identificadores de los tipos de órdenes. Sería más corto, pero mucho más claro.

En términos de brevedad - sí, es una solución, pero no muy fiable. El desarrollador no garantiza que los valores numéricos de esas constantes no cambien nunca.


Ese es el problema. Es posible hacer un código ingenioso que de repente deja de funcionar.
 
TheXpert:

Aquí hay otro ejemplo :) pero es poco probable que funcione correctamente en MQL, funcionará en C++:

for (int i = OrdersTotal(); i--;)
{
   if (!OrderSelect(i - 1, SELECT_BY_POS)) continue;

   //...
}
No lo he comprobado, pero yo no lo escribiría así.
 
TheXpert:

Sí :) Estaba exagerando un poco.

Aquí hay otro ejemplo :) pero es poco probable que funcione correctamente en MQL, funcionará en C++:


Esto no es optimización sino perversión... Perdón, es una perversión...

Se me ocurrió una bonita tarea: cómo intercambiar valores entre dos variables numéricas sin utilizar la tercera. ))

 
Vinin:
Puedes hacer un código ingenioso que de repente deje de funcionar.

Esa es la cuestión: este código no es elegante. Esto es más elegante:

bool IsActiveType(int orderType)
{
   return (type == OP_BUY || type == OP_SELL);
}

bool IsAnySellType(int orderType)
{
   return (type == OP_SELL || type == OP_SELLLIMIT || type == OP_SELLSTOP);
}

{
   if (IsActiveType(OrderType()))
   {
      //...
   }

   if (IsAnySellType(OrderType()))
   {
      //...
   }
}

denis_orlov:

Esto no es optimización, es perverso... Perdóname...

Recuerdo una bonita tarea de cómo intercambiar valores entre dos variables numéricas sin utilizar la tercera. ))

Sí :) más o menos.
 
TheXpert:

Esa es la cuestión: este código no es elegante. Este es más elegante:

Sí, eso es. Las funciones corporales de una línea nunca han sido canceladas, de hecho son muy útiles.
 
TheXpert:

Esa es la cuestión: este código no es elegante. Este es más elegante:


Me gusta. Se ve hermoso.
 
TheXpert:

Esa es la cuestión: este código no es elegante. Esto es más elegante:



Sólo hay que eliminar los parámetros de la función para hacerla más intrincada. Si el parámetro no está establecido, entonces se determina desde OrderType() de la orden, si está establecido, entonces por el parámetro.

Me aburro aquí :)))