循环和关闭或删除订单 - 页 2 12345 新评论 Ahmed Soliman 2013.02.10 22:17 #11 如果OrderSelect未能选择订单,会发生什么? OrderMagicNumber==MagicNo的条件不会为真。所以不需要检查 OrderSelect的结果,如果无效就继续。如果你想检查OrderSelect以减少循环变量,那会更好。例子。for(PositionIndex = 0; PositionIndex < OrdersTotal() ; PositionIndex ++) { if( ! OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) { PositionIndex--; continue; } William Roeder 2013.02.11 01:41 #12 如果orderSelect失败了,你可能会得到最后选择的订单 的神奇数字或留在内存中的东西,这可能会匹配。总是检查。你必须总是倒数。假设当你正在处理位置3时,位置0关闭了。你想处理的下一个订单是位置4,但当你循环并递增位置Index到4时,将是位置3。 你现在已经错过了一个。通过倒数,你可能会第二次处理同一个订单,但你不会错过任何一个。 Ahmed Soliman 2013.02.12 22:46 #13 WHRoeder:如果orderSelect失败了,你可能会得到最后选择的订单的神奇数字或留在内存中的东西,这可能会匹配。一定要检查。你必须总是倒数。假设当你在3号位置工作时,0号位置关闭。你想处理的下一个订单是位置4,但当你循环并递增位置Index到4时,将在位置3。 你现在已经错过了一个。通过倒数,你可能会第二次处理同一个订单,但你不会错过任何一个。 1- 谁告诉你的?你说的是哪个内存? 2- 我没有提到向下或向上计数,提供的代码本身不是向下计数。 William Roeder 2013.02.13 13:56 #14 OrderMagicNumber()和其他函数总是会返回一些东西。如果OrderSelect()失败了,你会得到随机的 垃圾,剩下的东西,也许是上一个成功的选择,也许是上一个关闭的订单的值,也许是寄存器中的任何东西。有没有试过在一个被删除的对象上解除指针的定义?内存,就是电路板上的黑色小芯片。试试这个int start(){ Print(Whatever()); } double Whatever(){ for(i=0; i<10; i++) double tmp=Close[i]; // no value returned } 并发布一些输出。我知道 "提供的代码本身并不是在倒数"。这就是问题所在。始终要倒数!你的减法不会奏效,而且是一个错误。你的减法不会起作用,而且是一个潜在的无限循环。if( ! OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) { PositionIndex--; continue; } burgie 2013.05.01 13:44 #15 是否有具体的原因,你的编码是。if( ! OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) continue;而不是(?)if( OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) { // statements if true }我知道这在一些编码标准中被认为是一个禁忌。它是否能带来更好的性能,还是只是偏好? Simon Gniadkowski 2013.05.01 13:53 #16 burgie:是否有具体的原因,你的编码是。而不是(?)我知道这在一些编码标准中被认为是一个禁忌。它是否能带来更好的性能,还是只是偏好? 我不知道该怎么做才符合逻辑,为什么OrderSelect()会失败? Alain Verleyen 2013.05.02 06:28 #17 burgie:是否有具体的原因,你的编码是。而不是(?)我知道这在一些编码标准中被认为是一个禁忌。它是否能带来更好的性能,还是只是偏好? 在一个循环里面,这完全是一样的,选择你喜欢的东西。 [删除] 2013.06.30 01:17 #18 burgie:是否有具体的原因,你的编码是。而不是(?)我知道这在一些编码标准中被认为是一个禁忌。它是否能带来更好的性能,还是只是偏好? [删除] 2013.06.30 01:24 #19 如果(orderselect(......))执行这个//------不回头。如果(!orderselect(.......))继续 //返回并检查 Simon Gniadkowski 2013.06.30 04:53 #20 MirTD:如果(orderselect(......))执行这个//------不回头。如果(!orderselect(.......))继续 //返回并检查 我已经回答了被问到的关于我的编码的问题 . . 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果OrderSelect未能选择订单,会发生什么?
OrderMagicNumber==MagicNo的条件不会为真。所以不需要检查 OrderSelect的结果,如果无效就继续。
如果你想检查OrderSelect以减少循环变量,那会更好。例子。
1- 谁告诉你的?你说的是哪个内存?
2- 我没有提到向下或向上计数,提供的代码本身不是向下计数。
是否有具体的原因,你的编码是。
而不是(?)
我知道这在一些编码标准中被认为是一个禁忌。它是否能带来更好的性能,还是只是偏好?
是否有具体的原因,你的编码是。
而不是(?)
我知道这在一些编码标准中被认为是一个禁忌。它是否能带来更好的性能,还是只是偏好?
是否有具体的原因,你的编码是。
而不是(?)
我知道这在一些编码标准中被认为是一个禁忌。它是否能带来更好的性能,还是只是偏好?
在一个循环里面,这完全是一样的,选择你喜欢的东西。
是否有具体的原因,你的编码是。
而不是(?)
我知道这在一些编码标准中被认为是一个禁忌。它是否能带来更好的性能,还是只是偏好?
如果(orderselect(......))执行这个//------不回头。
如果(!orderselect(.......))继续 //返回并检查
如果(orderselect(......))执行这个//------不回头。
如果(!orderselect(.......))继续 //返回并检查