EA混合买入和卖出订单 - 页 2 123 新评论 Ubzen 2011.07.05 17:55 #11 在不知道整个EA和你如何使用它的情况下,我们只能猜测出问题所在。假设它正在选择一个正确的订单来通过这个语句。 while (!OrderSelect(cnt, SELECT_BY_POS)) {Sleep(500);} 它不可能获得通过。 if ((orderType == OP_BUY || orderType == OP_BUYSTOP)) { 如果它的Op_Sell。除非你在同一个符号的多个图表上有这个东西。 看到你在使用一个有争议的while循环。这可能是某种形式的快速制单器。 我最后的猜测。选定的订单 在订单类型检查后发生变化 :) 其他的,我建议你像Raptor一样,利用大量的打印语句。 William Roeder 2011.07.05 18:26 #12 选定的订单 在orderSelect之后不能改变。 for(cnt = total-1; cnt >= 0; cnt--) { while (!OrderSelect(cnt, SELECT_BY_POS)) {Sleep(500);} 如果orderSelect失败,它将持续失败,你将有一个无限循环。如果在你更新你的订单时,另一个图表上有几个订单关闭,那么下一次迭代的选择将失败。非常危险。 dvarrin 2011.07.05 19:05 #13 我已经打印了Ticket号码,但它与OrderType()不匹配。 如果选择的订单 类型是OP_BUY,那么正确的if将被处理,但在我的OrderModify(...)调用中,我把OrderTicket()作为第一个参数传递,但它是其他订单的票据。 有什么想法吗? Simon Gniadkowski 2011.07.05 19:26 #14 dvarrin:有什么想法吗?也许你试图修改一个已经关闭的订单?你没有指定你的交易池。 OrderSelect( int index, int select, int pool=MODE_TRADES) MODE_TRADES (默认)- 从交易池中选择订单(已建和待建订单), MODE_HISTORY - 从历史库中选择订单(已关闭和已取消的订单)。 dvarrin 2011.07.05 19:35 #15 RaptorUK: 也许你正试图修改一个已经关闭的订单? 你没有指定一个你正在选择交易的池。 MODE_TRADES (默认)- 从交易池中选择订单(已开仓和挂单)。 MODE_HISTORY - 从历史库中选择订单(已关闭和已取消的订单)。 我也试过了,但它没有改变任何东西。似乎我必须存储我想使用的所选订单 的所有数据。 int ticket=0; 双倍SL=0.0。 OrderSelect(cnt, ...)。 ticket = OrderTicket()。 SL = OrderStoploss()。 如果(OrderType() == OP_BUY){ } ... 为什么会这样呢?我不明白我的代码有什么问题,以至于OrderTicket()没有对应OrderType()所指的同一订单。 Simon Gniadkowski 2011.07.05 19:50 #16 dvarrin: 我已经打印了Ticket号码,但它与OrderType()不匹配。 如果选择的订单是OP_BUY类型,正确的if将被处理,但在我的OrderModify(...)调用中,我把OrderTicket()作为第一个参数传递,但它是一个其他订单的票据。 它是顺序中的下一个订单,还是顺序中的上一个订单? [删除] 2011.07.05 19:53 #17 orderType = OrderType() 改为 int orderType = OrderType(); 并删除原声明。 dvarrin 2011.07.05 20:19 #18 forexCoder: orderType = OrderType() 改为 int orderType = OrderType(); 并删除原声明。 OrderType是可以的。只是OrderTicket()不是正确订单的票据。 Simon Gniadkowski 2011.07.05 20:56 #19 我鼓励你找出导致你的问题的原因,而不是围绕它进行编码 ...... 软件工程是关于解决问题的,这是我们学习和提高的方式。 从周六开始,我已经第三次尝试为一个与Fibs有关的特殊问题编码了,我快成功了。仔细使用Print()函数 有很大的帮助 ...... William Roeder 2011.07.05 21:39 #20 dvarrin: OrderType是可以的。是OrderTicket()不是正确订单的票。 int OrderType = OrderType() 是不确定的,一个可能隐藏了另一个(局部声明隐藏了全局,没有错误。 int orderType = OrderType() 123 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在不知道整个EA和你如何使用它的情况下,我们只能猜测出问题所在。假设它正在选择一个正确的订单来通过这个语句。
它不可能获得通过。
if ((orderType == OP_BUY || orderType == OP_BUYSTOP)) {如果它的Op_Sell。除非你在同一个符号的多个图表上有这个东西。
看到你在使用一个有争议的while循环。这可能是某种形式的快速制单器。
我最后的猜测。选定的订单 在订单类型检查后发生变化 :)
其他的,我建议你像Raptor一样,利用大量的打印语句。
我已经打印了Ticket号码,但它与OrderType()不匹配。
如果选择的订单 类型是OP_BUY,那么正确的if将被处理,但在我的OrderModify(...)调用中,我把OrderTicket()作为第一个参数传递,但它是其他订单的票据。
有什么想法吗?
有什么想法吗?
也许你试图修改一个已经关闭的订单?你没有指定你的交易池。
MODE_TRADES (默认)- 从交易池中选择订单(已建和待建订单),MODE_HISTORY - 从历史库中选择订单(已关闭和已取消的订单)。
也许你正试图修改一个已经关闭的订单? 你没有指定一个你正在选择交易的池。
MODE_TRADES (默认)- 从交易池中选择订单(已开仓和挂单)。MODE_HISTORY - 从历史库中选择订单(已关闭和已取消的订单)。
我也试过了,但它没有改变任何东西。似乎我必须存储我想使用的所选订单 的所有数据。
int ticket=0;
双倍SL=0.0。
OrderSelect(cnt, ...)。
ticket = OrderTicket()。
SL = OrderStoploss()。
如果(OrderType() == OP_BUY){
}
...
为什么会这样呢?我不明白我的代码有什么问题,以至于OrderTicket()没有对应OrderType()所指的同一订单。
我已经打印了Ticket号码,但它与OrderType()不匹配。
如果选择的订单是OP_BUY类型,正确的if将被处理,但在我的OrderModify(...)调用中,我把OrderTicket()作为第一个参数传递,但它是一个其他订单的票据。
orderType = OrderType()
改为
int orderType = OrderType(); 并删除原声明。
orderType = OrderType()
改为
int orderType = OrderType(); 并删除原声明。
OrderType是可以的。只是OrderTicket()不是正确订单的票据。
我鼓励你找出导致你的问题的原因,而不是围绕它进行编码 ......
软件工程是关于解决问题的,这是我们学习和提高的方式。 从周六开始,我已经第三次尝试为一个与Fibs有关的特殊问题编码了,我快成功了。仔细使用Print()函数 有很大的帮助 ......
OrderType是可以的。是OrderTicket()不是正确订单的票。
int OrderType = OrderType() 是不确定的,一个可能隐藏了另一个(局部声明隐藏了全局,没有错误。
int orderType = OrderType()