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

 
MetaDriver:

質問です。

オブジェクトポインタの配列を関数に渡す必要があります。もちろん参照で(配列)。

どのような構文を使用すればよいのでしょうか?

それとも、何か別の使い方をしたほうがいいのでしょうか?

ポインタ宣言(型、変数型):MyObject* hobject

ポインタの配列(型、型変数の配列)の宣言:MyObject* hobject[].

参照渡し(型、渡された型変数配列)の場合:MyObject* &hobject[] となることが判明した。

混乱するのは、ポインタやポインタ配列を関数の引数として渡すことについての情報が見つからないことです。しかし、それは質問ですらなく、ただの免責事項です。

 
Karlson:
私はこのようなニーズに直面しました。 曲がりくねり、残酷ですが、正しい結果が得られます。 3つの入力データすべてでフラグを有効にし、falseでブロックします。

私は説明するのが苦手なんです。もう一回やらせてください。タスクは、各通貨が独自のパラメータを持つ、通貨のポートフォリオを形成することです。最適化されたポートフォリオでは、通貨は参加しないかもしれません。6つの通貨を各通貨ごとに21の最適化ステップで計算し、合計が億単位になるようにしました。

さて、問題です。もし、ある通貨があるフラグで取引することを禁じているならば、そのパラメータを最適化する意味はない。とにかく、そのパラメータは結果に何ら影響を与えないが、オプティマイザは結果に影響を与えないパラメータをあてはめようとしているのだ。自分では無理だとわかっていても、希望が湧いてくるようなものです。

 
ivandurak:

私は説明するのが苦手なんです。もう一回やらせてください。タスクは、各通貨が独自のパラメータを持つ、通貨のポートフォリオを形成することです。最適化されたポートフォリオでは、通貨は参加しないかもしれません。6つの通貨を各通貨ごとに21の最適化ステップで計算し、合計が億単位になるようにしました。

さて、問題です。もし、ある通貨があるフラグで取引されることを禁じたら、その通貨のパラメータを最適化する意味がありません。とにかく、そのパラメータは結果に何ら影響を与えませんが、オプティマイザは結果に影響を与えないパラメータを適用しようとし続けるでしょう。私のように、あなたができないことは分かっていますが、希望はまだ温めています。

だから、私はやはり最初に同じように皆さんにお伝えしました。

これらのパラメータはテスターで確認するべきではありません。

パラメータを最適化に関与させるためには、これらのチェックボックスをオンにする必要があります。チェックボックスが選択されていない場合、これらのパラメータは最適化されません。

P.S. あるいは、各ツールごとに最適化を行うこともできます。なるほど、そういうことだったのか。:)そして、すべての最適化を行った後、すべてのツールのスイッチを入れて、その累積結果をご覧ください。

 
tol64:

だから、結局一回目はうまくいったんです。

いや、そんなことはないだろう。さらに説明から判断すると、著者はすべての入力パラメータによる最適化を一度に開始 し、同時に、trpair2==falseの場合、何とかしていくつかのパスをスキップできないかと考えているようです。ここには、手動による「テスターのチェックボックス」は存在しない。
 
Yedelkin:
いいえ、そんなことはありません。さらに説明から判断すると、著者はすべての入力パラメータに対して一度に最適化を開始 し、trpair2==falseの場合、いくつかのパスを何とかしてスキップできないかと考えています。ここでは、「テスターのチェックボックス」を手動で設定することはできません。
それなら、私自身、そのような解決策があるのかどうか、興味があります。サービスデスクにプログラマブル・パラメータのリクエストを送った記憶があります。つまり、どのパラメータが選択されているかに応じて(例えばドロップダウンリストで)、すべての外部パラメータの共通リストとなります。反応がなかったから、そんな単純な話じゃないんです。そして、この質問は同じスレッドからのものです。どのパラメータを最適化するかによって、最適化されたパラメータのリスト(チェックボックス)が一般リストに設定されます。
 
tol64:
それなら、私自身、そのような解決策があるのかどうか、興味があります。
この状況に対する解決策も見つかっていません。もちろん、int OnInit() の中に、trpair2 を false にしたときに他のシンボルの最適化可能なパラメータの値を保存するブロックをねじ込んで、trpair2==false で 2 回目のパスをしたときに、「他のシンボルの最適化可能なパラメータの値を保存」した場合にはゼロ以外の戻りコードを生成する(つまり REAS_INIT 理由コードを持つ Deinit イベントを生成)ことも可能である。がREASON_INITFAILED deinitialization reason code を持つDeinit イベントを生成します)。しかし、これだけではちょっと面倒くさそうですね。
 
Yedelkin:
いいえ、正しくありません。さらに説明から判断すると、著者はすべての入力パラメータに対して一度に最適化を開始 し、trpair2==falseの場合、いくつかのパスを何とかしてスキップできないかと考えています。手動による「テスターのチェックボックス」は存在しない。
まさにその通りです。ただ、可能かどうかの判定を書き忘れているのはあなたです。
 
Yedelkin:
この状況に対する解決策も見つかっていません。もちろん、int OnInit() の中に、trpair2 パラメータに false を代入すると、最適化可能なパラメータの値を他のシンボルで保存するようなブロックを組み合わせることも可能で、trpair2==false で 2 回目のパスがあった場合に、「他のシンボルで最適化可能なパラメータの値を保存」して、ゼロ以外の戻りコードを生成します(つまり、初期化を解除したコードで Deinitイベントを生成します)。つまり、初期化理由コードREASON_INITFAILED を持つDeinit イベントを発生させるでしょう。)でも、これだけだと、なんだか面倒くさそうですね。
もっとシンプルなものです。条件が実行されると、Expert Advisor は単純にそれを削除することができます - ExpertRemove()。ドローダウンを想定して実装しています。最適化の途中などでドローダウンが設定値に達している場合は、それを削除して次のパスを開始します。
 
ivandurak:
その通りです。できる、できないの評決を書き忘れたのは、あなただけです。
できます。前の記事と同様に試してみてください。
 
tol64:
もっとシンプルなものです。条件が実行されたら、Expert Advisor を削除する - ExpertRemove()を実行するだけです。ドローダウンを想定して実装しています。最適化の途中などでドローダウンが設定値に達している場合は、それを削除して次のパスを開始します。

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