为什么这个字符串函数不更新? MQL4

Why does this string function not update? MQL4

我现在非常困惑,已经有一段时间了。当我相信 if 语句为真时,我试图弄清楚为什么这个字符串函数不会更新字符串。

void OnTick()
{
     string aboveprofit = "";

     for ( int b = OrdersTotal() - 1; b >= 0; b-- )
     {
          if ( OrderSelect( b, SELECT_BY_POS, MODE_TRADES ) )
          if ( OrderSymbol() == Symbol() )
          {
               if ( OrderSymbol() == OP_SELL )
               {
                    OrderModify( OrderTicket(),
                                 OrderOpenPrice(),
                                 Bid + ( 150 * _Point ),
                                 OrderTakeProfit(),
                                 0,
                                 CLR_NONE
                                 );
                    if ( Ask < OrderOpenPrice() )
                    {    
                         abovepoint = "321";
                    }
               }
               if ( OrderSymbol() == OP_BUY )
               {
                    OrderModify( OrderTicket(),
                                 OrderOpenPrice(),
                                 Ask - ( 150 * _Point ),
                                 OrderTakeProfit(),
                                 0,
                                 CLR_NONE
                                 );
                    if ( Bid > OrderOpenPrice() )
                    {
                         abovepoint = "123";
                    }
               }
     }
 }

Q : "why this string function won't update the string when I believe the if statement to be true?"

嗯,你怎么知道它没有?

在进入 void OnTick(){...}-code-block 的第一行添加一个 Print( Volume[0], abovepoint ); 命令,以检查您在客户端中发布的上述假设的有效性终端日志。

上面的代码片段缺少一个实际的 abovepoint 声明,因此无法添加更多内容。


勘误表:OrderSymbol() 很可能永远不会匹配 { OP_BUY | OP_SELL }-常量,它应该是 OrderType(),应该不是吧?

OrderModify()-命令几乎肯定会生成 server-side 拒绝任何 XTO-instruction,这将违反 [=41] =] 定义了 FREEZE_LEVEL and/or 修改后的 { TP | SL }-目标与实际 { Ask | Bid }-price-levels 的最小允许距离。请查看您的经纪人的条款和条件,并最好地调整您的代码,以防止陷入这些条件冲突指令。