一意性チェックとパラメータ・ベースの保存は正当か?アルゴリズムの速度劣化は測定されているか?
最適化では原則として膨大な探索空間が使用され、変種が繰り返される確率は極めて小さく、探索空間が小さい場合には完全な探索を行う方が合理的であるという事実に鑑みて。
ZЫ 考える材料を与えてくれた著者に感謝します。
ZZY コロニー(または集団)のサイズが一定で、ダウンタイムなしにエージェントを "ソフト "ローディングするという問題がどのように解決されるのか、記事を読み返している間、よく理解できませんでした。
この記事には、MT5側からのいくつかの未解決の瞬間が示されている。例えば、DLLを使わずにOnTesterInitで最適化されていないパラメータの値を取得すること。そして同じ手数料。
ソースコードに、DLL経由ですべてのテスターパラメーターを(マクロ経由で)読み込めるようにする可能性を追加するのは素晴らしいことです。準備はできています。
もう一つの希望は、PSO-passからopt-fileを生成することです。
この解決策と標準的なGAを性能と品質の点で比較することが必要でしょう。シンディケーターでないTCにとって、それは難しいことではないはずです(普遍的なスタイルなので、記事のソースに基づきます)。
この記事はスーパーだ!しかし、初心者向けではない。
読み終えた。
標準的なオプティマイザを置き換える作業にしてはコードが多すぎるし、包括的な表現も多すぎる。- 残念ながら、大多数の読者にとって、この記事は理解できないままだろう。
どのようなExpert Advisorでも、最小限の労力でPSOライブラリをねじ込むことができるのでしょうか?
理想的には、新しいExpert Advisor(最適化を計画しているあらゆるアルゴリズム)を書く必要があるたびにそれに入る必要がないように、最適化アルゴリズムは完全に独立したエンティティであるべきです。
その上、どのようなアルゴリズム設定がほとんどの実用的なケースで受け入れられるのでしょうか?- 著者はこの質問に答えていない。また、読者の探究心が同じアルゴリズムを使ってアルゴリズム・パラメーターを最適化 したいと思っても、コードが分離されていないため、すぐにはできません。
不愉快に思わないでほしいが、特定のタスクに不必要なコードがない、すぐに使えるツールは存在しないのだ。
完成した。
標準的なオプティマイザを置き換える作業にしてはコードが多すぎるし、包括的な表現も多すぎる。- 残念ながら、大多数の読者にとって、この記事は理解不能なままだろう。
どのようなExpert Advisorでも、最小限の労力でPSOライブラリをねじ込むことができるのでしょうか?
理想を言えば、最適化アルゴリズムは完全に別個のものであるべきで、新しいExpert Advisor(最適化されるアルゴリズム)を書く必要があるたびにそれに入る必要はない。
その上、ほとんどの実用的なケースにおいて、どのようなアルゴリズム設定が受け入れられるのでしょうか?- 著者はこの質問に答えていない。また、読者の探究心が同じアルゴリズムでアルゴリズムのパラメータを最適化 したいと思ったとしても、コードが分離されていないため、すぐに実行することはできないだろう。
不愉快に思わないでほしいが、特定のタスクに不必要なコードがない、すぐに使えるツールは存在しないのだ。
もちろん、巨大なものを受け入れることはできない。オープンソースのツールの2番目のイテレーションが発表された(最初の、並列化されていないものは以前にブログで発表された)。このツールは、コードをどこに配置し、どのように動作させるかをすでに理解しているという意味で、準備が整っている。まだ箱入りの製品がないことには同意する。しかし、それは市場で販売されるだろう。ここで紹介されているのは、説明書が用意されたDIYキットだ。
includnicsについては、良い生活からではなく、すべてを同じようにできる(そして必要な)同様の方法が社内にないために追加された。そして、このような日常的なことがインクルードニクスの形ですでに用意されていて、接続するだけでいいというのはとてもいいことだ(これについてはfxsaber-uに感謝する)。重複作業を避ける主な方法について、アルゴ・トレーディングのサイトで文句を言うのはおかしい。もしこれらのインクルードがなかったら、プロジェクト全体を一からやり直さなければならなかっただろう。それに、バトニクよりインクルードニクの方がいい。一般的に、サードパーティのプログラムやDLLに依存することはない。また、小さなコードで実装できる組み込みの最適化手法に代わるものは(一切)ない。
PSOパラメータの調整に関しては、どの最適化手法にとっても未解決の問題です。特に、ビルトインGAには、ユーザーが変更できないハードワイヤード設定があります。そのため、多くの人がこの点に不満を持ち、GAに基づくカスタムソリューションを注文しなければならないのです。つまり、設定がないことは悪いことであり、設定がある場合も悪いことなのです。つまり、それぞれのタスクについて研究することだ。誰かの専門家である未知のブラックボックスに対して準備の整った設定を求めるのは、その専門家にとって理想的なパラメータを(最適化なしで)求めるようなものだ。では、なぜ最適化そのものが必要なのか?なぜなら、エキスパートのパラメータを探すことも、特定の最適化アルゴリズムのメタパラメータを探すことも、それほど単純ではないからだ。あなたが求めているのは、まだ誰も見たことのないデータに対して、出来合いのニューラルネットワークの設定を求めているようなものです。ほとんどのエキスパートに最適な設定はありません。
もしユーザーがGAを1000回実行したなら、グループ数を1000に設定し、GAの世代数が100なら、PSOサイクルを100に設定し、個体群が100個なら、群サイズも100に設定する。
インクルードニックスに関しては、良い生活から追加されたのではなく、同じようなこと(そして必要なこと)をするための同じような標準的な方法がないから追加されたのだ。そして、このような日常的なことがインクルニクという形ですでに用意されており、接続するだけで利用できるのは非常に良いことだ(fxsaberに感謝する)。重複作業を避ける主な方法について、アルゴ取引のサイトで文句を言うのはおかしい。もしこれらのインクルードがなかったら、プロジェクト全体をゼロからやらなければならなかっただろう。それに、バトニクよりインクルードニクの方がいい。一般的に、サードパーティのプログラムやDLLに依存することはない。また、組み込みの最適化手法に代わる(どんな)手法も、小さなコードで実装することはできない。
仮想取引関数の 形で標準テスターの機能を複製するのは意味がない(少なくとも私には意味がわからない。
太字はそうかもしれない。
PSOのパラメーターを調整することに関しては、どの最適化手法にとっても未解決の問題だ。特に、ビルトインGAには、ユーザーが変更できないハードワイヤード設定があります。そのため、多くの人がこの点について不満を持ち、GAに基づくカスタムソリューションを注文しなければならないのです。つまり、設定がないことは悪いことであり、設定がある場合も悪いことなのです。つまり、それぞれのタスクについて研究することだ。誰かの専門家である未知のブラックボックスに対して準備の整った設定を求めるのは、その専門家にとって理想的なパラメータを(最適化なしで)求めるようなものだ。では、なぜ最適化そのものが必要なのか?なぜなら、エキスパートのパラメータを探すことも、特定の最適化アルゴリズムのメタパラメータを探すことも、それほど単純ではないからだ。あなたが求めているのは、まだ誰も見たことのないデータに対して、出来合いのニューラルネットワークの設定を求めているようなものです。ほとんどのエキスパートに最適な設定はありません。
もしユーザーがGAを1000回実行したなら、グループ数を1000に設定し、GAの世代数が100なら、PSOサイクルを100に設定し、集団の個体数が100なら、群サイズも100に設定する。
ニューラルネットワークと最適化アルゴリズムは同じではありません。NSは特定のデータで訓練する必要があり、データの純度、完全性、関連性に依存しますが、最適化アルゴリズムはこれらの要因に一切依存しないはずです。
しかし!いずれにせよ、この記事に対する私のコメントは純粋に実用的なものであり、原理的なものではない。最適化の問題については、どのような視点も存在する権利がある。あなたはこのように見ているが、私は多少違う見方をしている。
メルセデスをはじめとするアウディは、完成させるためではなく、楽しむために購入される...... 少なくとも、顧客の既存のプロジェクトにソリューションをねじ込む低血糖な方法は提示されるべきだ。
;)
興味深い 記事
バーチャル・トレーディングとテスターをリンクさせるという実装が気に入らなかった、
たぶん意図したとおりに動作しているのでしょうが、最適化のための実装は、仮想取引( Virtual.mqh)の 助けを借りて完全に行うか、あるいはターミナル・ストラテジー・テスター(OnTesterInit())の可能性を使って実装する必要があると思います、
または、ターミナル・ストラテジー・テスターの 可能性を利用した実装(OnTesterInit())。- 現在の実装では、ストラテジーテスターがどのように動作するかを想定することは困難です。
興味深い資料とソフトウェアの実装に感謝します。
順番にお答えします。
計算された組み合わせのハッシュを記憶することはオプションであり、必要であればソースから除外することができます。このチェックがあっても、取引自体の計算速度に比べれば、処理速度はそれほど遅くならないはずである。
パラメータの完全な列挙は、本当に小さなスペースでのみ意味を持ちますが、その間に数百万の組み合わせが存在します。例えば、10000通りの組み合わせに対して最適化を実行する必要があり、完全な検索には1時間かかるが、数分で概算を確認したいとします。この場合、明らかに高速な最適化方法が必要であり、重複する組み合わせの可能性が非常に高い。重複を検出することで、処理を高速化することができます。
エージェントのロードはテスターに任されています。トレードパスは平均的に均等に配分されます(数は均等で、複雑さはランダム化により平均化されます)。
オプトファイルを追加したいが、一度にはどうにもならない。すべてのオプションをねじ込むと、結果が日の目を見ることはない。
DLLや外部プログラムは、いわばデザイン的に使いたくない。
仮想取引関数を 使うことは非常に理にかなっている - 内蔵のものよりもはるかに速い。これはまず第一に、仮想取引関数を使うことで変更できるようになる。第二に、1つのパス(PSOグループ内)のループ内で何度もパラメーターを変更することができる。もしこれがなかったら、それぞれの個別のパスをグループ(プログラムとの関係では外部エンティティになっている)と同期させなければならない。そして新たなスーパーブレーキが生まれることになる。 仮想化せずに通常のテスターパスを使用する場合、独自の最適化アルゴリズムをMQL内に組み込むことは不可能だ。あなたならどうするか考えてみてください。これは外部プログラムやバトネットの助けを借りてのみ可能です。fxsaberには適切な "自動化ツール "もあるが、それは外部からの制御でプロセスを実行し、結果を組み立てることを意味する。これはブレーキの二乗であり、しかも使い勝手がまったく悪い。このような外部コントローラーを扱うには、もっと技術が必要だ。
標準的なオプティマイザーの代替を実装するための小さなコードについての発言については、私は同意できない。私の知る限りでは、代替機能も小さくはなく、専門家のコードを適応させる必要がある。もし、コードが小さく、EAへのプラグインが非常に簡単なスタンドアロンの最適化アルゴリズムに関する具体的なデモがあれば、ぜひ公開してください。)
最適化アルゴリズムが無関心であることについては、まるでチューニングなしでどんなタスクにも対応できるかのようだが、私はそうは思わない。それはある種の魔法であり、「銀の弾丸」だろう。
最適化アルゴリズムとNSアルゴリズムに根本的な違いはないと思います。どちらもメタパラメーターを持っている。
そして、「アルゴリズムの探索能力を調査する作業は 行われなかった」。出版物の目的は、研究を行いたい人たちに公開し、発見を共有することだ。
ネット上には自動最適化があるが(ブログで公開された)、それは1つのスレッドにしかなく、記事のポイントはアルゴリズムを並列化することだった。テスターをジョブのイテレータとして使い、グループ仮想カウントのためにエージェントに分配する--これがプロジェクト全体の最大のトリックだ。相乗効果。

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事「並列粒子群最適化」はパブリッシュされました:
本稿では、粒子群アルゴリズムを使用した高速最適化の手法について説明しています。また、この手法のMQLでの実装を提示します。これは、エキスパートアドバイザー内のシングルスレッドモードとローカルテスターエージェントで実行されるアドオンとしての並列マルチスレッドモードの両方ですぐに使用できます。
アルゴリズムの観点から、PSO手法は比較的単純です。その本旨は、エキスパートアドバイザーの入力パラメータの空間に仮想「粒子」のセットを生成することです。粒子は移動し、空間内の対応する点でのEAの取引指標に応じて速度を変更します。このプロセスは、パフォーマンスの向上が止まるまで何度も繰り返されます。アルゴリズムの擬似コードを以下に示します。
粒子群最適化の擬似コード
このコードによると、各粒子には、現在位置、速度、過去の「最良」点の記憶があります。ここで、「最良」点とは、この粒子の目的関数の最高値が達成された点(EA入力パラメータのセット)を意味します。これをクラスで説明しましょう。
作者: Stanislav Korotky