無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
エキスパート

Gold Dust - MetaTrader 5のためのエキスパート

発行者:
Vladimir Karputov
ビュー:
1665
評価:
(32)
パブリッシュ済み:
2019.02.11 09:04
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

アイディアの作者 Yury Reshetov

MQ5コードの作者 - barabashkakvn

Gold Dust


理論

自動取引システムの多くには、過剰に最適化し、結果を過剰適合する傾向があります。つまり、過去の特定のデータ期間では非常に最適化されている一方、デモ口座やリアル口座では売買シグナルがランダムに近くなるため、負け取引が生じかねません。 これは、金融商品の非定常的な性格、すなわちそれらの統計的特性が不安定であることと関係しています。

過剰適合の可能性を判断するには、Robert Pardoの著書[1]に記載されている、いわゆる古典的なフォワードテストを使用します。 古典的な方法の考え方は次のとおりです。取引システムに、交差しない2つの履歴区間を選択します。 取引システムはいずれかの区間で最適化され、最初の区間で最適化されたパラメータによるフォワードテストが2番目の区間で実行されます。 2番目(過去)の履歴期間でのテストが成功しなかった場合、取引システムは過剰に最適化されていると見なされ、自動取引には適していません。 フォワードテストで肯定的な結果が得られた場合は、テスト期間中の取引システムの動作を確認するために追加の分析が実行されます。このような分析によってシステムの特性を識別できます。

しかし、Robert Pardoの著書[1]に記載されているすべてのテストに合格できるシステムは実際には存在しません。 したがって、作者は具体的な例を挙げていません。 ある区間での最適化および異なる区間でのフォワードテスト、さらにフォワードテストの分析を行っても保証はありません。

  1. 2番目の区間でフォワードテストが失敗した場合、頑健な取引システムが破棄される可能性があります。 実際には、最適化アルゴリズムはしばしば極値でループし、そのような値に対する取引システムパラメータを過剰適応します。
  2. 最適化もテストもまだ実行されていない別の独立した区間を取ってこの区間で追加の分析を実行すると、新しい分析結果が前のものと一致しなくなるため、フォワードテスト結果の分析は実質的に役に立ちません。 その理由は同じ、金融商品の非定常的な性格です。 さらに、1つの独立した区間で成功したフォワードテストが他のどの区間でも成功しない可能性があります。 したがって、これらの場合に分析するものは何もありません。

取引システムを評価する古典的な方法には多くの欠点があるので、もう一つのより信頼できる方法を開発してテストしました。これはGold dustです。

この新しい方法と古典的な方法の違いは、取引システムの最適化が1つの区間ではなく2つ以上の区間で実行されることです。 その結果、区間ごとに異なる取引システムパラメータのセットが得られます。 それらの中には同じものもあれば、違うものもあります。 おそらく、これらのパラメータセットの中には過剰に最適化されているものとそうでないものがあります。 これはフォワードテストを使って見つけることができます。 

フォワードテストは、1つだけではなく2つ以上の最適化されたパラメータセットを使用して実行されるという点で、従来のテストとは異なります。 考え方は次のとおりです。す取引システムがべてのパラメータセットで合意された取引の売買シグナルを与える場合、適切な取引が実行されます。 シグナルが異なる場合、すなわち、異なるセットのパラメータでシステムによって生成されたシグナルの取引に矛盾がある場合、取引システムは次の取引シグナルまで何もしません。

これはどういうことなのでしょうか。

ここでは、取引システムの頑健性について決定する必要があります。 取引システムは潜在的に頑健であり得えます。すなわち、それらが古典的方法においてフォワードテストに合格する確率はゼロより高いです。同時に、過剰適合の可能性が非常に高く、頑健でない可能性もあります。

  • 頑健でない取引システムは、2つ以上の履歴区間で過剰適合させて、過剰適合された取引シグナルが一貫していれば、頑健になる可能性があります。 すなわち一貫性を保つためにシグナルをフィルタリングすると、この取引システムは自動取引に使用できます。
  • 取引システムが多かれ少なかれ頑健であれば、取引シグナル一貫性モード(適合および非適合)でのフォワードテストの成功は、異なる履歴データ区間での最適化の結果として得られた1つ以上のパラメータセットが過剰適応されていない証拠であり、この取引システムは自動取引に使用できます。

シグナルが一貫性に基づいてフィルタリングされていても、最適化されていない区間での結果の安定性が取引には十分でないため、ここでは非頑健な取引システムについては考慮しません。 そのような取引システムは実験にもっと適しています。

添付ファイルで入手可能な頑健な取引システムに進みましょう。 この取引システムは将来の価格方向予測に基づいています。これは、標準的なMetaTraderストラテジーテスターの遺伝的アルゴリズムを使用して初等単層ニューラルネットワーク(履歴データに基づくパーセプトロン)の重み係数を選択することによって実装されています。 


取引システムパラメータの頑健さの最適化、テストおよび検出方法

H1時間枠で過去9ヶ月以上のEURUSD履歴データを使用します。 全期間をそれぞれ3か月の3つの独立した区間に分割しましょう。 最初の区間は最終テストで使用され、他の2つは履歴の最適化に使用されます。 2つのパーセプトロンを1つの取引システムに統合したので、毎回システムを別々に起動する必要はありません。

EAのSupervisor()スイッチャー関数は「pass」入力パラメーターに応じて3つのEA操作モードを有効にします。

  1. 1番目のパーセプトロンの最適化とテスト
  2. 2番目のパーセプトロンの最適化とテスト
  3. テストモードで2つのパーセプトロンの矛盾する値を最適化なしで除外する

パーセプトロンの重み係数 x11, x12 … x42、MA: averaging period Stop Lossが最適化されています。 Stop Loss入力パラメータはすべての区間で一定です。 これはすべてのポジションのストップロスレベルです。 あと一つの入力パラメータMA: averaging periodは、始値の差に対する遅延期間を表し、それもまた一定です。 

市場へのエントリは、新規バー形成の開始時、すなわち、passパラメータの値に応じたパーセプトロンシグナルに基づくバー始値で行われます。 エグジットはストップロスによってのみ実行されます。 最適化は遺伝的アルゴリズムを使用して実行され、それは極値(すなわち最大バランス)を検索します。 

アルゴリズムに対するマージンコールの影響を回避するには、初期金額を非常に大きくする必要があります(例:1,000,000ドル)。

第1段階では、

MA: averaging periodStop Loss変数の入力値を決める必要があります。 この目的のために、最後の2つの履歴区間、つまり6か月前から今日までを選択します。 パーセプトロンの重みのすべてのパラメータを、Start = 0からStop = 100まで、10のステップで設定します。 MA: averaging periodの値はStart = 3からStop =100でステップは10、Stop Lossの値はStart = 10からStop =75でステップは10です。 pass = 1です。 最適化パラメータx11x21x31x41MA: averaging periodStop Lossを選択します。 他のすべてのチェックボックスはオフにする必要があります。 最適化を始めます。 その後、ベストパスに従って入力パラメータ値を設定します。

第2段階: 2番目の履歴データ区間における1番目のパーセプトロンの重みを最適化します。 最適化の日時を6か月前から3か月前までに設定します。 MA: averaging periodStop Lossのチェックボックスをオフにします。 最適化を始めます。 その後、ベストパスに従って入力パラメータ値を設定します。 pass値は引き続き1です。 

第3段階: 3番目の履歴データ区間における2番目のパーセプトロンの重みを最適化します。 最適化の日時を3か月前から今日までに設定します。 パラメータx11x21x31x41 の選択を解除して、x12x22x32 x42を選択します。 他のパラメータは無効にする必要があります。 pass=2に設定します。 最適化を始めます。 その後、ベストパスに従って入力パラメータ値を設定します。

第4段階: 取引システムは過去6ヶ月間の過去のデータに最適化されています。 入力パラメータの値を設定ファイルに保存します。 pass入力変数を3に設定します。 ここで、システムの頑健性、つまり入力パラメータが過剰に適合されていない可能性と、最適化されていない期間で利益を示す可能性がある可能性を確認する必要があります。 そのため、今から9〜6か月前の日付を設定し(この間は最適化は行われていません)、テストを実行します。
モード3のテスト結果が負(負け)の場合は、おそらく両方のパーセプトロンの過剰適合係数が見つかりました。 この場合、第1段階でslおよびpパラメータの他の値を取得するために、再度最適化を実行する必要があります。損失の理由はこれらのパラメータにある可能性が考えられます。 失敗のもう1つの理由は、1番目と2番目の最適化段階中の取引数が少ないことです(100件以上の取引があるはずです)。この場合、slパラメータの最大Stop範囲を狭くする必要があります。

第4段階が成功した場合は、1番目または2番目のパーセプトロン、あるいはその両方が最適化期間外に利益を生み出す可能性があるため、取引に使用できると考えられます。 ここでパーセプトロンを選択する必要があります。 これを行うには、9か月前から今日までの日付を設定し、pass1と2のモードでエキスパートアドバイザーテストを実行します。

より良い結果を持つモードは、おそらく過剰適合していないものであり、取引に適していると考えられています。 EAをこのモードに切り替えて、EAの設定をファイルに保存します。 その後チャートでEAを実行し、時間枠をH1に設定し、以前に保存したファイルから設定をロードします。

もちろん、この取引システムの頑健性の検出方法が本当に効果的であることを確認するためには、もう1つの追加の区間を取得し、この区間に設定されたパラメータをテストするためにすべての履歴データ区間をより深く履歴に移動する必要があります。

取引システムの頑健性を決定するための上記の方法は単純ではありません。 しかし、Robert Pardoの著書[1]に記載されている古典的な方法と比較すると、フォワードテストの後でほとんど無駄でリソース集約型の取引システム分析が不要になるため、はるかに単純で信頼性が高くなります。

参考文献一覧

1. Robert Pardo. Design, Testing and Optimisation of Trading System. - Minax, 2002. - 224ページ。 ISBN 5-902270-01-4

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/23220

Float_Pivot_Smoothed_Digit Float_Pivot_Smoothed_Digit

計算で入力時系列の平滑化が使用されるFloat_Pivot_Digit指標です。 時系列平滑化パラメータは指標入力変数で決定されます。

Float_Pivot_Digit Float_Pivot_Digit

この指標はBollingerBands®に代わるものです。指標は雲として描画され、チャネル内は色で塗りつぶされます。最後の値は価格ラベルとして表示され、チャネルレベルは必要な桁数に丸めることができます。

Gap DM Gap DM

エキスパートアドバイザーはバーが開くときにギャップを待ちます。

XFisher_org_v1_Vol_Supr_Zer XFisher_org_v1_Vol_Supr_Zer

指標線によるゼロラインのブレイクアウトを示す追加のシグナルが丸い点で表示されるXFisher_org_v1_Vol_Supr指標です。