[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 318 1...311312313314315316317318319320321322323324325...631 新评论 Рустам 2012.08.12 12:28 #3171 Zhunko: 没有检查,但不知何故。 完全无用的姿态足以使 double res=NormalizeDouble(res,1) 在数学上仍能处理 double res = 3; 或 double res = 3.0。 这种差异只有在打印输出(图)中才能看到,但这并不在作者对问题的描述中。 Vadim Zhunko 2012.08.12 13:13 #3172 FAQ: 完全无用的姿态足以使 double res=NormalizeDouble(res,1) 在数学上仍能处理 double res = 3; 或 double res = 3.0。 差异只会在打印输出(图表)中显示出来,但这并不在作者对问题的描述中。 那么,你可以这样做。 double MathRoundDec(double dValue) { return(MathRound(10 * dValue) / 10); } 我认为第一个变体更好。它的工作速度会更快。 Victor Nikolaev 2012.08.12 13:15 #3173 Zhunko: 好吧,你可以这样去做。 我认为第一个选项是最好的。它的工作速度会更快。 这个选项。 double res=NormalizeDouble(res,1); 应该是最快的 [删除] 2012.08.12 13:25 #3174 谢谢大家。我将在星期一汇报--我将尝试所有的选择! Рустам 2012.08.12 13:27 #3175 Vadim的版本快了20-25%,但当迭代次数超过一百万时,效果开始稳定地显现出来。(检查) Victor Nikolaev 2012.08.12 13:38 #3176 FAQ: Vadim的版本快了20-25%,但当迭代次数超过一百万时,效果开始稳定地显现出来。(检查) 给我看看代码,你是怎么检查的? [删除] 2012.08.12 13:40 #3177 FAQ: Vadim的版本快了20-25%,但当迭代次数超过一百万时,效果开始稳定地显现出来。(经测试) 非常感谢您! [删除] 2012.08.12 13:42 #3178 okvseok: 正确的写法是:如果(OrderSelect (OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY) == OrderTakeProfit() == OrderClosePrice()Stop=false //即如果最后一笔订单在Take Profit(达到一定水平后获利)处关闭,Stop=false?(在全局变量中停止) 这个问题的出现是因为订单打开的条件是if((iClose(NULL,0,1)<ma) && Stop==True)... Рустам 2012.08.12 13:44 #3179 永远不要比较,非正常化的拍摄,毫无用处。顺便说一下,拿货订单的收盘价 可能与拿货价不同(真实/演示(在线))。 因此,更正确的做法是测量价格差异模块,将其与测试值进行比较。 if(MathAbs(OrderTakeProfit()-OrderClosePrice())<2*Point){Stop=false;} Рустам 2012.08.12 13:46 #3180 Vinin: 给我看看你的代码,你是如何测试它的 double in = 3.24857,res; int i, pretime = GetTickCount(); for(i=0;i<1000000;i++){res=MathRound(in*10)/10;} Print("Stage 1 : ",GetTickCount()-pretime); pretime = GetTickCount(); for(i=0;i<1000000;i++){res=NormalizeDouble(in,1);} Print("Stage 2 : ",GetTickCount()-pretime); 震惊了我自己:))) 1...311312313314315316317318319320321322323324325...631 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
没有检查,但不知何故。
完全无用的姿态足以使 double res=NormalizeDouble(res,1) 在数学上仍能处理 double res = 3; 或 double res = 3.0。
这种差异只有在打印输出(图)中才能看到,但这并不在作者对问题的描述中。
完全无用的姿态足以使 double res=NormalizeDouble(res,1) 在数学上仍能处理 double res = 3; 或 double res = 3.0。
差异只会在打印输出(图表)中显示出来,但这并不在作者对问题的描述中。
那么,你可以这样做。
我认为第一个变体更好。它的工作速度会更快。好吧,你可以这样去做。
我认为第一个选项是最好的。它的工作速度会更快。这个选项。
应该是最快的
Vadim的版本快了20-25%,但当迭代次数超过一百万时,效果开始稳定地显现出来。(检查)
给我看看代码,你是怎么检查的?
Vadim的版本快了20-25%,但当迭代次数超过一百万时,效果开始稳定地显现出来。(经测试)
正确的写法是:如果(OrderSelect (OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY) == OrderTakeProfit() == OrderClosePrice()Stop=false //即如果最后一笔订单在Take Profit(达到一定水平后获利)处关闭,Stop=false?(在全局变量中停止)
这个问题的出现是因为订单打开的条件是if((iClose(NULL,0,1)<ma) && Stop==True)...
永远不要比较,非正常化的拍摄,毫无用处。顺便说一下,拿货订单的收盘价 可能与拿货价不同(真实/演示(在线))。
因此,更正确的做法是测量价格差异模块,将其与测试值进行比较。
给我看看你的代码,你是如何测试它的
震惊了我自己:)))