提醒:MT4终端复制专家发送的订单 - 页 6

 

和你正在做的事情之间存在着区别。

bool Buy_Ticket = OrderSend(........)

和你正在做的事情有区别

bool Buy_Ticket = Ordersend > 0;   //SIMPLIFIED CODE FOR EASIER READING

在第一种情况下,如果一个订单失败,将返回-1的值,但布尔值将解释为TRUE

在第二种情况下,你正在使用条件(Ordersend>0)来给布尔值分配真或假。

 
GumRai:


和你正在做的事情之间存在着区别。

和你正在做的事情有区别

在第一种情况下,如果一个订单失败,将返回-1的值,但布尔值将解释为TRUE

在第二种情况下,你是用条件(Ordersend>0)来给布尔值分配真或假。



这是真的吗? 我现在不能在模拟账户(真实交易)上测试,但我在回测中做了一些快速验证,故意破坏OrderSend()的无效止损 = ask(市场价格)的多头交易。 结果是OrderSend()按预期返回"-1",我的bool var Buy_Ticket也返回错误。


** 编辑 **

你是否漏掉了我在OrderSend()后面的条件">0"? 我的原始代码显示。

bool Buy_Ticket = OrderSend(........) > 0;
 
BigFisherman:



这是真的吗? 我现在不能在模拟账户(真实交易)上测试,但我在回测中做了一些快速验证,故意用无效的止损=卖出价(市场价格)来破坏OrderSend()的多头交易。 结果是OrderSend()按预期返回"-1",我的bool var Buy_Ticket也返回错误。


** 编辑 **

你是否漏掉了我在OrderSend()后面的条件">0"? 我的原始代码显示。


对不起,是的,我确实错过了>0。

我想,这只是一个很奇怪的方式,我没有注意到它。

 

@ BigFisherman 检查下面的代码

   bool Buy_Ticket;
   int TicketNo = 123456789;
   Buy_Ticket = TicketNo > 0;
   Alert(Buy_Ticket);

见此

赋值运算符可以在一个表达式中多次使用。在这种情况下,对表达式的处理是从左到右进行的。

y=x=3。

首先,变量x将被赋值为3,然后y变量将被赋值为x的值,也就是3。

 
GumRai:


对不起,是的,我确实错过了>0。

我想,这只是一种奇怪的方式,我没有注意到它。


没问题。

我同意这样编码不是一个好的做法;在我学习MQL的早期阶段,我已经对这部分进行了编码,但由于它在我看来一直是正确的,所以我让它一直到这个重复交易问题发生。 但显然,现在 "看起来 "我的原始代码虽然混乱,但看起来是有效的,然后它又回到了这个主题 "重复交易......";这可能是mt4中一个严重和非常不受欢迎的 "罕见 "错误,不幸的是,由于它的罕见出现(500多个交易中只有一个),我无法重现。

对于任何人的信息,由于我如何编码我的EA(参考我在第5页的第一篇帖子),SL和TP只在它检测到成功的OrderSend()后才被分配(IMHO到现在为止是相当可靠的)。 而我之前的重复交易发生的情况是,由于一些未知的原因,它根本没有 设置SL和TP;除了OrderSend()返回"-1",但还是开了一笔交易,或者 "它 "在一次OrderSend()中同时开了两笔交易 **只是我自己的猜测 **。 幸运的是,当这种情况发生时,我就在我的电脑前,所以我可以手动关闭它;想象一下,如果我外出度假会发生什么。

 
qjol:

@ BigFisherman 检查下面的代码

   bool Buy_Ticket;
   int TicketNo = 123456789;
   Buy_Ticket = TicketNo > 0;
   Alert(Buy_Ticket);


Buy_Ticket按预期返回true。 你想说的是什么?

 

我不是想说,我是说!

如果你像这样使用它

bool Buy_Ticket = OrderSend(........) > 0;

如果OrderSend()已经被执行,你当然会得到true。

因为首先要检查OrderSend的结果是否大于0

然后再把它传给

Buy_Ticket

但仍然不是正确的处理方式

 
qjol:

我不是想说,我是说!

如果你像这样使用它

如果OrderSend()已经被执行,你当然会得到true。

因为首先要检查OrderSend的结果是否大于0

然后再把它传给

但仍然不是正确的处理方式



现在我知道在mql4中要过滤谁的帖子了,无论如何感谢你的意见。
 
y=x=3;
我确实想做这个,但每当我试图编译时,MetaEditor总是阻止我。
 
BigFisherman:


现在我知道在mql4中要过滤谁的帖子了。

注意:我在mql5的用户名是一样的