【问题标题】:How to repair an Error 4059 on calling the OrderModify() function | MQL4?如何在调用 OrderModify() 函数时修复错误 4059 | MQL4?
【发布时间】:2016-08-29 12:26:44
【问题描述】:

我的 EA 出现错误代码 4059
这意味着
OrderModify() 在(回)测试中显然不允许使用函数。

有什么方法可以允许这样做吗?

我想要做的就是改变仓位以实现盈亏平衡,当它获得 100 点“向好”时

PrintFormat( "TKT[%.2d]OP:[%7.5f]SL:[%7.5f]CurrentPrice:[%7.5f]Stoplevel:[%.3d]FreezeLevel:[%.3d]",
              aTicket,
              anOpenPrice,
              aCurrentSL,
              anAskPrice,
              stopLevel,
              freezeLevel
              );
SellMod = OrderModify( aTicket,
                       NormalizeDouble( anOpenPrice, Digits ),
                       NormalizeDouble( aNewSLPrice, Digits ),
                       NormalizeDouble( aNewTpPrice, Digits ),
                       0,
                       sellcolor
                       );
SendMail( "Notification of Order Modification for Ticket#"
         + IntegerToString( OrderTicket(), 10 ),
           "Good news! Order Ticket#"
         + IntegerToString( OrderTicket(), 10 )
         + "has been changed to breakeven"
           );
if (  !SellMod )
{     PrintFormat( "Order modification for ticket %10d has failed modify the order under the Error Code# %5d. Check MQL4 Documentation",
                   aTicket,
                   GetLastError()
                   );
      result = false;
}

【问题讨论】:

    标签: trading algorithmic-trading mql4 metatrader4


    【解决方案1】:

    4059 ERR_FUNC_NOT_ALLOWED_IN_TESTING
    很清楚,
    不是它的来源
    虽然

    测试模式下不允许使用函数
    [ HIDDEN REMAINS _WHERE_ + _WHY_ IT IS REPORTED] :)

    所以,
    修改错误检测的一些细节
    以便回到马鞍上并让事情回到您的完全控制之下:

     .
     ..
     ...
     // ======================================== .ASSUME NOTHING       ; the best
     //                                                                      advice
     //                                                                      ever :)
     //                //     ALWAYS (pre-clear) 
     GetLastError();   /* _ _ _ _ _ _ _ _ _ _ _  AND   ERR_SYSREG, 0   ; CLEAR SYSREG
                                                                       ; (
                                                                       ; prevents 
                                                                       ; from reading
                                                                       ; a value from
                                                                       ; some "old"
                                                                       ; error-code
                                                                       ; on a "next"
                                                                       ; GetLastError
                                                                       ; call
                                                                       ; )
                       */
     OrderModify(...); //                        CALL  _OrderModify
    
     gotLastERROR =    //                        MOV   VAR, ERR_SYSREG ; CATCH ERR
     GetLastError();   // _ _ _ _ _ _ _ _ _ _ _  AND   ERR_SYSREG, 0   ; CLEAR SYSREG
    
     // ---------------------------------------- ( a main-effect )
     //                                          ( VAR has this _FUN call error-code )
    
     // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ( a side-effect )
     //                                          ( ERR_SYSREG is clear AGAIN )
     ...
     ..
     .
    

    使用类似的系统错误检测方法,您很快就会意识到观察到的问题的根本原因,任何错误处理只会开始有意义。

    最有可能的是,错误源自SLOC-s 下面的几个OrderModify() 调用,其中 SendMail() 调用出现,尽管事实是 HELP 明确表示:


    Note

    设置中可以禁止发送,邮箱地址也可以省略。对于错误信息,请调用 GetLastError()

    SendMail() 函数在 Strategy Tester 中不起作用。

    【讨论】:

      【解决方案2】:

      OrderModify()不会生成错误4059
      该错误来自SendMail()。文档指出:
      https://docs.mql4.com/common/sendmail

      【讨论】:

      • 没错,Joseph Lee,您可能已经注意到,5 月 4 日的帖子已经说明了这一点,并围绕这个根本原因进行了一些教学推理。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-24
      • 2020-05-04
      • 2021-11-17
      • 2019-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      相关资源
      最近更新 更多