【问题标题】:Why does this string function not update? MQL4为什么这个字符串函数不更新? MQL4
【发布时间】:2021-02-16 16:36:07
【问题描述】:

我现在非常困惑,已经有一段时间了。我试图弄清楚为什么当我相信 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";
                    }
               }
     }
 }

【问题讨论】:

    标签: mql4 trading algorithmic-trading forex mt4


    【解决方案1】:

    Q“为什么当我相信 if 语句为真时,这个字符串函数不会更新字符串?”

    嗯,你怎么知道没有?

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

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


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

    OrderModify()-命令几乎肯定会生成服务器端拒绝任何 XTO 指令,这将违反 Broker 端定义的 FREEZE_LEVEL 和/或修改 @ 的最小允许距离987654328@-targets 来自实际的{ Ask | Bid }-price-levels。请查看您的经纪人的 T&C 并最好地调整您的代码,以防止陷入这些条件冲突的指令。

    【讨论】:

    • 我是个白痴。我将“aboveprofit”声明为一个字符串,但试图更新一个拼写错误的“abovepoint”字符串。顺便说一句,OrderSymbol 确实匹配 op_sell 和 op_buy,因为 OrderModify 函数工作正常。
    • 我怀疑,它可以 --- OrderSymbol() - 返回当前所选订单的符号 name,而 OrderType() - 返回当前选中订单的订单操作 type ~ { OP_BUY | OP_BUYSTOP | OP_BUYLIMIT | OP_SELL | OP_SELLSTOP | OP_SELLLIMIT }
    猜你喜欢
    • 2021-05-12
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 2020-01-10
    • 2022-10-05
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多