Eine Frage an MQL-Experten - Seite 7

 

Bis jetzt funktioniert es. Eine weitere Frage.

Es gibt noch ein weiteres Stück Code wie dieses.

 
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;
                                    }

Wäre es richtig, sie durch - zu ersetzen?

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;    
     }
 
Ich schaue mir Ihre Übungen an und denke mir:
- Du startest ein paar Assistenten
- dann verfolgen Sie die Nummern der Zauberer, und je nach Nummer weisen Sie der Variablen MMMMMM den entsprechenden numerischen Wert zu

Frage: Ist es nicht einfacher, diesen Wert einem Assistenten einmal in der Inite zuzuweisen und ihn dann zu verwenden?
 
Rita:

Bis jetzt funktioniert es. Eine weitere Frage.

Es gibt noch ein weiteres Stück Code wie dieses.

Wäre es richtig, sie durch - zu ersetzen?


if (OrderSymbol() == Symbol() && OrderType() == OP_SELL) 
     {     
            MMMMM = OrderMagicNumber()-200;   
     }
Dies gilt natürlich nur für diesen speziellen Fall
 

Ich danke Ihnen. für die Antworten.

Nein, granit77, - das ist nicht der Fall.

Ich wurde gebeten, den EA eines anderen Unternehmens zu verbessern (- die Magier in den globalen Bereich zu verschieben). Es handelt sich um 1800 Zeilen Code und komplexe Algorithmen zur Interaktion von Aufträgen mit verschiedenen Magiern.

Ich kann mir einfach nicht die Zeit nehmen, diese komplizierten Steuerkreise zu studieren. Ich finde es einfacher, digitale Magie durch "globale" Magie zu ersetzen und diese Magie in einigen wenigen Funktionen auf rein mechanische Weise zu fixieren (ohne tief in sie einzudringen).

 
Rita:

Ich danke Ihnen. für die Antworten.

Nein, granit77, - das ist nicht der Fall.

Ich wurde gebeten, den EA eines anderen Unternehmens zu verbessern (- die Magier in den globalen Bereich zu verschieben). Es handelt sich um 1800 Zeilen Code und komplexe Algorithmen zur Interaktion von Aufträgen mit verschiedenen Magiern.

Ich kann mir einfach nicht die Zeit nehmen, diese komplizierten Steuerkreise zu studieren. Ich finde es einfacher, digitale Magie durch "globale" Magie zu ersetzen und diese Magie in einigen wenigen Funktionen auf rein mechanische Weise zu fixieren (ohne tief in sie einzudringen).


Wo ist Leonid geblieben?
 
Er handelt. Er tut so, als hätte er keine Zeit dafür. Er macht Arbitrage-Geld mit dem Gold-Silber-Spread.
 
Rita:
Er handelt. Er tut so, als hätte er keine Zeit. Er macht Arbitrage-Geld mit dem Gold-Silber-Spread.
Nun, wenn er das Geld in die Schublade legt, tun Sie so, als würden Sie an Arbitrage glauben.
 
Ja, - das tue ich...

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

Und wahrscheinlich die letzte Frage.

Hier ist dieser Teil des Codes:

//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);
   }
 

Zum Ersetzen der Fälle 101-102-103.... mit Magic_101, Magic_102, Magic_103...

Wäre es richtig, dies so zu tun?

   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:
Ja - genau das tue ich...

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

Zu ersetzen 101-102-103.... zu Magic_101 - Magic_102 - Magic_103 -...

Wäre es richtig, wie folgt vorzugehen?

falsch. lesen sie über die switch-anweisung https://docs.mql4.com/ru/basis/operators/switch
In Ihrem Beispiel ersetzen Sie einfach switch durch 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);
      }

ersetzen durch.

      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);
      ... ... ...
 
Danke, abolk, für die Klarstellung.