Est-il possible d'éviter de nombreux "ou" (||) dans les conditions entraînant la même action ?

 

Aucun des opérateurs ne convient. Existe-t-il un autre moyen sans if(A || B || C || D || E) Action; ?

Je demande aux modérateurs de ne pas envoyer dans le fil des questions générales en raison de l'importance de la question à laquelle je réfléchis et ne trouve pas de solution plus rationnelle ! Merci !

 

peuvent simplement être dans des variables booléennes, par exemple

X=A || B ;

X=X || C || D ;

X=X || E ;

si (X) Action ;

 
Avals:

peuvent simplement être dans des variables booléennes, par exemple

X=A || B ;

X=X || C || D ;

X=X || E ;

si (X) Action ;

Merci pour vos commentaires ! Et ces bools peuvent être assez complexes, impliquant de nombreux paramètres dépendant de conditions de marché en constante évolution ?
 
borilunad:
Merci pour vos commentaires ! Et ces bools peuvent être assez complexes, en fonction de conditions de marché en constante évolution ?


bien sûr

 
Avals:


bien sûr

Merci encore ! Je vais l'essayer maintenant !

J'ai regardé dans le Dock et j'ai vu :

bool a = true;
bool b = false;
bool c = 1;

а = (isCloseLastPosByTake() == True && Profit > ProClo / clo - GetProfitCloseLastPosByTake() * clo);
Peut-on donner cette valeur à un booléen a ?

 
borilunad:

Merci encore ! Je vais l'essayer maintenant !

J'ai regardé dans le Dock et j'ai vu :


Vous pouvez, mais la vitesse diminue beaucoup.
 
Vinin:

Vous pouvez, mais la vitesse diminuera de façon drastique.
La vitesse n'est-elle pas affectée par le "ou" dans if() ?
 
borilunad:
La vitesse n'est-elle pas affectée par le "ou" dans if() ?

Bien sûr qu'ils le font. Vous devez le vérifier.
 
Vinin:

Bien sûr qu'ils le font. Il faut le vérifier.
Mais si vous ne pouvez pas trouver quelque chose de rapide, alors je m'en tiendrai à if() ! J'ai déjà réduit considérablement les ralentissements en supprimant les contrôles inutiles pour moi dans toutes les fonctions. Merci beaucoup pour votre attention ! Je serai heureux d'apprendre et de vérifier toutes les options possibles !
 

Vous pouvez également optimiser les calculs de cette manière :

    bool M = false;

    if (A) M = true; else if (B) M = true; else if (C) M = true; else if (D) M = true; else if (E) M = true;
    if (M) Action;
 

Ou comme ça :

    bool M = true;

    if (!A) if (!B) if (!C) if (!D) if (!E) M = false;
    if (M) Action;