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

 

borilunad:

Les calculs les plus complexes ne ralentissent pas autant que les fonctions qui vérifient les différentes données de marché nécessaires et les positions ouvertes à chaque tick.

Sainte vérité, MarketInfo est l'un des pires problèmes de test. J'écris généralement en deux blocs pour de tels cas si possible, en faisant des requêtes "réelles" uniquement pour le mode de trading réel. Cela est particulièrement efficace pour les données non mesurées (chez le testeur), par exemple :

int spread;

int init()
{
...

   if(IsTesting())
   {
      spread = MarketInfo(Symbol(),MODE_SPREAD);
   }

...
 
}

int start()
{
...

   if (!IsTesting())
   {
      spread = MarketInfo(Symbol(),MODE_SPREAD);
   }

...
}

Vous pouvez également envoyer en bloc if(!IsTesting()) toutes sortes de RefreshRates(), de requêtes à MODE_BID et MODE_ASK (en les remplaçant par des Bid et Ask rapides), etc.

 
alsu:

Sainte vérité, MarketInfo est l'un des pires problèmes de test. J'écris généralement en deux blocs pour de tels cas si possible, en faisant des requêtes "réelles" uniquement pour le mode de trading réel. Cela est particulièrement efficace pour les données non mesurées (chez le testeur), par exemple :

Vous pouvez également envoyer en bloc if(!IsTesting()) toutes sortes de RefreshRates(), de requêtes à MODE_BID et MODE_ASK (en les remplaçant par des Bid et Ask rapides), etc.

Je ne parle pas de la fonction MarketInfo que j'ai au début de mon démarrage, mais des fonctions qui vérifient divers paramètres du marché et des positions ouvertes qui sont spécifiées dans les conditions nécessaires pour prendre des mesures. En outre, je n'ai pas besoin de MODE_BID et MODE_ASK, car j'utilise toujours Bid et Ask.
 
pako:

Merci beaucoup, Pako ! Comment n'ai-je pas pu deviner, c'est si facile ! Je vais dîner maintenant, faire ce que je peux et vérifier la vitesse du passage.

Et là, je ne comprends pas ce que vous voulez dire. D'où viennent ces chiffres ? Et si vous êtes intéressé par les noms de variables courts, je préfère les courts aux longs. Ou quoi d'autre ? Oui, je viens de remarquer que vous avez ajouté deux parenthèses avant clo et à la fin après clo à ma formule. Ce n'est pas du tout nécessaire, cela perturbe le calcul. Mais merci quand même !

<--- 10 444 = 8 087 > 3 908 c'est dans quelle langue ?

Fait, vérifié, ça a marché, mais le résultat ne m'a pas encore plu, pratiquement pas réduit le temps de la course ! Demain, je vais essayer de faire tout ce que je peux, peut-être qu'alors il y aura une différence.

Mais quoi qu'il en soit, l'essentiel est que grâce à vous, Pako, Aleksey, Victor et d'autres, j'ai appris une autre méthode importante d'écriture de code, pour laquelle je suis extrêmement reconnaissant !

 

J'utilise une fonction dans de tels cas.

Par exemple :

...
if (Request()) Action;

bool Request()
{
 if (A) return(true);
 if (B) return(true);
 if (C) return(true);
 if (D) return(true);
 return(false);
}
 
borilunad:
J'utilise toujours l'offre et la demande.

Alors vous avez besoin de RefreshRates())
 
icas:

J'utilise une fonction dans de tels cas.

Par exemple :

Si je comprends bien, vous avez la possibilité de remplir toutes les conditions, alors que pour moi, une seule condition est suffisante, et même si plusieurs conditions sont remplies, ce qui est peu probable, puisqu'elles sont très différentes, on n'en arrivera pas là, car une condition sera déclenchée. Si je me suis trompé, justifiez-le ! Je suis toujours heureux d'entendre quelque chose de nouveau ! Merci !
 
alsu:

Alors vous avez besoin de RefreshRates())
Oui, j'ai RefreshRates() au début, ou cela ne suffit-il pas ?
 
borilunad:
Oui, j'ai RefreshRates() au début, ou cela ne suffit-il pas ?
Tout dépend du temps que prend le calcul pour s'exécuter. Il peut arriver qu'au cours de cette période, le prix ait été mis à jour, et donc que l'offre et la demande ne soient plus pertinentes. Il est donc préférable d'appeler RefreshRates() en plus avant d'exécuter les transactions (plus précisément, avant le calcul de leur prix).
 
borilunad:
Oui, j'ai RefreshRates() au début de Start, ou cela ne suffit-il pas ?
Il est inutile d'utiliser RefreshRates au début de Start, car Ask et Bid ne sont pas encore devenus obsolètes.
 
alsu:
Tout dépend du temps que prennent les calculs pour s'exécuter. Il peut y avoir une situation où le prix a été mis à jour pendant cette période, et donc l'offre et la demande ne sont plus pertinentes. C'est pourquoi il est préférable d'appeler RefreshRates() en plus avant d'exécuter les transactions (ou plutôt, avant de calculer les prix pour celles-ci).

Donc vous avez besoin de RefreshRates() avant chaque série de conditions ? Parce que je pensais qu'il y avait aussi RefreshRates() dans chaque fonction d'exécution, où elle vérifie les erreurs, pour répéter l'ordre, et c'est suffisant. Ensuite, je vais essayer de mettre plus de RefreshRates() et voir ce qui se passe ! Merci !

Et Pap'e Yozh mes remerciements aussi !