给MQL专家的一个问题 - 页 7

 

到目前为止,它是有效的。还有一个问题。

还有一段这样的代码。

 
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;    
     }
 
我看着你的练习,心想。
- 你开始了几个巫师
- 然后你跟踪魔术师的数字,并根据数字给MMMMMM变量分配适当的数值。

问题:在inite中一次将这个值分配给向导,然后再使用它,不是更容易吗?
 
Rita:

到目前为止,它是有效的。还有一个问题。

还有一段这样的代码。

将其替换为--是否正确?


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
在你的例子中,只要用if代替switch

      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,谢谢你的澄清。