同じ動作をさせる条件において、多くの "or"(|)を避けることは可能でしょうか? - ページ 2 12345678910 新しいコメント Boris 2013.02.08 12:08 #11 TarasBY: また、この方法で計算を最適化することもできます。 ありがとうございます。すでにbool Avalsを使うようにアドバイスされ、Vininからは「マジで遅くなる」と警告されました。そして、EAをほぼ完成させた後、コードで最適化するために何か他のものを探しています。すでに、12ヶ月で全てのティックのテスターの稼働時間を40分から13分に短縮することに成功しているのです Рустам 2013.02.08 12:09 #12 何度も言われていることですが、MCLに近道はなく、if(a||b||c||d||e){}すべての条件がチェックされます。 出口は巣立ちの条件です。 if(a){if(b){if(c){}} この場合、最初にマッチした条件で終了します。しかし、ネストは無限ではありません。最も柔軟な解決策は、ループ内で条件をチェックし、終了することです。bool cond[]={a,b,c,d,e,...}; int sz = ArraySize(cond); for(int i=0;i<sz;i++){ if(cond[i]){ bla.bla.bla; break; } } TarasBY 2013.02.08 12:29 #13 Vinin: できますが、スピードはかなり落ちます。 Victorさん、(bool変数の使用に関する)あなたの警告は、私の最適化オプションにも適用されるのでしょうか? Boris 2013.02.08 12:31 #14 FAQ: 何度も言われていることですが、MCLに近道はなく、if(a||b||c||d||e){}ですべての条件がチェックされます。 出口は巣立ちの条件です。 if(a){if(b){if(c){}} この場合、最初にマッチした条件で終了します。 しかし、ネストは無限ではありません。最も柔軟な解決策は、ループ内で条件をチェックし、終了することです。 ありがとうございました。試してみます!スペイン語は話せますか?だって、「ブラ、ブラ、ブラ」は「話す」(hablar)という動詞から来ているんですもの! Рустам 2013.02.08 12:34 #15 いや、でもオルバンは得意なんです :)) Boris 2013.02.08 15:00 #16 FAQ: いや、でもオルバニアはよく知ってるよ :)) if(a){if(b){if(c){}} という条件のネストは、すべての条件が相互に排他的であるため、よくないのですが、booleanでは何かうまくいきません。おそらく、そして最も可能性が高いのは、私が何か間違ったことをしていることです。今のところ、条件ごとに変数doubleを作って、同じif()に4つの "or "で貼り付けるところで止まっています。予想通り、テストのスピードに影響は出ていません。12ヶ月で全てのティックに同じ13分。 それとも、この言語がオブラートと 呼ばれているのでしょうか? Alexey Subbotin 2013.02.08 15:18 #17 borilunad: 入れ子になった条件 if(a){if(b){if(c){}} は、すべての条件が相互に排他的であるため、よくありません。おそらく、そして最も可能性が高いのは、何か間違ったことをしていることです。 例えば、a || b = !( !a && !b ) のように、ブール演算の恒等式を覚えておけば、すべてうまくいきます。そして、接続詞から論理和に変えることで、OR条件のチェックを連続した(入れ子の)AND条件のチェックに置き換えることができる。例えば、(a || b || c)が、上でTarasBYが正しく書いたように、次のようになる場合だ。bool M = true; if(!a) {if(!b) {if(!c) M=false;}} if(!M) {Action;}このコードは、リストの条件の1つが真になるまで、すなわち全体のOR演算がTRUになるまでしか実行されないので、一般に||を用いた元のコードよりも高速である。 Alexey Subbotin 2013.02.08 15:21 #18 alsu: 例えば、a || b = !( !a && !b ) のように、ブール演算の恒等式を覚えておけば、すべてうまくいきます。そして、接続詞から論理和に変えることで、OR条件のチェックを連続した(入れ子の)AND条件のチェックに置き換えることができる。例えば、(a || b || c)が、TarasBYが上で正しく書いたように、次のようになる場合だ。このコードは、リストの条件の1つが真になるまで、すなわち全体のOR演算がTRU結果をもたらすまでしか実行されないので、一般に||を用いた元のコードよりも高速である。 また、例えば、条件AがCよりも平均的に多く実行され、CがBよりも多く実行されることが分かっている場合、次のような順番で並べると高速化できます。 if(!a){if(!c)if{(!b)M=false;}}。 Boris 2013.02.08 15:34 #19 alsu: 例えば、a || b = !( !a && !b ) のように、ブール演算の恒等式を覚えておけば、すべてうまくいきます。そして、接続詞から論理和に変えることで、OR条件のチェックを連続した(入れ子の)AND条件のチェックに置き換えることができる。例えば、(a || b || c)が、上でTarasBYが正しく書いたように、次のようになる場合だ。 このコードは、リストの条件の1つが真になるまで、すなわち全体のOR演算がTRU結果をもたらすまでしか実行されないので、一般に||を用いた元のコードよりも高速である。 ご参加ありがとうございました。5つの異なるが同じ値の条件を持っていて、どの条件も真でなければ、EAはそのうちの1つが実行されるのを待ちます。そのため、せっかく導入したのに、どの形も良くなかったということになります。ですから、今は "パイ "にこだわります。 Alexey Subbotin 2013.02.08 15:36 #20 borilunad: ご参加ありがとうございました。5つの異なるが等しい条件を持っていて、どの条件も満たされない場合、EAはそのうちの1つが満たされるのを待つのです。そのため、私が努力しても、どのような形でも良いというわけではありません。ですから、今は "パイ "にこだわります。 今、お見せしたものも?じゃあ、何か別の方法で性能を向上させるべきですね。 12345678910 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
また、この方法で計算を最適化することもできます。
何度も言われていることですが、MCLに近道はなく、if(a||b||c||d||e){}すべての条件がチェックされます。
出口は巣立ちの条件です。
if(a){if(b){if(c){}} この場合、最初にマッチした条件で終了します。
しかし、ネストは無限ではありません。最も柔軟な解決策は、ループ内で条件をチェックし、終了することです。
何度も言われていることですが、MCLに近道はなく、if(a||b||c||d||e){}ですべての条件がチェックされます。
出口は巣立ちの条件です。
if(a){if(b){if(c){}} この場合、最初にマッチした条件で終了します。
しかし、ネストは無限ではありません。最も柔軟な解決策は、ループ内で条件をチェックし、終了することです。
いや、でもオルバニアはよく知ってるよ :))
if(a){if(b){if(c){}} という条件のネストは、すべての条件が相互に排他的であるため、よくないのですが、booleanでは何かうまくいきません。おそらく、そして最も可能性が高いのは、私が何か間違ったことをしていることです。今のところ、条件ごとに変数doubleを作って、同じif()に4つの "or "で貼り付けるところで止まっています。予想通り、テストのスピードに影響は出ていません。12ヶ月で全てのティックに同じ13分。
それとも、この言語がオブラートと 呼ばれているのでしょうか?
入れ子になった条件 if(a){if(b){if(c){}} は、すべての条件が相互に排他的であるため、よくありません。おそらく、そして最も可能性が高いのは、何か間違ったことをしていることです。
例えば、a || b = !( !a && !b ) のように、ブール演算の恒等式を覚えておけば、すべてうまくいきます。そして、接続詞から論理和に変えることで、OR条件のチェックを連続した(入れ子の)AND条件のチェックに置き換えることができる。例えば、(a || b || c)が、上でTarasBYが正しく書いたように、次のようになる場合だ。
このコードは、リストの条件の1つが真になるまで、すなわち全体のOR演算がTRUになるまでしか実行されないので、一般に||を用いた元のコードよりも高速である。
例えば、a || b = !( !a && !b ) のように、ブール演算の恒等式を覚えておけば、すべてうまくいきます。そして、接続詞から論理和に変えることで、OR条件のチェックを連続した(入れ子の)AND条件のチェックに置き換えることができる。例えば、(a || b || c)が、TarasBYが上で正しく書いたように、次のようになる場合だ。
このコードは、リストの条件の1つが真になるまで、すなわち全体のOR演算がTRU結果をもたらすまでしか実行されないので、一般に||を用いた元のコードよりも高速である。
例えば、a || b = !( !a && !b ) のように、ブール演算の恒等式を覚えておけば、すべてうまくいきます。そして、接続詞から論理和に変えることで、OR条件のチェックを連続した(入れ子の)AND条件のチェックに置き換えることができる。例えば、(a || b || c)が、上でTarasBYが正しく書いたように、次のようになる場合だ。
このコードは、リストの条件の1つが真になるまで、すなわち全体のOR演算がTRU結果をもたらすまでしか実行されないので、一般に||を用いた元のコードよりも高速である。
ご参加ありがとうございました。5つの異なるが等しい条件を持っていて、どの条件も満たされない場合、EAはそのうちの1つが満たされるのを待つのです。そのため、私が努力しても、どのような形でも良いというわけではありません。ですから、今は "パイ "にこだわります。