将 (X) OR (Y) 变量的代码排列为 return TRUE
Arranging the code for an (X) OR (Y) variable to return TRUE
我如何将 (x) 个变量列表分组为真,或将 (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))))
非常感谢。
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 ?
}
}
}
休斯顿,我们有问题:
解决方案不是纯布尔逻辑构造,而是涉及一个(隐藏)事务 - 一个按顺序调节的过程。
在 MetaTrader Terminal 4 中,所有 Order*(...)
调用都依赖于 & 必须以明确的 OrderSelect()
否则 dbPool-引擎类似于俄罗斯彩票(左轮手枪在 一个未知的腔室位置 中装载了一颗子弹,在左轮手枪的气缸存储中).这就是为什么 OrderSelect()
必须先走。 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 )
)
)
{ ... }
我如何将 (x) 个变量列表分组为真,或将 (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))))
非常感谢。
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 ?
}
}
}
休斯顿,我们有问题:
解决方案不是纯布尔逻辑构造,而是涉及一个(隐藏)事务 - 一个按顺序调节的过程。
在 MetaTrader Terminal 4 中,所有 Order*(...)
调用都依赖于 & 必须以明确的 OrderSelect()
否则 dbPool-引擎类似于俄罗斯彩票(左轮手枪在 一个未知的腔室位置 中装载了一颗子弹,在左轮手枪的气缸存储中).这就是为什么 OrderSelect()
必须先走。 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 )
)
)
{ ... }