記事"連続ウォークフォワード最適化(パート4):最適化マネージャ(オートオプティマイザ)"についてのディスカッション

 

新しい記事 連続ウォークフォワード最適化(パート4):最適化マネージャ(オートオプティマイザ) はパブリッシュされました:

この記事の主な目的は、アプリケーションとその機能を操作するメカニズムについて説明することです。 したがって、この記事は、アプリケーションの使用方法に関する説明書としても使うことができます。 アプリケーションの使用法においてありがちな落とし穴と詳細を扱っています。

作成したプログラムの分析を進めるには、まずこのプロジェクトの目的を定義する必要があります。 トレードに科学的なアプローチを使用することを決定し、明確にプログラムされたトレードアルゴリズムを作成し始めました(インジケータベースのロボットを扱うか、ファジーロジックとニューラルネットワークを使用している人を扱うかどうかにかかわらず、すべては特定のタスクを実行するプログラムアルゴリズムです)。 したがって、最適化結果の選択に対するアプローチも形式化する必要があります。 言い換えれば、トレードプロセスでランダム性を適用することを拒否している間に、トレードの準備プロセスも自動化されるべきです。 それ以外の場合は、システムトレードよりも直感に近いランダムに好きな結果を選択できます。 このアイデアは、このアプリケーションを作成することを奨励した最初の動機です。 次の例は、アルゴリズムを最適化してテストします 。   


連続的なウォークフォワード最適化は、特定の時間間隔でのヒストリー(黄色)と前方(緑)最適化パスの間で交互に行われます。 例えば、10年分のヒストリーがあるとします。 最適化期間は、1 年に等しい間隔と 1 4半期 (または 3 か月) の順方向の間隔で構成する必要があります。 その結果、1つの最適化合格+フォワードテストの1.25年(1年+14半期)に等しい間隔があります。 図では、各行がこの時間間隔を特徴付けます。

作者: Andrey Azatskiy

 
真剣に取り組んでいる。同じEAで自動最適化の 異なる実装間の結果を比較するのは興味深い。
 
fxsaber:
真剣に取り組んでいる。同じEAで自動最適化の異なる実装間の結果を比較するのは興味深い。

前向きなご意見ありがとうございます。

 

ボランティアでこのような仕事をするのは本当に偉業だ。週間分の執筆と約半年分のコード開発がある。最適化の自動化は、端末のクライアント部分にとって最も重要な仕事ではないですか?残念ながらMQはそれに注意を払わず、ブローカーのリクエストにもっと注意を払う(彼らは金を払う)。ユーザーからの熱狂的なコメントが爆発的に増えないのは不思議だ。誰も最適化していないのか?

私はまだプロジェクトをコンパイルする機会がなく、デバッグ・ モードでインターフェイスを見たり、記事を読んだりしただけだが、すべてが非常に有望に見える。Visual Studioでコンパイルする方法を教えてほしい。

各最適化インターバルについて、市場概要にツールを列挙する機能が追加されるといいですね。パワーが必要だが、短い間隔で結果を評価することができるだろう。まあ、ロシアのローカライズとか?しかし、すべてはこのままでいい。

あなたの労をねぎらって、握手とお辞儀をします。

 
Good Beer:

ボランティアでこのような仕事をするのは、本当に偉業だ。週間分の執筆と約半年分のコード開発がある。最適化の自動化は、端末のクライアント部分にとって最も重要な仕事ではないですか?残念ながらMQはそれに注意を払わず、ブローカーのリクエストにもっと注意を払う(彼らは金を払う)。ユーザーからの熱狂的なコメントが爆発的に増えないのは不思議だ。誰も最適化しないのか?

まだプロジェクトをコンパイルする機会がなく、デバッグモードで インターフェイスを見たり、記事を読んだりしているだけだが、非常に有望に見える。Visual Studioでのコンパイル方法を教えてほしい。

各最適化インターバルについて、市場概要にツールを列挙する機能が追加されるといいですね。パワーが必要だが、短い間隔で結果を評価することができるだろう。まあ、ロシアのローカライズとか?でも、今のままですべてクリアです。

あなたの労をねぎらって、握手とお辞儀をします。

私の開発がお役に立つことを願っています。

コンパイルについてですが、スタジオのデバッグモードでプロジェクトを実行すると、すでにコンパイルされています。MetaTrader Auto Optimiser/bin/Debugディレクトリにあります。

 

まだプログラムを始めていないが、最初の質問がすでに出ている:

1.ユーザー定義の最適化基準は サポートされていないのですか?それは非常に必要です。

2.継続的な最適化スライディングはどのように行われるのでしょうか?すべての最適化範囲と前進範囲を手動で入力しなければならないのですか?なぜこのように実装しないのか:

最適化開始日/最適化期間(月、週、日)/最適化期間/フォワード期間/フォワードスケール。プログラムで期間をパスに分割する。私はこれをマルチテスターで行った。しかし、1年かけて1週間ずつでも書き出すと、頭が真っ白になる。スキャルピングも使える。

3.ちょっとした疑問なのですが、なぜマクロ置換「TESTER_ONLY」が必要なのですか?これがないと、Expert Advisorはチャートからアンロードしてしまいます。

 
Good Beer:

私はまだあなたのプログラムを始めていませんが、すでに最初の質問を持っています:

1.ユーザー定義の最適化基準は サポートされていないのですか?それは非常に必要です。

2.最適化の連続スライドはどのように行われるのですか?すべての最適化範囲と前進範囲を手動で入力しなければならないのですか?なぜこのように実装しないのか:

最適化開始日/最適化期間(月、週、日)/最適化期間/フォワード期間/フォワード期間。プログラムで期間をパスに分割する。私はこれをマルチテスターで行った。しかし、1年かけて1週間ずつでも書き出すと、頭が真っ白になる。そしてスキャルピングも使える。

3.ちょっとした疑問なのですが、なぜマクロ置換「TESTER_ONLY」が必要なのですか?これがないと、Expert Advisorはチャートからアンロードしてしまいます。

1.1.カスタム基準は、他の多くの異なる置換として、私は記入していないが、将来的には、プロジェクトを開発することを思えば(このシリーズのすべての記事が完了すると、私はさらに2つを計画している) - あなたはそれを追加することができ、それは難しいことではありません。合理的な判断であっても、あなたのアドバイスに感謝します。

2.日付については、一度だけ入力し、ファイルに保存しておけば、後は保存したファイルを読み込むだけです。この内訳は、私自身が先物市場で株式市場のテストに使っていることから作りました。先物のテストはステープルで行われ、ステープルの日付は固定されておらず、ブローカーから提供される。そのため、テスト期間がステープルの瞬間に当たらないように、ステープルの内訳を手動で設定しています。必要な最適化ウィンドウを一度入力し、ファイルに保存してから、このファイルをロードするだけです。

3. 実生活で誤って実行されないマクロ。Expert Advisorはテスト用で、実際の取引用にはまだ完成していない。誰かが実際の取引で誤って実行しないように、このマクロを#defineすることにした。この#defineのおかげで、Expert Advisorはテスターの中だけで動作するようになり、一度にチャート上にロボットをロードすると、単に削除されるだけです。

 
Good Beer:

2.連続的なスライディングの最適化はどのように確保されるのか?

最終回では、スライディング・オプティマイゼーションを提供する全プロセスを、コードを添付して順を追って説明する。ポイントは、最適化アルゴリズム自体は別に実装されているということです。また、先に述べたように、現在の最適化アルゴリズムに別のアルゴリズムを追加することもできます。

 

Good Beer:

まだプロジェクトをコンパイルできていません.

コンパイルする最も簡単で速い方法は、プロジェクトを開いてCTRL+SHIFT+Bを 押すことだ

さらに視覚的な方法として、エディターで緑の矢印をクリックすると、アプリケーションはコード・デバッグ・ モードで起動しますが、コンパイルも行われます。

別のオプション - ドロップダウンメニューから、パスMetaTrader Auto Optimiser/bin/Debug(または 選択したビルドタイプに応じてMetaTrader Auto Optimiser/bin/Release)のBuild

Laterをクリックすると、コンパイルされたプログラムが表示されます。

 

ソート・ウィンドウには、いくつかの最適化基準を 入力することができる。どのように掛け合わせるのだろうか。 いずれにせよ、カスタムでなければできない。例えば、取引回数をルートとしたり、シャープを取引回数にモジュロするのも良い。このアイデアをあきらめないでください。

期間のリストはMQLツールを使って作成することができる。

define TESTER_ONLYについては、TESTER_ONLYがなくても括弧内の式は機能するという意味です。なぜ置換を使用する必要があるのか理解できません。

 
Good Beer:

ソート・ウィンドウには、いくつかの最適化基準を 入力することができる。どのように掛け合わせるのだろうか。 いずれにせよ、カスタムでなければできない。例えば、取引回数をルートとしたり、シャープを取引回数にモジュロするのも良い。このアイデアをあきらめないでください。

期間のリストはMQLツールを使って作成できます。

define TESTER_ONLYについては、TESTER_ONLYがなくても括弧内の式は機能するという意味です。なぜ置換を使う必要があるのか理解できません。



ピリオドのリスト - 正確には自動オプティマイザに必要です。自動オプティマイザは自分でテストを切り替えるので、これらのピリオドを見るはずです(結果のプログラムのロジックに従って)。

defineに関して:

#ifdef  TESTER_ONLY
   if(MQLInfoInteger(MQL_TESTER)==0 &&
      MQLInfoInteger(MQL_OPTIMIZATION)==0)
     {
      Print("This expert was created for demonstration! It is not anabled for real trading !");
      ExpertRemove();
      return(INIT_FAILED);
     }
#endif

これはコンパイル時に実行される条件です。define TESTER_ONLYを定義してプロジェクトをコンパイルすると、この条件に包まれた式がビルドに含まれます。このようにすることで、もし誰かが自分の責任で実験したりロボットを動かしたい場合、#define TESTER_ONLYをコメントアウトするだけで、ソースコードを変更せずに済むようにした。



選択された複数のソートを考慮する方法は、このシリーズの最初の記事で説明されている。そこでは、パラメータの正規化を通じてすべてが行われる。しかし、前にも述べたように、独自のオプティマイザを作成し、これらのパラメータを考慮する独自のシステムを作ることができます。