排列(X)OR(Y)变量的代码以返回TRUE

时间:2017-03-22 11:17:55

标签: mql4 mt4

如何将(x)变量列表归为真,OR和(y)变量组归为真以激活命令。

以下我在这里,其中包括||布尔值。

if(OrderSelect(PosSel,SELECT_BY_POS,MODE_TRADES))
                 if(OrderTicket() > 0)
                 if((OrderMagicNumber() == Period()))
                 if(OrderSymbol() == Symbol())
                 if(TimeCurrent() >=(OrderOpenTime() + 60 * Period()))
                 /*Either the above variables can be met OR the one below can be met. */
                 || if((MarketInfo(Symbol(),MODE_BID)==(iOpen(Symbol(),0,1))))

非常感谢。

2 个答案:

答案 0 :(得分:0)

   if(OrderSelect(PosSel,SELECT_BY_POS,MODE_TRADES)){
      if(OrderMagicNumber() == Period() && OrderSymbol()==Symbol()){
            RefreshRates(); //must call it before accessing Bid & Ask
            if(TimeCurrent()>=OrderOpenTime()+60*Period() || 
                fabs(Bid-iOpen(Symbol(),0,1))<Point/2){///here 1 OR 2 is true:
            //what to do ?
         }
      }
   }

答案 1 :(得分:0)

休斯顿,我们遇到了一个问题:

解决方案不是纯粹的布尔逻辑构造,但涉及(隐藏)事务 - 顺序调节的过程。

在MetaTrader 4号航站楼,所有 Order*(...) 来电都依赖&amp;必须先加上明确的 OrderSelect() ,否则 dbPool - 发动机就像俄罗斯彩票一样(打击式左轮手枪在一个未知的房间里装满了一颗子弹在左轮手枪的气缸存储中的位置)。这就是为什么OrderSelect()和&amp;必须先行。 RefreshRates()不言自明。

需要的不仅仅是轻微的语法珩磨 - 解决方案可能是:

首先尝试执行 dbPool.SELECT 并处理布尔结构中的显式结果:

bool OrderSELECT_RESULT = OrderSelect( PosSel, SELECT_BY_POS, MODE_TRADES );
                          RefreshRates();
// a MUST-DO part, indeed _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

if (  (     OrderSELECT_RESULT
      &&    OrderTicket()           >  0
      &&    OrderMagicNumber()      == Period()
      &&    OrderSymbol()           == Symbol()
         )
      && (  OrderOpenTime()         <= TimeCurrent() - ( 60 * Period() )
         || iOpen( Symbol(), 0, 1 ) == MarketInfo( Symbol(), MODE_BID )
            )
      )
      { ... }