Logique d'apprentissage - page 9

 

Oui :) J'ai un peu exagéré.

Voici un autre exemple :) mais je doute qu'il fonctionne en MQL, il fonctionnera en C++ :

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

   //...
}
 
Mathemat:

A vendre finalement ?

Bien, bien. Nous avons un opérande logique à l'intérieur, et je l'ai mal lu. Il s'avère que c'est vrai quand

- C'est ça ?

Alors, c'est de la connerie au carré. Le code est illisible :)


Le code est assez lisible. Tu ne devrais pas.
 

Pour éviter d'avoir à déchiffrer ce dont il s'agit (n'importe quel ordre de vente), il serait plus logique d'écrire les identifiants des types d'ordres. Il serait plus court, mais beaucoup plus clair.

En termes de brièveté, oui, c'est une solution, mais pas très fiable. Le développeur ne garantit pas que les valeurs numériques de ces constantes ne changeront jamais.

 
Mathemat:

Pour éviter d'avoir à déchiffrer ce dont il s'agit (n'importe quel ordre de vente), il serait plus logique d'écrire les identifiants des types d'ordres. Il serait plus court, mais beaucoup plus clair.

En termes de brièveté - oui, c'est une solution, mais pas très fiable. Le développeur ne garantit pas que les valeurs numériques de ces constantes ne changeront jamais.


C'est là le problème. Il est possible de créer un code astucieux qui cesse soudainement de fonctionner.
 
TheXpert:

Voici un autre exemple :) mais il est peu probable qu'il fonctionne correctement en MQL, il fonctionnera en C++ :

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

   //...
}
Je ne l'ai pas vérifié, mais je ne l'aurais pas écrit de cette façon moi-même.
 
TheXpert:

Oui :) J'ai un peu exagéré.

Voici un autre exemple :) mais il est peu probable qu'il fonctionne correctement en MQL, il fonctionnera en C++ :


Ce n'est pas de l'optimisation mais de la perversion... Pardon, c'est une perversion...

Une petite tâche sympathique m'est venue à l'esprit : comment échanger des valeurs entre deux variables numériques sans utiliser la troisième. ))

 
Vinin:
Vous pouvez créer un code astucieux qui cesse soudainement de fonctionner.

C'est là tout le problème - ce code n'est pas élégant. C'est plus élégant :

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:

Ce n'est pas de l'optimisation, c'est de la perversion... Excusez-moi...

Je me souviens d'une jolie petite tâche consistant à échanger des valeurs entre deux variables numériques sans utiliser la troisième. ))

Oui :) en quelque sorte.
 
TheXpert:

C'est là tout le problème - ce code n'est pas élégant. Celui-ci est plus élégant :

Oui, c'est ça. Les fonctions corporelles d'une ligne n'ont jamais été annulées, elles sont en fait très utiles.
 
TheXpert:

C'est là tout le problème - ce code n'est pas élégant. Celui-ci est plus élégant :


Je l'aime bien. C'est magnifique.
 
TheXpert:

C'est là tout le problème - ce code n'est pas élégant. C'est plus élégant :



Il suffit de supprimer les paramètres de la fonction pour la rendre plus complexe. Si le paramètre n'est pas défini, il est déterminé à partir de OrderType() de l'ordre, s'il est défini, il est déterminé par le paramètre.

Je m'ennuie ici :))))