MQLエキスパートへの質問 - ページ 7

 

今のところうまくいっています。もう1つ質問です。

もう一つ、こんなコードもあります。

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

と置き換えるのが正しいでしょうか。

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;    
     }
 
皆さんのエクササイズを見ていて思うことがあります。
- あなたは、いくつかのウィザードを開始します。
- そして、マジシャンの番号を記録し、その番号に応じて適切な数値をMMMMM変数に代入します。

質問:この値をイナイレで一旦ウィザードに割り当ててから使う方が簡単ではないでしょうか?
 
Rita:

今のところうまくいっています。もう1つ質問です。

もう一つ、こんなコードもあります。

と置き換えるのが正しいでしょうか。


if (OrderSymbol() == Symbol() && OrderType() == OP_SELL) 
     {     
            MMMMM = OrderMagicNumber()-200;   
     }
もちろん、この特定のケースに限った話ですが
 

ありがとうございます。をご覧ください。

いや、 granit77 さん、-それはちょっと違うんです。

他人のEAのフィックス・リファイン(~マジックをグローバルに移動すること)を依頼されたことがある。1800行のコードと、異なる魔導師とのオーダーの相互作用の複雑なアルゴリズムです。

このような複雑な制御回路を勉強する時間は、物理的に取れないのです。デジタルマジックを「グローバル」なものに置き換えて、そのマジックを純粋に機械的に(深く考えずに)いくつかの機能で固定する方が簡単だと思います。

 
Rita:

ありがとうございます。をご覧ください。

いや、 granit77 さん、-それはちょっと違うんです。

他人のEAのフィックス・リファイン(~マジックをグローバルに移動すること)を依頼されたことがある。1800行のコードと、異なる魔導師とのオーダーの相互作用の複雑なアルゴリズムです。

このような複雑な制御回路を勉強する時間は、物理的に取れないのです。デジタルマジックを「グローバル」なものに置き換えて、そのマジックを純粋に機械的に(深く考えずに)いくつかの機能で固定する方が簡単だと思います。


レオニードはどこに行ったんだ?
 
取引している。時間がないように見せかけて金と銀のスプレッドで裁定取引「ドー」を稼いでいるのだ。
 
Rita:
取引している。時間がないように見せかけて金と銀のスプレッドで裁定取引「ドー」を稼いでいるのだ。
まあ、彼がお金を引き出しに入れたら、裁定取引を信じるふりをすることです。
 
はい、--そういうことです......。

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

そして、おそらく最後の質問です。

以下、この部分のコードです。

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

ケース 101-102-103の交換用...。Magic_101, Magic_102, Magic_103 と共に...

こんな感じで宜しいでしょうか。

   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:
そうですね〜、そういうことです...。

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

101-102-103を置き換えるために....をMagic_101 - Magic_102 - Magic_103 -... に変換します。

以下のようにするのが正しいでしょうか。

switch文についてhttps://docs.mql4.com/ru/basis/operators/switch を読んでください。
この例では、switchを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);
      }

に置き換えます。

      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);
      ... ... ...
 
abolk さん、わかりやすい説明ありがとうございました。