Une question pour les experts MQL - page 7

 

Ça marche jusqu'à présent. Une dernière question.

Il y a un autre morceau de code comme celui-ci.

 
if (OrderSymbol() == Symbol() && OrderType() == OP_SELL) {
        switch (OrderMagicNumber()) {
            case 212:  MMMMM = 12;   break;
            case 211:  MMMMM = 11;   break;
            case 210:  MMMMM = 10;   break;
            case 209:  MMMMM = 9;    break;
                                    }

Serait-il correct de le remplacer par -

if (OrderSymbol() == Symbol() && OrderType() == OP_SELL) 
     {     
            if ( OrderMagicNumber()==Magic_212)  MMMMM = 12;   
            if ( OrderMagicNumber()==Magic_211)  MMMMM = 11;   
            if ( OrderMagicNumber()==Magic_210)  MMMMM = 10;   
            if ( OrderMagicNumber()==Magic_209)  MMMMM = 9;    
     }
 
Je regarde vos exercices et je me dis :
- Vous lancez quelques sorciers
- ensuite vous gardez la trace des numéros de magiciens et en fonction du numéro vous assignez la valeur numérique appropriée à la variable MMMMMM

Question : n'est-il pas plus simple d'attribuer cette valeur à un assistant une fois dans l'inite et de l'utiliser ensuite ?
 
Rita:

Ça marche jusqu'à présent. Une dernière question.

Il y a un autre morceau de code comme celui-ci.

Serait-il correct de le remplacer par -


if (OrderSymbol() == Symbol() && OrderType() == OP_SELL) 
     {     
            MMMMM = OrderMagicNumber()-200;   
     }
C'est bien sûr uniquement pour ce cas particulier
 

Merci. pour les réponses.

Non, granit77, - ce n'est pas exactement le cas.

On m'a demandé de corriger l'EE de quelqu'un d'autre (- déplacer les magiciens vers le global). C'est 1800 lignes de code et des algorithmes complexes d'interaction des ordres avec les différents mages.

Je ne peux tout simplement pas prendre le temps d'étudier ces circuits de commande compliqués. Je trouve plus facile de remplacer les magies numériques par des magies "globales" et de fixer ces magies dans quelques fonctions de manière purement mécanique (sans les approfondir).

 
Rita:

Merci. pour les réponses.

Non, granit77, - ce n'est pas exactement le cas.

On m'a demandé de corriger l'EE de quelqu'un d'autre (- déplacer les magiciens vers le global). C'est 1800 lignes de code et des algorithmes complexes d'interaction des ordres avec les différents mages.

Je ne peux tout simplement pas prendre le temps d'étudier ces circuits de commande compliqués. Je trouve plus facile de remplacer les magies numériques par des magies "globales" et de fixer ces magies dans quelques fonctions de manière purement mécanique (sans les approfondir).


Où est passé Leonid ?
 
Il négocie. Il prétend qu'il n'a pas le temps. Il fait du "pognon" d'arbitrage sur l'écart or-argent.
 
Rita:
Il négocie. Il prétend qu'il n'a pas le temps pour ça. Il fait du "pognon" d'arbitrage sur l'écart or-argent.
Eh bien, s'il met l'argent dans le tiroir, fais semblant de croire à l'arbitrage.
 
Oui, - c'est ce que je fais...

--------------------------

Et probablement la dernière question.

Voici cette partie du code :

//double getNextOrderPriceByNum(int TTTT, double DDDD) {

   if (StepSum == FALSE && StepMultiply == FALSE) {

      switch (TTTT) {
      case 101:
         return (DDDD - Step * Point);
      case 102:
         return (DDDD - Step * MathPow(1, 1) * Point);
      case 103:
         return (DDDD - Step * MathPow(1, 2) * Point);
      ... ... ...
         
      }
      return (0);
   }
 

Pour remplacer le boîtier 101-102-103.... avec Magic_101, Magic_102, Magic_103...

Serait-il correct de le faire comme ceci :

   if (StepSum == FALSE && StepMultiply == FALSE) {

switch (TTTT) {
for (i=0; i<k; i++)                           {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
  if (OrderSymbol() == Symbol())                 {
    double Result ;
    if ( OrderMagicNumber()==Magic_101)  Result = (DDDD - Step * Point);   
    if ( OrderMagicNumber()==Magic_102)  Result = (DDDD - Step * MathPow(1, 1) * Point);   
    if ( OrderMagicNumber()==Magic_103)  Result = (DDDD - Step * MathPow(1, 2) * Point); 
                                                    }}}
      return (Result);
                     }
                                                   }
 
Rita:
Oui - c'est ce que je fais...

--------------------------

Pour remplacer 101-102-103.... à Magic_101 - Magic_102 - Magic_103 -...

Serait-il correct de faire ce qui suit :

Faux. Lisez la déclaration de l'interrupteur https://docs.mql4.com/ru/basis/operators/switch
Dans votre exemple, remplacez simplement switch par if

      switch (TTTT) {
      case 101:
         return (DDDD - - Step * Point);
      case 102:
         return (DDDD - Step * MathPow(1, 1) * Point);
      case 103:
         return (DDDD - Step * MathPow(1, 2) * Point);
      }

remplacer par.

      if(TTT==Magic_101) return (DDDD - - Step * Point);
      else if(TTT==Magic_102) return (DDDD - Step * MathPow(1, 1) * Point);
      else if(TTT==Magic_103) return (DDDD - Step * MathPow(1, 2) * Point);
      ... ... ...
 
Merci, abolk, pour cette clarification.