エラー、バグ、質問 - ページ 739

 
ivandurak:

ビットフィールドによる最適化、このバリアントでは不要なパスはありません。

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

input int bp=0;
int a=0;
int b=0;
Start()
{
 switch(bp)
   {
    case 0: a=0; b=0; break;
    case 1: a=0; b=1; break;
    case 2: a=1; b=0; break;
    default: a=1; b=1; break;    
   }
}

で、与えられたパラメータで最適化します。この例では、bp は 0 から 3 の間で最適化されます。

 
ivandurak:
できる、できないの評決を書き忘れたのは、あなただけです。
何も忘れてはいませんよ :)解決策を知らないからといって、解決策がないわけではないのだから、否定的な評をするのはおこがましい。
 
なるほどと思いました。こんな芸当で遺伝子がおかしくなるんだろうか。その結果、原理的には、作業用のパラメータセットはゼロの結果を与え、それ以上の選択には関与しないことが判明した。私はmethaqvotersの願いでより良い関連最適化可能なパラメータのようなものを書いて、それがfalseである場合、それはオーバーライドされるべきではないです。
 
Yedelkin:

どうして「簡単」なんだろう?:)EA を削除する条件やREASON_INITFAILED の条件は、まだ追跡する必要がある。これが、面倒くさそうなんですよね。

エレガントな解決策がない場合は、まず「簡単」なほうを使えばいいのです。もっといいものを探せば、いつでも買い替えられる。:)
 
ivandurak:
その結果、原理的には、作業用のパラメータセットはゼロの結果をもたらし、それ以上の選択には関与しないことが判明した。
私の拷問のようなアイデアの話なら、そうでもないのですが。Working set of parameters "で、最初のtrpar2=falseの パスで、かなり動作する結果が得られるでしょう。同じ「作業パラメータセット」とtrpar2=falseを 持つ後続のパスはすべて直ちにゼロを返しますが、あなたの「作業パラメータセット」はいずれにせよ選択に参加し、重複するパスは拒否されます。これがあなたの望んでいたことでしょう?
 
tol64:
エレガントなソリューションがない場合、まず「簡単な」ものを使うことができます。もし、より良いものが見つかれば、いつでも交換することができます。:)
もう一度言いますが、面倒なのは、どのコマンドでパスを早く終わらせるかではなく、それが何であれ、かなり原始的な解決策であることです。Botherness - 通過の早期完了のための追跡条件において。あなたの提案のおかげで通過が先に完了することから、「追跡ブロック」は減少せず、このブロックのエレガントさは何ら増加しません。
 
Yedelkin:
私の拷問のようなアイデアのことなら、そうでもないのですが。Working set of parameters "で、最初のtrpar2=falseで、かなり動作する結果が得られます。同じ「作業パラメータセット」とtrpar2=falseを 持つ他のすべてのパスは、直ちにゼロを返しますが、あなたの「作業パラメータセット」は、とにかく選択に参加することになります。これがあなたの望んでいたことでしょう?

少しは修正できるはずです。最適化パラメータは構造体に記述し、それら(単純構造体)は変数として扱う。コードは次のようになります。

if(!trpar && Par1==Parold1 && Par2==Parold2) { Parold1=Par; Parold2=Par2 ; return(9) } ここでParとParoldは、他の通貨ペアの最適パラメータを書き込むための構造体である。ifの数だけペアがあっても、それほど不格好には見えない。ありがとうございます。

 
Yedelkin:
もう一度言いますが、面倒なのは、どのコマンドでパスを早く終了させるかではなく、これは、どんなものであれ、かなり原始的な解決方法です。面倒なのは、早く峠を越すための条件を把握しておくことだ。あなたの提案で先に通過が完了することで、「トラッキングユニット」自体の煩わしさが軽減され、このユニットのエレガントさが増すということはないのです。

では、どういう意味だったのでしょうか?エレガントなソリューションがない場合は、一切使うべきではないということですか?あったとしても、でも、あなたの言うように「痛い」?

要するに、前に進もうということです。そうでなければ、コードよりも浸水から煩わしくなります。:)

 
ivandurak:

少しは修正できるはずです。最適化パラメータは構造体で記述し、それら(単純構造体)は変数として扱います。コードは次のようになります。

if(!trpar && Par1==Parold1 && Par2==Parold2) { Parold1=Par; Parold2=Par2 ; return(9) } ここでParとParoldは、他の通貨ペアの最適パラメータを書き込むための構造体である。

はい、そんな感じです。ただ、trpar2=falseと 衝突した「作業用パラメータセット」を全て記憶しておかなければならないことが判明しました。つまり、対応する構造物の配列が大きく広がる。また、新しいパスで読み込むためには、ファイルに保存しておく必要があります。
 
ivandurak:

少しは修正できるはずです。最適化パラメータは構造体に記述し、それら(単純構造体)は変数として扱う。コードは次のようになります。

if(!trpar && Par1==Parold1 && Par2==Parold2) { Parold1=Par; Parold2=Par2 ; return(9) } ここでParとParoldは、他の通貨ペアの最適パラメータを書き込むための構造体である。ifの数だけペアがあっても、それほど不格好には見えない。ありがとうございます。

もう一つバリエーションがあります(気が抜けてました)。

機能を見ていただいても結構です。OnTesterInit()、OnTesterPass()、OnTesterDeinit()の3つです。

そして、FrameFirst (),FrameFilter (),FrameNext (),FrameInputs (),FrameAdd()です。

まさに、そのためにあるのです。:)

つまり、現在の最適化における任意のパスの全パラメータをいつでも要求することができるのです。