Time()の問題点 - ページ 7 12345678 新しいコメント Simon Gniadkowski 2012.06.02 07:55 #61 onewithzachy: 道具のこと道具について教えてください 恥ずかしがらないでください 先日のRaptorUKさん、dabblerさん、SDCさんのコメントで勉強になりました。というわけで、教えてください. :D あなたの質問の答えは、モラニスのようです.. . 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 私たちが話していることの背景を知ることは役に立ちます このスレッドは、各方面であまりに多くの動揺があるため、私は避けていました。余計なお世話としか思えません。 回答者が100%の正確さで200の投稿を読んで何が起こっているのかを把握する必要がないように、OPは新しいスレッドを立ち上げるべきかもしれませんね。 あと、みんな 人の名前を呼ぶのをやめたらいいんじゃないかな。 dabbler 2012.06.02 09:33 #63 RaptorUK: Day(), DayOfWeek(), TimeDay() and TimeDayOfWeek() all seem to work correctly in Straegy Tester (build 427) ... 本当にあなたのコードでDay()を使うつもりだったのか、あなたのコードを作るべきもの ... あなたがあなたのためにコード化するのが何だとしても、それはDayOfWeekを使うべきだったか? 最初の、Day() は値0 - 31、第2の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: どーもー。私はそのコードに目を通しましたが、その問題には気がつきませんでしたし、私自身のコードでまさにその関数を使用しています。よくわかりました :-) 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 OK 私はこのようなコードを書いて、思ったように動作させたことがなかったので、今これを確認する 必要がありました。そこで、これをテストするための簡単なスクリプトを紹介します。読みやすく/テストしやすく/デバッグしやすくするために、元の条件の各比較を対応する整数の比較に置き換えてみた。最後の || 演算子の後を除いて、すべて偽になります。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()) >=57OPコードにあるように、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: OK 私はこのようなコードを書いて、思ったように動作させたことがなかったので、今これを確認する必要がありましたので、ここにそれをテストするための簡単なスクリプトがあります。 いい出来だ。あと、MQL4の優先順位のルールに目をつけました・・・。 https://docs.mql4.com/basis/operations/rules は論理ORが論理ANDより上位にあり、K & R(2nd ed)と異なって いる。 しかし、あなたのように、私はこれらをあまり使うことがなく、ただ自分のコードを理解できるように括弧をつけたり、行を分けたりするだけです 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千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
道具のこと道具について教えてください 恥ずかしがらないでください 先日のRaptorUKさん、dabblerさん、SDCさんのコメントで勉強になりました。というわけで、教えてください.
:D
あなたの質問に対する答えはMolanisであるようです.. . http://www.molanis.com/forum/viewtopic.php?f=2&t=1450
興味深いのは、このような
https://www.mql5.com/en/forum/126224
私たちが話していることの背景を知ることは役に立ちます
このスレッドは、各方面であまりに多くの動揺があるため、私は避けていました。余計なお世話としか思えません。
回答者が100%の正確さで200の投稿を読んで何が起こっているのかを把握する必要がないように、OPは新しいスレッドを立ち上げるべきかもしれませんね。
あと、みんな 人の名前を呼ぶのをやめたらいいんじゃないかな。
RaptorUK:
Day(), DayOfWeek(), TimeDay() and TimeDayOfWeek() all seem to work correctly in Straegy Tester (build 427) ... 本当にあなたのコードでDay()を使うつもりだったのか、あなたのコードを作るべきもの ... あなたがあなたのためにコード化するのが何だとしても、それはDayOfWeekを使うべきだったか? 最初の、Day() は値0 - 31、第2のDayOfWeek() 0 - 6日曜日が0という値で与える
興味深いのは、このような
https://www.mql5.com/en/forum/126224
私たちが話していることの背景を知ることは役に立ちます
このスレッドは、各方面であまりに多くの動揺があるため、私は避けていました。 ただ、あまりに不要な気がします。
どーもー。私はそのコードに目を通しましたが、その問題には気がつきませんでしたし、私自身のコードでまさにその関数を使用しています。よくわかりました :-)
もうひとつ、みんなが気づかなかったこと、いや、私は気づいたのですが、このおかしなスレッドの中で、誰も言及していないことに気づかなかったのですが、OPはこれを投稿していました。
|||| || || && && && && を条件としてつなぎ合わせることは、それを分解するためにいくつかの括弧を使用しない限り、できません。
その最後の部分を見てみると
括弧で区切らない限り、前の部分が偽のときに条件が真になるとは思えません。もうひとつ、みんなが気づかなかったこと、いや、私は気づいたのですが、このおかしなスレッドの中で、誰も言及していないことに気づかなかったのですが、OPはこれを投稿していました。
|||| || || && && && && を条件としてつなぎ合わせることは、それを分解するためにいくつかの括弧を使用することなしにできません。
OK 私はこのようなコードを書いて、思ったように動作させたことがなかったので、今これを確認する 必要がありました。そこで、これをテストするための簡単なスクリプトを紹介します。
読みやすく/テストしやすく/デバッグしやすくするために、元の条件の各比較を対応する整数の比較に置き換えてみた。最後の || 演算子の後を除いて、すべて偽になります。
これで条件が偽になり、私に教えてくれました。
OPコードにあるように、Day()をDayOfWeek()に置き換えても条件は真にならなかったが、そこにいくつかの括弧を入れると......。
これで動作し、条件が真になる。OK 私はこのようなコードを書いて、思ったように動作させたことがなかったので、今これを確認する必要がありましたので、ここにそれをテストするための簡単なスクリプトがあります。
いい出来だ。あと、MQL4の優先順位のルールに目をつけました・・・。
https://docs.mql4.com/basis/operations/rules
は論理ORが論理ANDより上位にあり、K & R(2nd ed)と異なって いる。
しかし、あなたのように、私はこれらをあまり使うことがなく、ただ自分のコードを理解できるように括弧をつけたり、行を分けたりするだけです
これでうまくいき、条件が真になる。
そして、これが私の貢献(テストスクリプト)です...
これを実行すると.
論理的なOR テストが最初に行われ(優先順位が高い)、次に論理的なAND テストが行われることが明確に示されています...実際MQL4のドキュメントに書かれている通りです :-)