bool checkOrderSend=OrderSend(request,result);
if(checkOrderSend) // (*** look here)
{
if(result.retcode==10009 || result.retcode==10008)
{
Print("OrderSend was successful. Code: ",result.retcode);
volume-=result.volume; //If order was successful then reduce volume to 0.0, then the loop will be terminated.break;
}
else
{
Print(ResultRetcodeDescription(result.retcode));
}
}
else
{
Print("OrderSend execution error.");
}
你好,FinanceEngineer,也许最好开始检查你的原始代码的多单问题,因为如果我们这样做,可能会解决这里的其他关键点,不会失去重点,你怎么看?
你好,figurelli
这是我的新代码。我改变了,因为我在这个主题上提出了多个订单的问题。
到目前为止,这段代码在几个经纪商那里运行良好。BlindMist可以试试这段代码,看看他是否能避免该经纪人的多单问题。
你好,figurelli
这是我的新代码。我改变了,因为我在这个主题上提出了多个订单的问题。
到目前为止,这段代码在几个经纪商那里运行良好。BlindMist可以试试这段代码,看看他是否能避免该经纪人的多单问题。
发布代码时请使用SRC按钮。
你发布的代码不能避免(所有的)双重订单,相反,它在某些情况下会引发双重订单。
在发布代码时,请使用SRC按钮。
你发布的代码不能避免(所有的)重复订单,相反,它在某些情况下会引起重复订单。
你好,figurelli
这是我的新代码。我改变了,因为我在这个主题上提出了多个订单的问题。
到目前为止,这段代码在几个经纪商那里运行良好。BlindMist可以试试这段代码,看看他是否能避免该经纪人的多单问题。
你好,FinanceEngineer,注意在你的原始代码中,你在if { }和else { }处有Print("OrderSend Code: "...) 。
但是else { }有一个break,而你的调试代码显示retcode = 10008 (TRADE_RETCODE_PLACED) x 10。
所以,根据推论,你是在打印if { }条件下的调试,而你的break从未被使用。
现在你改变了你的代码,看起来更清晰了,但是请注意,你没有再测试OrderSend()的返回值,只是测试了result.retcode。你可以使用变量checkOrderSend(***看这里)来纠正这个问题,我之前问过这个问题。
所以,在我看来,首先要做的是纠正这个测试,并使用你报告的同一个有问题的经纪人再次检查。如果问题不再发生,恭喜你,你真的解决了这个错误,也就是说,这并不表明你的代码是未来的证明或最安全的,而是表明我们找到了这个错误。
事实上,你可以忘记或避免再次修改你的代码,因为错误没有发生,然而,在这种情况下,你必须注意你没有再测试OrderSend()的返回值。
希望这些信息能帮助你。
你好,FinanceEngineer,请注意在你的原始代码中,你在if { }和else { }处有Print("OrderSend Code: "...) 。
但是else { }有一个中断,而你的调试代码显示retcode = 10008 (TRADE_RETCODE_PLACED) x 10。
所以,根据推论,你是在打印if { }条件下的调试,而你的break从未被使用。
现在你改变了你的代码,看起来更清晰了,但是请注意,你没有再测试OrderSend()的返回值,只是测试了result.retcode。你可以用我之前问过的变量checkOrderSend(***看这里)来纠正这个问题。
所以,在我看来,首先要做的是纠正这个测试,并使用你报告的同一个有问题的经纪人再次检查。如果问题不再发生,恭喜你,你真的解决了这个错误,也就是说,这并不表明你的代码是未来的证明或最安全的,而是表明我们找到了这个错误。
事实上,你可以忘记或避免再次修改你的代码,因为错误没有发生,然而,在这种情况下,你必须注意你没有再测试OrderSend()的返回值。
希望这些信息能帮助你。
返回代码10010怎么办?
任何经纪商都有可能出现双份订单,Alpari出现双份订单的概率更大,因为你收到的点数更多。
那么返回的代码10010呢?
在任何经纪商上都可能发生双份订单,在Alpari上发生的概率更大,因为你收到的点数更多。
你好,FinanceEngineer,请注意在你的原始代码中,你在if { }和else { }处有Print("OrderSend Code: "...) 。
但是else { }有一个中断,你的调试代码显示retcode = 10008 (TRADE_RETCODE_PLACED) x 10。
所以,根据推论,你是在打印if { }条件下的调试,而你的break从未被使用。
现在你改变了你的代码,看起来更清晰了,但是请注意,你没有再测试OrderSend()的返回值,只是测试了result.retcode。你可以使用变量checkOrderSend(***看这里)来纠正这个问题,我之前问过这个问题。
所以,在我看来,首先要做的是纠正这个测试,并使用你报告的同一个有问题的经纪人再次检查。如果问题不再发生,恭喜你,你真的解决了这个错误,也就是说,这并不表明你的代码是未来的证明或最安全的,而是表明我们找到了这个错误。
事实上,你可以忘记或避免再次修改你的代码,因为错误没有发生,然而,在这种情况下,你必须注意,你不再测试OrderSend()的返回值了。
希望这些信息能帮助你。
你好
我知道这听起来很奇怪。当我在以前的代码中检查OrderSend(request,result)的返回值时,我得到了多个订单问题。 现在在我的新代码中,我没有检查OrderSend(request,result)的返回值(但我仍然将返回值分配给一些变量,以避免在新的终端构建中出现错误。
在新的代码中,我没有得到多个订单的问题。我使用的是英国Alpari公司,该公司以发送大量的ticks而闻名。 我的代码可能并不完美,但可以这样想。在Meta Trader 5中,有相当数量的返回代码需要检查。
首先是OrderCheck的返回值,其次是OrderSend的返回值,第三是在result.retcode分配的返回值。我认为无论前两个返回值是什么,我们真正应该关心的是最后一个加上实际执行的数量。
所以基于这个事实,我把我的代码简化了,直接去检查result.retcode。如果我说错了,请纠正我。我认为MT5的订单执行肯定比MT4要复杂得多,我们很多人都很困惑。
如果我们不能只用逻辑建立一个清晰的案例,那么我们可以用实验建立一个清晰的案例。所以我建议BlindMist或其他任何人用他们的经纪商试试这段代码,看看跳过检查OrderSend功能是否真的有帮助。
谨此致意。
如果你问的是我,正如我之前所说的,我不认为这个代码是未来的和足够安全的,这只是关于缺乏返回代码的一个例子,所以请再次阅读。
我问参与这个主题的每个人。我错过了你关于代码10010的信息,它在哪里?
我问参与这个主题的每个人。我错过了你关于代码10010的信息,它在哪里?
你好,阿兰。
我不清楚你需要知道什么,因为我们只是在讨论FinanceEngineer 的新代码,以及关于测试OrderSend()的返回代码的建议,该代码已从原始代码中改变。
请注意,无论是他的原始代码还是他的新代码都没有代码10010的测试,所以如果这与你有关,你为什么不在他的第一篇帖子中就问?
总之,你能解释一下为什么你需要代码10010测试来填补 FOK政策 吗?
因为这不是我第一次看到你和其他版主谈论,你是否知道在某些情况下确实需要对FOK(Fill Or Kill)订单进行这种代码测试,你可以与我们分享?
谢谢你。
你好
我知道这听起来很奇怪。当我在以前的代码中检查OrderSend(request,result)的返回值时,我得到了多个订单问题。现在在我的新代码中,我没有检查OrderSend(request,result)的返回值(但我仍然将返回值分配给一些变量,以避免在新的终端构建中出现错误。
在新的代码中,我没有得到多个订单的问题。我使用的是英国Alpari公司,该公司以发送大量的ticks而闻名。我的代码可能并不完美,但可以这样想。在Meta Trader 5中,有相当数量的返回代码需要检查。
首先是OrderCheck的返回值,其次是OrderSend的返回值,第三是在result.retcode分配的返回值。我认为无论前两个返回值是什么,我们真正应该关心的是最后一个加上实际执行的数量。
所以基于这个事实,我把我的代码简化了,直接去检查result.retcode。如果我说错了,请纠正我。我认为MT5的订单执行肯定比MT4要复杂得多,我们很多人都很困惑。
如果我们不能只用逻辑建立一个清晰的案例,那么我们可以用实验建立一个清晰的案例。所以我建议BlindMist或其他任何人用他们的经纪商试试这段代码,看看跳过检查OrderSend功能是否真的有帮助。
衷心的问候。