未结订单总量的问题 - 页 5 12345 新评论 Keith Watford 2016.05.17 13:36 #41 你需要重新思考一下你的代码。buy_hedge==0 && sell_hedge==0 && OrderOpenPrice()>Bid+Hedge*Pip)这些将永远是真的,因为你把它们都设置为零,并且不改变它们。你没有用大括号{}括住下面的代码块你没有使用GV来检查任何东西,你用一个整数来命名它。检查没有任何作用,因为你没有把返回的bool分配给任何变量。检查OrderSend是否失败,如果失败,打印错误代码。 trader3000 2016.05.18 10:27 #42 GumRai:你需要重新思考一下你的代码。这些将永远是真的,因为你把它们都设置为零,并且不改变它们。你没有用大括号{}括住下面的代码块你没有使用GV来检查任何东西,你用一个整数来命名它。由于你没有将返回的bool分配给任何变量,所以检查没有任何作用。检查OrderSend是否失败,如果失败,打印错误代码。谢谢你,我想我的思路是正确的,但现在它将打开多个对冲交易,尽管它说总数<=1。 我的代码现在看起来像这样。if(total<=1 && OrderOpenPrice()>Bid+Hedge*Pip){ GlobalVariableCheck(ticket); sell_hedge=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLossHedge*Pip,0,"Hedge",0,0,Blue); sell_hedge=GlobalVariableGet(ticket); sell_hedge=sell_hedge+1; GlobalVariableSet(ticket,sell_hedge); int New_SellHedge=GlobalVariableGet(ticket); if(sell_hedge!=New_SellHedge) {sell_hedge=New_SellHedge;} } } trader3000 2016.05.19 16:10 #43 谢谢你的建议,我终于弄明白了,现在可以用了。 这段代码看起来像这样。if(GlobalVariableCheck("InTrade")){ } else if(OrderOpenPrice()>Bid+Hedge*point){ sell_ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLossHedge*point,0,"Hedge",magic,0,Blue);{ GlobalVariableSet("InTrade",1); GlobalVariableDel("InTrade"); return(0); } } } Keith Watford 2016.05.19 21:52 #44 GlobalVariableSet("InTrade",1); GlobalVariableDel("InTrade");设置GV然后立即删除它的意义何在? trader3000 2016.05.20 11:57 #45 GumRai:设置GV然后立即删除它的意义何在?有道理,谢谢你。 那么,这样做是不是更好?if(GlobalVariableCheck("InTrade")){ } else if(OrderOpenPrice()>Bid+Hedge*Pip){ sell_ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLossHedge*Pip,0,"Hedge",magic,0,Blue);{ GlobalVariableSet("InTrade",1); return(0); } } } GlobalVariableDel("InTrade"); Keith Watford 2016.05.20 12:14 #46 Trader3000:有道理,谢谢你。 那么,这样做是不是更好。不,它仍然没有任何意义。应该有一个删除GV的理由 trader3000 2016.05.24 08:53 #47 GumRai:不,这还是完全没有意义。应该有一个删除GV的理由再次感谢你,这个怎么样?int total=0; for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==0 && OrderSymbol()== total++; } if(GlobalVariableCheck("InTrade")){ } else if(total==1 && OrderOpenPrice()>Bid+Hedge*Pip){ sell_ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLossHedge*Pip,0,"Hedge",magic,0,Blue);{ GlobalVariableSet("InTrade",1); if(total<1) GlobalVariableDel("InTrade"); return(0); } } } Keith Watford 2016.05.24 10:47 #48 Trader3000:再次感谢你,这个怎么样?它仍然没有意义 else if(total==1 && OrderOpenPrice()>Bid+Hedge*Pip){ sell_ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLossHedge*Pip,0,"Hedge",magic,0,Blue);{ GlobalVariableSet("InTrade",1); if(total<1) GlobalVariableDel("InTrade"); return(0); } }这个代码块只有在total==1的情况下才会被执行,所以if(total<1)的检查 结果总是假的。 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你需要重新思考一下你的代码。
buy_hedge==0 && sell_hedge==0 && OrderOpenPrice()>Bid+Hedge*Pip)
这些将永远是真的,因为你把它们都设置为零,并且不改变它们。你没有用大括号{}括住下面的代码块
你没有使用GV来检查任何东西,你用一个整数来命名它。检查没有任何作用,因为你没有把返回的bool分配给任何变量。
检查OrderSend是否失败,如果失败,打印错误代码。
你需要重新思考一下你的代码。
这些将永远是真的,因为你把它们都设置为零,并且不改变它们。你没有用大括号{}括住下面的代码块
你没有使用GV来检查任何东西,你用一个整数来命名它。由于你没有将返回的bool分配给任何变量,所以检查没有任何作用。
检查OrderSend是否失败,如果失败,打印错误代码。
谢谢你,我想我的思路是正确的,但现在它将打开多个对冲交易,尽管它说总数<=1。 我的代码现在看起来像这样。
谢谢你的建议,我终于弄明白了,现在可以用了。 这段代码看起来像这样。
设置GV然后立即删除它的意义何在?
设置GV然后立即删除它的意义何在?
有道理,谢谢你。 那么,这样做是不是更好?
有道理,谢谢你。 那么,这样做是不是更好。
不,它仍然没有任何意义。
应该有一个删除GV的理由
不,这还是完全没有意义。
应该有一个删除GV的理由
再次感谢你,这个怎么样?
再次感谢你,这个怎么样?
它仍然没有意义
这个代码块只有在total==1的情况下才会被执行,所以if(total<1)的检查 结果总是假的。