遺伝的アルゴリズムとその応用の可能性 - ページ 4

 
Edgar Akhmadeev:

昔、EAでフレームを使った時に書いたことがあります。正確なポイントは覚えていませんが、全コマ(最良の結果)が得られていないようです。古い記事を探して、解明してみます。

しかし、Expert Advisorでは、オーバーシュートの数が一定数を超え、それが科学的に表示された途端に、私の遺伝子が壊れてしまうという、はっきりとした再現性があったことを記憶しています。重要なのは、変数のステップ数が大きいだけでなく、変数の数も大きいということでした。

すべてに意味がある。

大きな」遺伝子に関するフレームには問題があります。

必ず直します。

 
Slava:

全く正常に動作しない」とはどういうことですか?

どうすれば誤動作を再現できるのか?

https://www.mql5.com/ru/forum/321656/page17#comment_13569022

もうフレームで確認することはない、諦めた。

しかし、通常のゲン担ぎでは、前回のビルドで確認しました。以下は、「桁あふれ」を起こさない場合の結果です。


中断後。

2020.03.16 20:50:57.436 Tester  genetic optimization finished on pass 646 (of 160164854439975000)
2020.03.16 20:50:57.436 Statistics      optimization done in 8 minutes 36 seconds
2020.03.16 20:50:57.436 Statistics      shortest pass 0:00:00.002, longest pass 0:00:23.060, average pass 0:00:06.276

オーバーフロー」あり。


EAによる何度かの割り込みパス(入力変数が正しいかどうかのチェック)を経た後、ジェネが永遠に止まってしまった。 中断後。

2020.03.16 20:59:08.235 Tester  genetic optimization finished on pass 18
2020.03.16 20:59:08.235 Statistics      optimization done in 6 minutes 10 seconds
2020.03.16 20:59:08.235 Statistics      shortest pass 0:00:00.003, longest pass 0:00:05.978, average pass 0:00:01.339

実際の結果は一つもない。

例としてAdvisors/MAPSARSizeOptimized.ex5を試したところ、うまくいきました。桁あふれ」や「フレーム」の問題は、私のEAでしか再現できないことは明らかなのですが、どうやって問題を見つけるのか...。OnTradeTransactionなど、すべてが非常に複雑です。フレームも外しました。コードをお見せすることはできませんし、1メガバイトほどの巨大なものです。また、再現性のある例まで切り詰めると、絶望的なほど長い時間がかかります。時間があれば、OnTradeTransactionを削除してみたり、他の仕掛けをしてみようと思います。

実は、パスの数を超えなければ、すべてうまくいくのです。

そして、フレームはビルド2286包括まで(超過することなく)問題なく動作しました。

Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы
Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы
  • 2019.10.16
  • www.mql5.com
В настоящий момент тестер стратегий MetaTrader 5 подвергается глубокой переработки командой MQ...
 
Igor Makanu:

...

GA は、しばらくすると、最適化パラメータの小さなグループに収束し始めることがあります。

...

ある極値への収束は、あらゆる最適化アルゴリズムにとって完全に正常な現象であり、このセクションがグローバルでもローカルでもない/ないと仮定する示唆はない。

また、あるセグメントを踏破し始めたときに、極限が見つかるかどうか、事前にわからないが、必ず別の場所を探索する必要がある、といった突然変異の割合(あるいは探索範囲の拡大を増幅するロジックに相当)を増幅できる仕組みをAOは持つべきであると考えます。

例えば、最大残高の基準が設定され、いくつかのまたは多くのポイントが絶対的にそれに対応するかもしれませんが、そのうちのいくつかだけが本当の価値を持っています。例えば、残高98756423は11%のドローダウンで1523回の取引で到達し、同じ残高は95%のドローダウンで12回の取引で到達しました、この二つの違いは何でしょうか。

 
Edgar Akhmadeev:

試験官による中断されたパス(入力変数が正しいかどうかのチェック)を何度か経た後、ジェネティクスは永遠に停止したままだ。中断した後。

実際の結果は一つもない。

フォーラムに書いたかどうか忘れましたが、本当に問題で、なぜMTに実装されているのかが不明です。もしエキスパートが "間違ったパラメータ "というエラーコードを 返した場合、テスターは代わりに別のインスタンスを生成し、母集団を完成させなければならない、という考え方があります。

 
Stanislav Korotky:

フォーラムに書いたかどうか忘れましたが、本当に問題で、なぜMTに実装されているのかが不明です。もしエキスパートが "間違ったパラメータ "というエラーコードを 返した場合、テスターは代わりに別のインスタンスを生成し、母集団を完成させなければならない、という考え方があります。

すべての不正なパラメータの組み合わせに対してINIT_PARAMETERS_INCORRECTを返すと、その数が多すぎて生成はエラーで終了してしまいます。そこで、特定のパラメータがおかしいときだけ、INIT_PARAMETERS_INCORRECTを返すようにしています。また、組み合わせが悪い場合(一方のパラメータが他方を上回ってはいけない)、パスを停止し、INIT_SUCCEEDEDとCustom = -Nを返します。これはおそらく遺伝子を狂わせるのでしょうが、選択肢はないでしょう。というか、間違った組み合わせ(特に、v1=X, v2=Y+v1 のように、あるパラメータを別のパラメータにデルタ化する)を取り除くという選択肢もあるのですが、変異原性が強すぎるのです。2つのパラメータは硬くリンクされ、一方を変えるとすべてがずれてしまう。私は、このオプションから離れ、エラーの代わりに偽の結果を出すことを優先しました。

 
Edgar Akhmadeev:

間違ったパラメータの組み合わせに対してすべてINIT_PARAMETERS_INCORRECTを返すと、その数が多すぎて生成はエラーで終了してしまいます。なので、特定のパラメータがおかしいときだけ、INIT_PARAMETERS_INCORRECTを返すようにしています。また、組み合わせが悪い場合(一方のパラメータが他方を上回ってはいけない)、パスを停止し、INIT_SUCCEEDEDとCustom = -Nを返します。これはおそらく遺伝子を狂わせるのでしょうが、選択肢はないでしょう。というか、間違った組み合わせ(特に、v1=X, v2=Y+v1 のように、あるパラメータを別のパラメータにデルタ化する)を取り除くという選択肢もあるのですが、変異原性が強すぎるのです。 2つのパラメータは硬くリンクされ、一方を変えるとすべてがずれてしまう。私は、エラーではなく偽の結果を優先して、このオプションをあきらめました。

良いオプションは、無効な variant の場合、エラーの代わりに -DBL_MAX を返すことです。

また、クラウドエージェントを含む全てのCPUコアやネットワークエージェントを使用することができ、早すぎるパス完了や人員不足でエージェントがアイドル状態になることを避けることができました。

通常のオプティマイザに数種類のAOを実装し、さらにパラメータを付けて実装する計画があるという情報が、tSSSSSだけありますが、これは不正確な情報です。

 
Andrey Dik:

は、無効な variant に対して、エラーの代わりに -DBL_MAX を返すようにするとよいでしょう。

また、ランダムな値を返した場合、AOは悪化するのでしょうか?

 
Igor Makanu:

また、レンダリングされた値を返すと、AOが悪くなるのでしょうか?

もっとひどい

AOの頭を混乱させるのが目的なら、乱数を返すのが一番いい方法です。

 
Andrey Dik:

は、無効な variant ではエラーの代わりに -DBL_MAX を返すようにするとよいでしょう。

これはやりすぎだ、グラフがスケーリングされているので、有用な結果が見えない。最悪のケースである「カスタム」よりも少し高い値を返す。しかし、肝心なのは、改善の方向性を正しく設定することです。

イゴール・マカヌ

また、レンダリングされた値を返した場合、AOにとって不利になるのでしょうか?

何が言いたいの?正しい方向性を示すことがメインなので、弱いだけでなく、ここで最悪の結果を示したというGAを見せなければならないのです。

 
Slava:

全く動かない」とはどういうことですか?

誤操作を再現するにはどうしたらよいですか?

OnTradeTransactionを削除しましたが、役に立ちませんでした考え続ける。