哪种设计是正确的? - 页 3 12345678 新评论 PapaYozh 2010.06.15 12:52 #21 Techno: PapaYozh,这两个选项都只针对关闭,但修改呢?与关闭和修改的两个不同的循环相比,有2个点来进行全面处理 更好? 如果有些东西必须被关闭,有些东西必须被修改,那么结构for (i=0; i<OrderTotals(); i++)就更不正确了。 我们必须从OrdersTotal()-1移到0。 for ( i=OrderTotals()-1; i>=0; i-- ) { Sergey Guliaev 2010.06.15 12:56 #22 即这是正确的设计吗? void Close_All() { int Total = OrdersTotal(); for (int i=Total; i >=1; i--) { if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true) { switch(OrderType()) { case OP_BUY : OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5); break; case OP_SELL: OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5); break; default : break; } } } } Sergey Guliaev 2010.06.15 13:02 #23 然而,我仍然不理解这种正常化。 如果我计算出价格是一回事,那么很明显,它必须被带到终端的数字上。 但在这种情况下,我们是以从流动中获得的当前价格 收盘,当然,它不能长于数字。 TheXpert 2010.06.15 13:06 #24 valenok2003: 但在这里,它也是以从流量中得出的当前价格收盘的,当然,这个价格不能长于数字。 这是为一个有非正常化报价的测试者准备的。 techno 2010.06.15 13:07 #25 valenok2003:然而,我仍然不理解这种正常化。 如果我计算出价格是一回事,那么很明显,它必须被带到终端的数字上。但在这种情况下,我们是以从流动中获得的当前价格收盘,当然,它不能长于数字。 有时数字=4 时,投标可能等于1.32343545654。不经常,但它发生了。 Sergey Guliaev 2010.06.15 13:09 #26 Techno: 有时候,当数字=4的时候,出价可以是1.32343545654,这种情况会发生。不经常,但它发生了。 活到老,学到老。谢谢你。 Vladyslav Goshkov 2010.06.15 19:36 #27 valenok2003: 即这是正确的设计吗? 并非如此:对乐器的 "符号 "没有检查。如果订单将对一个以上的工具开放,那么你就有可能以另一个工具的价格关闭一个工具的订单。如果您需要关闭专家顾问在其图表上被移动的符号的订单,那么您必须使用该图表的 "符号"。 如果您需要关闭所有订单,无论EA被移动到哪个图表,那么请阅读订单的 "符号",并要求获得相应 "符号 "的卖价和买价。而且代码中还有一些不必要的动作。 好运。 Martingeil1 2010.06.15 20:21 #28 valenok2003: 即这是正确的设计吗? void CloseThisSymbolAll() { for (int trade = OrdersTotal() - 1; trade >= 0; trade--) { OrderSelect(trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol()) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { while (!IsTradeAllowed()) Sleep(1000); if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits), slip, Blue); if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), slip, Red); Print ("close ALL orders Type : order : Bid "+OrderType()+" : "+OrderOpenPrice()+" : "+Bid); } } } } 像这样做。 Sergey Guliaev 2010.06.16 06:53 #29 VladislavVG: 是的,而且代码中还有额外的动作。 如果你是指这个int Total = OrdersTotal(); 那么这里就有一个额外的变量,用于代码透明。 或者你说的是别的东西? Sergey Guliaev 2010.06.16 07:33 #30 Techno: 有时在数字=4时,投标可能等于1.32343545654。不经常,但它发生了。 然而,在close.mq4 脚本的例子中(在标准MT4交付中),没有规范化。 if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) { cmd=OrderType(); //---- first order is buy or sell if(cmd==OP_BUY || cmd==OP_SELL) { while(true) { if(cmd==OP_BUY) price=Bid; else price=Ask; result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE); if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); } else error=0; if(error==135) RefreshRates(); else break; } } } 12345678 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
PapaYozh,这两个选项都只针对关闭,但修改呢?与关闭和修改的两个不同的循环相比,有2个点来进行全面处理 更好?
如果有些东西必须被关闭,有些东西必须被修改,那么结构for (i=0; i<OrderTotals(); i++)就更不正确了。
我们必须从OrdersTotal()-1移到0。
即这是正确的设计吗?
然而,我仍然不理解这种正常化。
如果我计算出价格是一回事,那么很明显,它必须被带到终端的数字上。
但在这种情况下,我们是以从流动中获得的当前价格 收盘,当然,它不能长于数字。
但在这里,它也是以从流量中得出的当前价格收盘的,当然,这个价格不能长于数字。
然而,我仍然不理解这种正常化。
如果我计算出价格是一回事,那么很明显,它必须被带到终端的数字上。
但在这种情况下,我们是以从流动中获得的当前价格收盘,当然,它不能长于数字。
有时候,当数字=4的时候,出价可以是1.32343545654,这种情况会发生。不经常,但它发生了。
活到老,学到老。谢谢你。
即这是正确的设计吗?
并非如此:对乐器的 "符号 "没有检查。如果订单将对一个以上的工具开放,那么你就有可能以另一个工具的价格关闭一个工具的订单。如果您需要关闭专家顾问在其图表上被移动的符号的订单,那么您必须使用该图表的 "符号"。 如果您需要关闭所有订单,无论EA被移动到哪个图表,那么请阅读订单的 "符号",并要求获得相应 "符号 "的卖价和买价。而且代码中还有一些不必要的动作。
好运。
即这是正确的设计吗?
是的,而且代码中还有额外的动作。
那么这里就有一个额外的变量,用于代码透明。
或者你说的是别的东西?
有时在数字=4时,投标可能等于1.32343545654。不经常,但它发生了。
然而,在close.mq4 脚本的例子中(在标准MT4交付中),没有规范化。