Time()的问题 - 页 7 12345678 新评论 Simon Gniadkowski 2012.06.02 07:55 #61 onewithzachy: 工具。告诉我们工具的情况,不要尴尬,我从RaptorUK、dabbler和SDC那天的评论中学到了。所以,请告诉我们。 :D 看来你的问题的答案是Molanis .. . http://www.molanis.com/forum/viewtopic.php?f=2&t=1450 dabbler 2012.06.02 09:09 #62 RaptorUK: 看来你的问题的答案是Molanis .. . http://www.molanis.com/forum/viewtopic.php?f=2&t=1450有趣的是,这也是 https://www.mql5.com/en/forum/126224 了解我们正在谈论的背景是有帮助的! 我一直在回避这个话题,因为各方都有如此多的不满。这似乎没有必要。 也许OP应该开始一个新的主题,这样受访者就不必100%准确地阅读200个帖子来弄清楚发生了什么。 而且,也许每个人都 可以停止叫人的名字。 dabbler 2012.06.02 09:33 #63 RaptorUK: Day(), DayOfWeek(), TimeDay()和TimeDayOfWeek()在Straegy Tester(build 427)中似乎都能正常工作 ......你真的是想在你的代码中使用Day(),还是应该用你的代码构建东西 ......不管你用什么东西来为你编码,它应该使用DayOfWeek()? 第一个,Day() 给出一个值0-31,第二个DayOfWeek() 给出一个值0-6 星期日是 0 Dooh!我浏览了那段代码,没有发现这个问题,而且我在自己的代码中也使用了这些确切的函数。发现得好:-) Simon Gniadkowski 2012.06.02 09:36 #64 dabbler: 有趣的是,这也是 https://www.mql5.com/en/forum/126224 了解我们正在谈论的背景是有帮助的! 我一直在回避这个话题,因为各方都有如此多的不满。 这似乎是不必要的。 是的 ......但有些人是帮不上忙的,他们脑子里有一个固定的想法,认为自己的代码是好的,而MT4是垃圾 ......。 我试图帮助OP,他显然是把Day()和DayOfWeek()混为一谈,尽管从他的第一篇帖子中可以看出情况是这样的,但他还是不愿意接受 ... ... 有些人就是帮不了忙。 Simon Gniadkowski 2012.06.02 09:37 #65 dabbler: Dooh!我浏览了那段代码,没有发现这个问题,而且我在自己的代码中也使用了这些确切的函数。发现得好:-) onewithzachy :也发现了......但由于这个主题的所有活动,我错过了他的帖子。 Ian Venner 2012.06.04 04:00 #66 还有一件事我们都没有注意到,好吧,我注意到了,但在这个疯狂的主题中,我没有意识到没有人提到它,OP发布了这个。 Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 && TimeHour(TimeCurrent()) >=23 && TimeMinute(TimeCurrent()) >=57 || Day() == 5 && TimeHour(TimeCurrent()) >=21 && TimeMinute(TimeCurrent()) >=57 你不能把所有这些|||||||||||||||&&&&作为一个条件串起来,而不使用一些括号来分解它。 看看它的最后部分。 || Day() == 5 && TimeHour(TimeCurrent()) >=21 && TimeMinute(TimeCurrent()) >=57 我不相信当前面的部分为假时,会导致条件为真,除非使用一些括号将其与条件的其他部分分开。 dabbler 2012.06.04 08:26 #67 SDC:还有一件事我们都没有注意到,好吧,我注意到了,但在这个疯狂的主题中,我没有意识到没有人提到它,OP发布了这个。你不能把所有这些||||||||||||||&&&&作为一个条件串起来,而不使用一些括号来分解它。 有趣的是,我确实检查过 了,似乎没有问题。MQL4和C语言(以及其他每一种计算机语言)都有一套优先权规则,对逻辑表达式进行精确的 解释。然而,正在使用的工具说这样的 "复杂表达式 "是含糊不清的!(对于这一点,我们应该读作没有正确的解释。(对于这一点,我们应该理解为没有正确执行)。WHR之前确实发布过,表达式应该放在括号里。这显然是很好的做法,因为要打开书来弄清楚哪个表达式后面有哪个优先规则,意味着代码是不可读的。 Ian Venner 2012.06.04 13:58 #68 好吧,我现在不得不检查一下,因为我从来没有写过这样的代码,并且让它按照我的想法工作,所以这里有一个简单的脚本来测试它。我把原条件中的每一个比较都换成了相应的整数比较,以使它易于阅读/测试/调试。除了最后一个||运算符之后的部分,所有的都是假的。int start() { //---- int a,b,c,d,e; a=1; b=2; c=3; d=4; e=1; //---- if( a==b || b==c || c==d || d==e && a>=b && c>=d || a==e && b>=a && c>=a ) Alert("condition true"); else Alert("condition false"); //---- return(0); }这使得条件为假,告诉我。 || Day() == 5 && TimeHour(TimeCurrent()) >=21 && TimeMinute(TimeCurrent()) >=57在OP代码中,即使Day()被替换成DayOfWeek(),也不会使条件变为真,但如果我们在其中加入一些小括号....。int start() { //---- int a,b,c,d,e; a=1; b=2; c=3; d=4; e=1; //---- if( (a==b || b==c || c==d || d==e && a>=b && c>=d) || (a==e && b>=a && c>=a) ) Alert("condition true"); else Alert("condition false"); //---- return(0); } 现在它起作用了,条件变成了真的。 dabbler 2012.06.04 15:44 #69 SDC: 好吧,我现在不得不检查一下,因为我从来没有写过这样的代码,并且让它按照我的想法工作,所以这里有一个简单的脚本来测试它。 做得不错。我还发现,MQL4的优先级规则 ... https://docs.mql4.com/basis/operations/rules 逻辑OR高于逻辑AND,这与K & R(第二版)不一致 。 但是,像你一样,我从来没有真正使用过这些东西,我只是在东西周围加上括号,或者使用单独的行,这样我就可以理解我自己的代码了。 dabbler 2012.06.04 18:10 #70 SDC: 现在它起作用了,条件变成了真的。 这是我的贡献(测试脚本) ... int start(){ string str = "LOGIC"; for( int N=0; N<2; N++ ){ bool bN= (N==1); string strN= "false AND "; if( bN ) strN = "true AND "; for( int M=0; M<2; M++ ){ bool bM= (M==1); string strM= "false OR "; if( bM ) strM = "true OR "; for( int P=0; P<2; P++ ){ bool bP = (P==1); string strP= "false = "; if( bP ) strP = "true = "; str = str + "\n" + strN + strM + strP; if( bN && bM || bP ) str = str + "true"; else str = str + "false"; } } } Comment( str ); return(0); } 它是这样做的... 清楚地表明,逻辑OR 测试首先完成(更高的优先级),然后再进行逻辑AND 测试......事实上,就像MQL4文档中所说的:-) 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
工具。告诉我们工具的情况,不要尴尬,我从RaptorUK、dabbler和SDC那天的评论中学到了。所以,请告诉我们。
:D
看来你的问题的答案是Molanis .. . http://www.molanis.com/forum/viewtopic.php?f=2&t=1450
有趣的是,这也是
https://www.mql5.com/en/forum/126224
了解我们正在谈论的背景是有帮助的!
我一直在回避这个话题,因为各方都有如此多的不满。这似乎没有必要。
也许OP应该开始一个新的主题,这样受访者就不必100%准确地阅读200个帖子来弄清楚发生了什么。
而且,也许每个人都 可以停止叫人的名字。
RaptorUK:
Day(), DayOfWeek(), TimeDay()和TimeDayOfWeek()在Straegy Tester(build 427)中似乎都能正常工作 ......你真的是想在你的代码中使用Day(),还是应该用你的代码构建东西 ......不管你用什么东西来为你编码,它应该使用DayOfWeek()? 第一个,Day() 给出一个值0-31,第二个DayOfWeek() 给出一个值0-6 星期日是 0
有趣的是,这也是
https://www.mql5.com/en/forum/126224
了解我们正在谈论的背景是有帮助的!
我一直在回避这个话题,因为各方都有如此多的不满。 这似乎是不必要的。
Dooh!我浏览了那段代码,没有发现这个问题,而且我在自己的代码中也使用了这些确切的函数。发现得好:-)
还有一件事我们都没有注意到,好吧,我注意到了,但在这个疯狂的主题中,我没有意识到没有人提到它,OP发布了这个。
你不能把所有这些|||||||||||||||&&&&作为一个条件串起来,而不使用一些括号来分解它。
看看它的最后部分。
我不相信当前面的部分为假时,会导致条件为真,除非使用一些括号将其与条件的其他部分分开。还有一件事我们都没有注意到,好吧,我注意到了,但在这个疯狂的主题中,我没有意识到没有人提到它,OP发布了这个。
你不能把所有这些||||||||||||||&&&&作为一个条件串起来,而不使用一些括号来分解它。
好吧,我现在不得不检查一下,因为我从来没有写过这样的代码,并且让它按照我的想法工作,所以这里有一个简单的脚本来测试它。
我把原条件中的每一个比较都换成了相应的整数比较,以使它易于阅读/测试/调试。除了最后一个||运算符之后的部分,所有的都是假的。
这使得条件为假,告诉我。
在OP代码中,即使Day()被替换成DayOfWeek(),也不会使条件变为真,但如果我们在其中加入一些小括号....。
现在它起作用了,条件变成了真的。好吧,我现在不得不检查一下,因为我从来没有写过这样的代码,并且让它按照我的想法工作,所以这里有一个简单的脚本来测试它。
做得不错。我还发现,MQL4的优先级规则 ...
https://docs.mql4.com/basis/operations/rules
逻辑OR高于逻辑AND,这与K & R(第二版)不一致 。
但是,像你一样,我从来没有真正使用过这些东西,我只是在东西周围加上括号,或者使用单独的行,这样我就可以理解我自己的代码了。
现在它起作用了,条件变成了真的。
这是我的贡献(测试脚本) ...
它是这样做的...
清楚地表明,逻辑OR 测试首先完成(更高的优先级),然后再进行逻辑AND 测试......事实上,就像MQL4文档中所说的:-)