我的 EA
会出现错误代码4059
,这意味着左 {back}测试显然不允许使用OrderModify()
功能。
有什么方法可以允许这一点吗?
我想要做的就是将立场变为盈亏平衡,当它达到100点时#34;
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;
}
答案 0 :(得分:0)
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 )
...
..
.
使用类似系统的错误检测方法,您很快就会意识到观察到的问题的根本原因,任何错误处理只会开始有意义。< / p>
最有可能的是,错误源自SLOC
来电之下的OrderModify()
- 更低,其中出现 SendMail()
来电,尽管事实如此那个HELP明确地说:
Note
在设置中可以禁止发送,也可以省略电子邮件地址。对于错误信息,请致电GetLastError()
。
SendMail()
函数在策略测试程序中不起作用。
答案 1 :(得分:0)
OrderModify()
不生成错误4059
。
该错误来自SendMail()
。文件指出:
https://docs.mql4.com/common/sendmail