同じ動作をさせる条件において、多くの "or"(|)を避けることは可能でしょうか? - ページ 4

 

borilunad:

最も複雑な計算でも、必要なさまざまな市場データやオープンポジションを1ティックごとにチェックする機能ほど遅くなることはない。

ホリエモン、MarketInfoは最悪のテスト問題の1つだ。私は通常、このような場合、可能であれば2つのブロックに分けて書き、「本物」のクエリーは実際の取引モードのときだけ作るようにしています。特に、未測定の(テスターでの)データなどに有効です。

int spread;

int init()
{
...

   if(IsTesting())
   {
      spread = MarketInfo(Symbol(),MODE_SPREAD);
   }

...
 
}

int start()
{
...

   if (!IsTesting())
   {
      spread = MarketInfo(Symbol(),MODE_SPREAD);
   }

...
}

また、ブロック if(!IsTesting()) で RefreshRates() や MODE_BID と MODE_ASK への問い合わせ(クイックビッドとアスクに置き換える)などをいろいろと送ることができるようになりました。

 
alsu:

ホリエモン、MarketInfoは最悪のテスト問題の1つだ。私は通常、このような場合、可能であれば2つのブロックに分けて書き、「本物」のクエリーは実際の取引モードのときだけ作るようにしています。特に、未測定の(テスターでの)データなどに有効です。

また、ブロック if(!IsTesting()) で RefreshRates() や MODE_BID と MODE_ASK への問い合わせ(クイックビッドとアスクに置き換える)などをいろいろと送ることができるようになります。

起動時にあるMarketInfo機能ではなく、アクションを起こすために必要な条件に指定されたマーケットやオープンポジションの 各種パラメータをチェックする機能のことです。しかも、BidとAskは必ず使うので、MODE_BIDとMODE_ASKは必要ない。
 
pako:

パコさん、ありがとうございました。どうして当てなかったんだろう、こんなに簡単なのに!これから夕食をとり、できることをやって、通過速度を確認します。

そして、この意味がわからないのです。その数字はどこから持ってきたのですか?また、短い変数名に興味があるなら、長いものよりも短いものの方がいいですね。それとも他に?そうそう、今気づいたのですが、私の数式にcloの前とcloの後の最後に2つの括弧が追加されていましたね。そんなの全然必要ない、計算が乱れる。でも、ありがとうございました。

<--- 10,444 = 8,087 > 3,908は何語ですか?

作って、確認して、うまくいきましたが、結果はまだ私を喜ばせていません、実質的に実行の時間を減らすことができなかったのです明日は、できる限りのことをやってみる。そうすれば、何か変化があるかもしれない。

しかし、とにかく、あなたやPako、Aleksey、Victorなどのおかげで、コードを書くためのもう一つの重要な方法を学ぶことができたので、非常に感謝しています。

 

そんな時は関数を使います。

例えば、こんな感じです。

...
if (Request()) Action;

bool Request()
{
 if (A) return(true);
 if (B) return(true);
 if (C) return(true);
 if (D) return(true);
 return(false);
}
 
borilunad:
私はいつもBidとAskを使っています。

その場合、RefreshRates() が必要です)。
 
icas:

そんな時は関数を使います。

例えば、こんな感じです。

私の理解では、あなたはすべての条件を満たすという選択肢がありますが、私にとっては1つの条件だけで十分であり、それ以上の条件を満たしたとしても、それは非常に異なるので、ありえないことですが、1つの条件が発動されるため、そうはならないのです。もし私が間違っているならば、それを正当化してください!私はいつでも新しいことを聞くのが好きなのです。ありがとうございます。
 
alsu:

その場合、RefreshRates() が必要です)。
はい、最初にRefreshRates()があるのですが、それだけでは不十分でしょうか?
 
borilunad:
はい、最初にRefreshRates()があるのですが、それだけでは不十分でしょうか?
すべては、計算の実行にかかる時間次第です。この期間中に価格が更新され、AskとBidが無関係になる場合があります。したがって、取引を 実行する前(正確には、取引の価格を計算する前)に RefreshRates() を追加で呼び出すとよいでしょう。
 
borilunad:
はい、Startの最初にRefreshRates()を入れていますが、それだけでは不十分でしょうか?
AskとBidがまだ廃止されていないため、Startの開始時にRefreshRatesを使用する意味はありません。
 
alsu:
すべては、計算の実行にかかる時間次第です。この間に価格が更新され、AskとBidが無関係になる状況もあり得る。そのため、取引実行前(というか、取引価格を計算する前)に RefreshRates() を追加で呼び出すとよいでしょう。

つまり、一連の条件の前にRefreshRates()が必要なのですね。 というのも、各実行関数の中にもRefreshRates()があり、そこでエラーチェックをして、順番を繰り返して、それで十分だと思っていたのです。では、さらにRefreshRates()を入れてみて、どうなるのか見てみますありがとうございます。

そしてPap'e Yozhもありがとうございました

理由: