bool f() { return Random(); /*вычисляется ооочень долго, но результат не зависит от числа вызовов*/ }
void g1() { /*делает что-то полезное*/ }
void g2() { /*делает что-то полезное*/ }
void h() {
#ifndef MACRO
if ( f() )
#endif
{
if ( f() )
g1();
g2();
}
}
在这个过程中,出现了几个问题。
1.为什么不能在Comp中写operator()(由于某些原因被禁止)?
2.为什么我们不能把pr值传递给接受常数引用的函数?
ZS: 还有一个非常恼人的警告:"结构没有成员,大小分配为1字节"
那里一切正常,下单应该通过OnTradeTransaction来控制,顺便说一下,如果你通过Plaza2直接连接到交易所,情况是一样的--你需要控制关于下单的消息的到来。在MT4中,该功能是同步的,但在MT5中也有同样的选项,只是在这种情况下,逻辑将停止,直到该功能没有收到回应。
如果你需要,我可以把控制类发给你,但它是为市场配售而写的,但很快我就会把它定下来用于限制器。
我非常希望你能在kodobase上发布一些信息!用于教育目的。
不能,因为你自己指出的原因,https://www.mql5.com/ru/forum/1111/page1743#comment_2877482。 最近我无法定位错误,花了很多时间将源代码形成servicedesk - 最后什么都没有出来,因为有很多交叉引用(一个拉着另一个的几何级数) - 我发了.ex5
出于教育目的,我可以建议这样的任务:在不引入额外变量的情况下简化h(),使f()在任何情况下都被调用一次。
编译错误
(*) 一般来说,在模式(1)中,A->(2)和const A->(3)都可以代替T。
这是为什么呢?一个带有const的模式不能接受非const--它违反了契约。
出于教育目的,我可以提出以下任务:在不引入额外变量的情况下,简化h(),使f()在任何情况下都被调用一次
这是为什么呢?带有const的模板不能接受非const--它违反了契约。
有人遇到过类似的问题吗?是终端的 "错误 "还是我的?
MT5-OrderSend不是完全同步的 - 没有与交易环境同步。这意味着历史读数不符合真实情况。
没有超时是不可能的。这个问题没有可靠的解决方案,因为你必须在终端层面处理同步问题,而不是在服务器层面。
事实上,MT5用户正面临着MT4桥梁开发者所面临的问题。
如果发送了OrderSend,你必须记住(这就是潜在的漏洞所在),它已经完成了。然后忽略当前历史(交易环境),直到OnTrade中出现相应的信息。一旦到了,要记得忘记。
当没有REMEMBER时,你可以像MT4一样相信历史。
MT4-OrderSend是完全同步的。我知道如果你异步地弄乱OrderSendAsync,你可以同时处理OnTrade和OnTradeTransaction。对于OrderSend,我希望有简单的行为,就像在MT4中一样。一旦它被调用,我们就会在输出中获得已经修改过的开仓和历史记录。
有一个微妙的观点。如果当前状态被存储在全局变量 中,并且对状态变化的预期需要相对较长的时间,而交易者设法改变EA的参数,全局变量将被重置,状态将被丢弃。