未结订单总量的问题 - 页 3 12345 新评论 Keith Watford 2016.02.23 07:56 #21 你需要展示你的整个修改后的代码。 William Roeder 2016.02.23 12:26 #22 在if 语句之前和里面打印 你的变量,并找出原因。 trader3000 2016.02.24 14:14 #23 WHRoeder: 在if 语句之前和里面打印 你的变量,并找出原因。好的,谢谢你,我会这样做,并进一步研究这个问题。 我还发现了这段代码,这让我很感兴趣,因为SL和TP与OrderSend是分开的。 也会研究这个问题的ticket = OrderSend( Symbol(), OP_SELL, getPositionSize(), Bid, 3, 0, 0, "Basic CCI EA", magic, 0 , Red ); OrderModify( ticket, OrderOpenPrice(), Bid + SL, Bid - TP, 0 ); trader3000 2016.03.23 15:48 #24 大家好我已经解决了大部分问题,EA在测试器中运行良好,但我在OrdersTotal方面仍有问题。在模拟模式下,它有时会打开两个挂单,但大多数时候只有买入或卖出。 我希望两个挂单同时打开(在几秒钟内),但只有在没有其他订单或挂单的情况下。 我认为发生的情况是,有时它在有机会计算订单数量 之前就打开了两个挂单,而其他时候它实际上意识到一个挂单被发送,而不会打开另一个。我想,如果我把订单放在大括号内,当满足条件时,它会同时执行这两个订单。 我现在还知道,当我删除这些订单时,只要最后一根蜡烛正在形成,它就会继续打开挂单,也就是说,只要时间变量与Time[0]蜡烛匹配,点数就不重要。下面是这段代码。extern datetime StartTime1 = D'2016.03.15 15:05'; int start(){ int buy_ticket=0, sell_ticket=0, buystop_ticket=0, sellstop_ticket=0, total=0; for(int i= OrdersTotal()-1; i>= 0; i--) if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==magic && OrderSymbol()==Symbol()) { total++; if(OrderType()==OP_BUYSTOP) buystop_ticket=OrderTicket(); if(OrderType()==OP_SELLSTOP) sellstop_ticket=OrderTicket(); if(OrderType()==OP_BUY) buy_ticket=OrderTicket(); if(OrderType()==OP_SELL) sell_ticket=OrderTicket(); } if(total==0 && Time[0]==StartTime1) { buystop_ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Price,30,Ask-SL,0,"Pending",magic,0,Lime); sellstop_ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Price,30,Bid+SL,0,"Pending",magic,0,Red); }那么,有没有更好或更简单的方法让我这样做呢? 谢谢你 [Supprimé] 2016.03.23 15:54 #25 Trader3000:大家好我已经解决了大部分问题,EA在测试器中运行良好,但我在OrdersTotal方面仍有问题。在模拟模式下,它有时会打开两个挂单,但大多数时候只有买入或卖出。 我希望两个挂单同时打开(在几秒钟内),但只有在没有其他订单或挂单的情况下。 我认为发生的情况是,有时它在有机会计算订单数量之前就打开了两个挂单,而其他时候它实际上意识到一个挂单被发送,而不会打开另一个。我想,如果我把订单放在大括号内,当满足条件时,它会同时执行这两个订单。 我现在还知道,当我删除这些订单时,只要最后一根蜡烛正在形成,它就会继续打开挂单,也就是说,只要时间变量与Time[0]蜡烛匹配,点数就不重要。下面是这段代码。那么,有没有更好或更简单的方法让我这样做呢? 谢谢你 你是在检查 buystop_ticket和sellstop_ticket的值吗?如果只有一个开放,第二个就永远不会开放(除非你手动删除第一个)。 William Roeder 2016.03.23 18:25 #26 Trader3000: 我还发现了这段代码,这让我很感兴趣,因为SL和TP与OrderSend是分开的。 我也会研究一下这个问题ticket = OrderSend( Symbol(), OP_SELL, getPositionSize(), Bid, 3, 0, 0, "Basic CCI EA", magic, 0 , Red ); OrderModify( ticket, OrderOpenPrice(), Bid + SL, Bid - TP, 0 ); 当ECN经纪商开始时,OrderSend 会在设置了SL/TP后失败。自600版以来,大多数人已经解决了这个问题。 trader3000 2016.03.24 15:28 #27 zirkoner: 你在检查buystop_ticket和sellstop_ticket的值吗?如果只有一个开放,第二个将永远不会开放(除非你手动删除第一个)。谢谢你的回答。 事实上,买入止损和卖出止损订单在大约50%的时间里都会打开。 另外50%的时间里,买入或卖出都会被发送。 但我确实发现了一些问题。我问了最后一个错误,在那些两个都被发送的情况下,没有错误,但当只有一个打开时,我在没有打开的那个上得到了错误130。 因此,似乎我的止损是无效的,但我不知道为什么。 这里是SL的代码。extern int StopLossOriginal=11; int start(){ int stoplevel=(MarketInfo(Symbol(),MODE_STOPLEVEL))/10; if(StopLossOriginal<=stoplevel) StopLossOriginal=stoplevel; double point=Point*10, Price=Pipmove*point, SL=(StopLossOriginal-Pipmove)*point; if(total==0 && (Time[0]==time1) { buystop_ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Price,30,Ask-SL,0,"Pending",magic,0,Lime); Print("Buystop ticket =",buystop_ticket); sellstop_ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Price,30,Bid+SL,0,"Pending",magic,0,Red); Print("Sellstop ticket =",sellstop_ticket); }你说的" 你在检查buystop_ticket和sellstop_ticket的值吗?"是不是这个意思?"它返回两个值,即。2016.03.24 17:11:22.532 News_v10 GBPUSD,M1: Buystop ticket =-12016.03.24 17:11:23.227 News_v10 GBPUSD,M1: Buystop ticket =49644335 trader3000 2016.03.24 15:30 #28 WHRoeder: 当ECN经纪商开始时,在设置了SL/TP后,OrderSend 会失败。从600版开始,大多数人已经解决了这个问题。 谢谢你的回答,我也试过了,但没有什么不同,我在build950上。 [Supprimé] 2016.03.24 17:08 #29 Trader3000:谢谢你的回答。 事实上,买入止损和卖出止损订单在大约50%的时间里都会打开。 另外50%的时间里,买入或卖出都会被发送。 但我确实发现了一些问题。我问了最后一个错误,在那些两个都被发送的情况下,没有错误,但当只有一个打开时,我在没有打开的那个上得到了错误130。 因此,似乎我的止损是无效的,但我不知道为什么。 这里是SL的代码。你说的 "你在检查buystop_ticket和sellstop_ticket的值吗?"是不是这个意思?"它返回两个值,即。2016.03.24 17:11:22.532 News_v10 GBPUSD,M1: Buystop ticket =-12016.03.24 17:11:23.227 News_v10 GBPUSD,M1: Buystop ticket =49644335 你需要在你的两个OrderSend()之间添加RefreshRates()。 trader3000 2016.03.25 10:17 #30 zirkoner: 你需要在你的两个OrderSend()之间添加RefreshRates()。 成功了,非常感谢你。 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在if 语句之前和里面打印 你的变量,并找出原因。
好的,谢谢你,我会这样做,并进一步研究这个问题。 我还发现了这段代码,这让我很感兴趣,因为SL和TP与OrderSend是分开的。 也会研究这个问题的
大家好
我已经解决了大部分问题,EA在测试器中运行良好,但我在OrdersTotal方面仍有问题。在模拟模式下,它有时会打开两个挂单,但大多数时候只有买入或卖出。 我希望两个挂单同时打开(在几秒钟内),但只有在没有其他订单或挂单的情况下。 我认为发生的情况是,有时它在有机会计算订单数量 之前就打开了两个挂单,而其他时候它实际上意识到一个挂单被发送,而不会打开另一个。我想,如果我把订单放在大括号内,当满足条件时,它会同时执行这两个订单。 我现在还知道,当我删除这些订单时,只要最后一根蜡烛正在形成,它就会继续打开挂单,也就是说,只要时间变量与Time[0]蜡烛匹配,点数就不重要。
下面是这段代码。
那么,有没有更好或更简单的方法让我这样做呢? 谢谢你
大家好
我已经解决了大部分问题,EA在测试器中运行良好,但我在OrdersTotal方面仍有问题。在模拟模式下,它有时会打开两个挂单,但大多数时候只有买入或卖出。 我希望两个挂单同时打开(在几秒钟内),但只有在没有其他订单或挂单的情况下。 我认为发生的情况是,有时它在有机会计算订单数量之前就打开了两个挂单,而其他时候它实际上意识到一个挂单被发送,而不会打开另一个。我想,如果我把订单放在大括号内,当满足条件时,它会同时执行这两个订单。 我现在还知道,当我删除这些订单时,只要最后一根蜡烛正在形成,它就会继续打开挂单,也就是说,只要时间变量与Time[0]蜡烛匹配,点数就不重要。
下面是这段代码。
那么,有没有更好或更简单的方法让我这样做呢? 谢谢你
你在检查buystop_ticket和sellstop_ticket的值吗?如果只有一个开放,第二个将永远不会开放(除非你手动删除第一个)。
谢谢你的回答。 事实上,买入止损和卖出止损订单在大约50%的时间里都会打开。 另外50%的时间里,买入或卖出都会被发送。 但我确实发现了一些问题。我问了最后一个错误,在那些两个都被发送的情况下,没有错误,但当只有一个打开时,我在没有打开的那个上得到了错误130。 因此,似乎我的止损是无效的,但我不知道为什么。 这里是SL的代码。
你说的" 你在检查buystop_ticket和sellstop_ticket的值吗?"是不是这个意思?"它返回两个值,即。
2016.03.24 17:11:22.532 News_v10 GBPUSD,M1: Buystop ticket =-1
2016.03.24 17:11:23.227 News_v10 GBPUSD,M1: Buystop ticket =49644335
当ECN经纪商开始时,在设置了SL/TP后,OrderSend 会失败。从600版开始,大多数人已经解决了这个问题。
谢谢你的回答。 事实上,买入止损和卖出止损订单在大约50%的时间里都会打开。 另外50%的时间里,买入或卖出都会被发送。 但我确实发现了一些问题。我问了最后一个错误,在那些两个都被发送的情况下,没有错误,但当只有一个打开时,我在没有打开的那个上得到了错误130。 因此,似乎我的止损是无效的,但我不知道为什么。 这里是SL的代码。
你说的 "你在检查buystop_ticket和sellstop_ticket的值吗?"是不是这个意思?"它返回两个值,即。
2016.03.24 17:11:22.532 News_v10 GBPUSD,M1: Buystop ticket =-1
2016.03.24 17:11:23.227 News_v10 GBPUSD,M1: Buystop ticket =49644335
你需要在你的两个OrderSend()之间添加RefreshRates()。