Discusión sobre el artículo "Cómo ser un mejor programador (parte 01): 5 cosas que evitar para convertirse en un programador exitoso de MQL5" - página 2

 

Buen artículo. El concepto de qué hacer y qué no hacer está bien explicado.

Los errores en ejemplos concretos en este caso no reducen el valor del artículo, ya que su tarea es ayudar a la gente a optimizar su estilo de trabajo. Esta tarea está resuelta de forma brillante, todo está escrito de la forma más sencilla y clara posible.

¡Gracias, Omega!

 
fxsaber #:

  • El primer valor de la variable en el bucle es incorrecto.
  • En lugar de un if, hay dos.
  • La comparación de cadenas (carácter) debe ir al final.
  • Las expresiones bool no van entre corchetes.
  • Falta la variable mágica en las funciones de entrada.
  • No se ha creado el objeto de posición.
No vi el error la primera vez hasta que se publicó porque no lo codifiqué en el meta-editor sino sólo mientras lo escribía, pero no es un gran problema porque, por cierto, todos los ejemplos de codificación utilizados sólo deberían haber especificado
 

Interesante...

fxsaber #:

  • El primer valor de la variable en el bucle es incorrecto.
  • En lugar de un if, hay dos ifs.
  • string-comparison (símbolo) debería estar al final.
  • Las expresiones bool no están marcadas con corchetes.
  • Falta una variable mágica en las funciones de entrada.
  • No se crea el objeto de posición.

Convertirse en un buen programador (parte 1): deshacerse de cinco hábitos para ser un mejor programador MQL5

 
Aliaksandr Hryshyn #:

Interesante....


:)
 
Aliaksandr Hryshyn #:

Interesante...

Convertirse en un buen programador (parte 1): deshacerse de cinco hábitos para ser un mejor programador de MQL5.

Esto es trabajar por cuenta propia, los clientes la mayoría de las veces no entienden el código en absoluto, y las malas críticas no son por la calidad del código. Yo lo escribí, el programa no dio beneficios, así que aquí está la crítica.

 

Una lectura obligada para todos (y para el autor del artículo aún más) : 97 cosas que todo programador debe saber

GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitioners.
GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitioners.
  • github.com
Pearls of wisdom for programmers collected from leading practitioners. - GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitio...
 
Fuente:
int CountPosByType(ENUM_POSITION_TYPE type)
  {
   int counter = 0;
   for(int i=PositionsTotal(); i>=0; i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Magic()==MagicNumber && m_position.Symbol()==Symbol() && m_position.PositionType()==type)
            { 
                counter++; 
            }
   return counter;
  }

La variante que funciona más rápido y en mi opinión más claro:

int PositionsByType(ENUM_POSITION_TYPE type)
  {
   int counter = 0;
   for(int i=PositionsTotal()-1; i>=0; i--)
   {
      if(!m_position.SelectByIndex(i))
         return (INVALID_HANDLE);

      if(m_position.PositionType()!=type ||
         m_position.Magic()!=MagicNumber ||
         m_position.Symbol()!=Symbol())
         continue;

      counter++; 
   }
   return counter;
  }

1. el error en la inicialización del bucle es que hay que restar 1 a la cantidad cuando hacemos el backtracking.

2. Si no se puede obtener la posición por el índice de la función de biblioteca, es necesario salir del bucle con un error y, a continuación, si es necesario procesar o repetir la función de nuevo, de lo contrario existe el riesgo de obtener una cantidad no fiable, y todavía se trabaja con las finanzas, y, a veces hay grandes cantidades en la posición, y una cosa tan pequeña puede conducir a una pérdida.

3. Primero debe comprobar las variables bool, después las enumeraciones ENUM y sólo después int, double, string, si la comprobación falla, entonces pase inmediatamente al siguiente elemento del bucle.

Si realiza operaciones de comparación mediante &&, el programa comprobará necesariamente cada condición.

4. El nombre para la función también es importante, se ve mejor PositionsByType, parece una nimiedad, pero cuando vaya a utilizar esta función no necesita ir a la biblioteca y su tabla de contenidos, sino simplemente empezar a escribir el nombre estándar Positions, y tendrá varias opciones para llamar PositionsTotal, PositionsByType.....

5. Es necesario respetar el ancho del código para no utilizar el desplazamiento horizontal, ya que esto reduce enormemente la legibilidad y la velocidad de desarrollo.


 
Se equivoca en esto:
"Si realiza operaciones de comparación con &&, el programa comprobará necesariamente cada condición".
La comparación se realiza por orden hasta el primer falso.
Por cierto, en estas situaciones también puedes tener en cuenta la probabilidad de que no se cumpla la condición.

 
Aliaksandr Hryshyn #:
Se equivoca en esto:
"Si realiza operaciones de comparación mediante &&, el programa comprobará necesariamente cada condición".
La comparación se realiza por orden hasta el primer falso.
Por cierto, en estas situaciones también puedes tener en cuenta la probabilidad de que no se cumpla la condición.

Sí, me has corregido correctamente, la comprobación se realizará hasta el primer false, lo principal es que los tipos de datos pequeños deben ser los primeros.

En el caso de que las condiciones consistan en funciones, la más pequeña debería ser la primera y hasta la más grande desde el punto de vista de recursos consumidos, pero sin romper la lógica del programa....

Utilizo esta técnica en todos mis proyectos, la ganancia de velocidad es notable para un probador en modo optimización.

[Eliminado]  
Vitaly Muzichenko #:

Esto es trabajar por cuenta propia, los clientes la mayoría de las veces no entienden el código en absoluto, y las malas críticas no son por la calidad del código. Tú lo has escrito, el programa no te ha dado beneficios, esa es la crítica.

¿Se lo dices al cliente de antemano, o el dinero es más importante?