オプティマイザでの遺伝的アルゴリズム vs シンプルな検索

16 2月 2016, 10:07
Andrey Khatimlianskii
0
1 020


1. 遺伝的アルゴリズムとは何か?

MetaTrader4プラットフォームは、現在エキスパートアドバイッザーの入力に最適化の遺伝的アルゴリズムを提供しています。テストを無効化せずかなりの最適化にかかる時間を削減しています。遺伝的アルゴリズム:数学という記事にて詳しく処理の規則が紹介されています。

この記事はパラメーター値のダイレクトな検索を用いた結果と比較しながら、遺伝的アルゴリズムを用いたEAの最適化に焦点を当てています。

2. エキスパートアドバイザー

実験において、わずかに注文管理 - それはシンプルですという記事でご存知のCrossMACDというEAを完成させました。:

  • 損切りと利食いを配置されたポジションに追加しました。
  • トレール注文も追加しました。
  • OpenLuftパラメーターをシグナルをフィルタリングするために使用しました:シグナルはもし0線が特定のポイントで横切られた際に発せられます。
  • CloseLuftというパラメーターをクローズシグナルのフィルタリングのために追加しました。
  • 外部の変数にMACD計算に使用されている移動平均の期間を配置します。

それでは、エキスパートアドバイザーの完成です。最適化し、トレーディングで使用することが便利になります。EA CrossMACD_DeLuxe.mq4をPCにダウンロードし、テストすることができます。

3. 最適化

それでは、EAの最適化に移りましょう。3つのテストが異なる最適化検索にて実行されます。これは、様々な状況で遺伝的アルゴリズムを用いて取得された利益を比較することに役に立ちます。

個々のテストの後、後のテストですでに発見された組み合わせを用いないよう、テスターキャッシュを手動で削除します。これは、その実験をより正確にするためには必要なことで、基本的に結果の自動的なキャッシングは、繰り返される最適化を向上させます。

結果を比較するために遺伝的アルゴリズムを用いた最適化は2回行われます:一回目 - 最大の利益(Profit)を見つけるため。二回目 - 最も高い利益要因を見つけるため(Profit Facotr)その後、両方の最適化メソッドにおいて3つの最も良い結果がカラムによってソーとされたサマリーレポート表に示されます。

最適化は単純に実験的です。この記事は、最高の利益を生むためのインプットを見つけることを目標としていません。

テスト1

  • チャートシンボル – EURUSD;
  • チャートタイムフレーム – Н1;
  • テスト期間 – 2 years;
  • モデリング – "オープン価格のみ";
  • 検索されたインプット:

変数名

開始値

ステップ

最終地

損切り

0

10

100

利食い

0

10

150

トレール注文

0

10

100

OpenLuft

0

5

50

CloseLuft

0

5

50

検索数

234256

遺伝的アルゴリズムを用いた際、最適化の予定された時間はおよそ直線的インプット検索を用いた最適化のそれと同じです。違いは、遺伝的アルゴリズムは確実に不成功の組み合わせを遮断し、必要なテスト数回を削減します(おそらく数十、数百、数千回です)そのため、遺伝的アルゴリズムを使用する際、予想される最適化の時間を頼ってはいけません。本当の最適化時間は常により短いです。

直接検索

遺伝的アルゴリズム

ご覧の通り、遺伝的アルゴリズムを用いた最適化は予想された5・5時間から4分短いという結果でした。



また、遺伝的アルゴリズムの最適化グラフは直接検索のものとは異なっていました。悪い組み合わせがすでに除外されているので、後続のテストはより利益を生む入力の組み合わせにて実行されます。そのため、バランスグラフが上向きになります:




最適化メソッドの両方の結果を考える必要があります。

結果の表:


直接検索

遺伝的アルゴリズム

合計最適化時間

4時間13分28秒

3分50秒


SL

TP

TS

Open Luft

Close Luft

利益

SL

TP

TS

Open Luft

Close Luft

利益

1

70

140

0

20

30

1248.08

70

140

0

20

30

1248.08

2

70

140

0

20

35

1220.06

70

140

0

20

35

1220.06

3

70

150

0

20

30

1176.54

70

150

0

20

30

1176.54


SL

TP

TS

Open Luft

Close Luft

利益要因

SL

TP

TS

Open Luft

Close Luft

利益要因

1

100

50

40

50

5

4.72

0

50

40

50

5

4.72

2

90

50

40

50

5

4.72

90

50

40

50

5

4.72

3

80

50

40

50

5

4.72

80

50

40

50

0

4.72

ご覧の通り、遺伝的アルゴリズムによる最適化は数十倍速いものでした! 結果自体は同じです。最大利益4.72のいくつかの結果があり、インプットの異なる組み合わせが報告されていますが、あまり重要ではありません。

検索数を減らし、テスト時間を増やしてみましょう。このために「全ティック」モデルを使用します。

テスト2

  • チャートシンボル – EURUSD;
  • チャートタイムフレーム – Н1;
  • テスト期間 – 2 years;
  • modelling – "All ticks";
  • 検索されたインプット:

変数名

開始値

ステップ

終了値

損切り

0

10

100

利食い

0

10

150

トレール注文

0

10

100

OpenLuft

0

10

50

検索数

11 616

結果の表:


直接検索

遺伝的アルゴリズム

合計最適化時間

32時間32分37秒

1時間18分51秒


SL

TP

TS

Open Luft

利益

SL

TP

TS

Open Luft

利益

1

50

0

0

20

1137.89

50

0

0

20

1137.89

2

70

0

0

20

1097.87

70

0

0

20

1097.87

3

60

0

0

20

1019.95

60

0

0

20

1019.95


SL

TP

TS

Open Luft

利益要因

SL

TP

TS

Open Luft

利益要因

1

50

90

60

50

4.65

50

90

60

50

4.65

2

50

140

60

50

4.59

50

140

60

50

4.59

3

100

90

60

50

4.46

70

90

60

50

4.46

そのような検索数において、最適化率は25倍異なり、そこまで悪くはありません。結果は100%一致し、唯一の違いは3番目の通過での損切り値にあります。利益要因は、最大値で残ります。

それでは、検索数を増やし、テスト時間を減らしてみましょう。このために「コントロールポイント」を用いましょう。

テスト3

  • チャートシンボル – EURUSD;
  • チャートタイムフレーム – Н1;
  • テスト期間 – 2 years;
  • モデリング – "コントロールポイント";
  • 検索されたインプット:

変数名

開始値

ステップ

最終地

損切り

0

10

100

OpenLuft

0

5

50

CloseLuft

0

5

50

検索数

1 331

結果の表:


直接検索

遺伝的アルゴリズム

合計最適化時間

33分25秒

31分55秒


SL

Open Luft

Close Luft

利益

SL

Open Luft

Close Luft

利益

1

0

0

45

1078.03

0

0

45

1078.03

2

70

20

15

1063.94

70

20

15

1063.94

3

70

20

25

1020.19

70

20

25

1020.19


SL

Open Luft

Close Luft

利益要因

SL

Open Luft

Close Luft

利益要因

1

80

50

15

2.73

80

50

15

2.73

2

70

50

15

2.73

70

50

15

2.73


3

90

50

15

2.65

90

50

15

2.65


状況が変わりました。最適化期間が一致し、結果も同一です。1331回の検索からなる最適化から説明されます。この回数は、遺伝的アルゴリズムを用いる上で十分ではありません。「スピードに乗る」時間がなく、最適化はインプットの組み合わせを減らし遮断され、早くなりますが、上記の組み合わせ数では、遺伝的アルゴリズムはどの「親」が悪い「子息」を生み出すのか特定できません。そのため、これを使うことは無駄です。


4. 結論

遺伝的アルゴリズムはMT4戦略オプティマイザには良い追加要素です。最適化はもし検索数が大きければ、劇的に向上され、結果は普通の最適化と同様のものを得られます。



インプットにて完全な検索を使用する意味はありません。遺伝的アルゴリズムは、より早く、同等の効果で最高の結果を発見できます。



5. あとがき

この記事を書き終え、自分の好奇心を満たすことができ、すべてのインプットにて CrossMACD_DeLuxeの最適化を行うことができた。組み合わせの数は、1億以上です(103 306 896)遺伝的アルゴリズムを用いた最適化は、17時間かかり、すべての入力を検索する最適化では35年かかります(301 223時間)



最後はご自身で判断してください。

MetaQuotes Software Corp.によりロシア語から翻訳された
元の記事: https://www.mql5.com/ru/articles/1409

添付されたファイル |
エキスパートシステム「コメンテーター」MQL4プログラムの組み込みインジケーターの実践的な使用 エキスパートシステム「コメンテーター」MQL4プログラムの組み込みインジケーターの実践的な使用

この記事は、MQL4でのプログラミングにおけるテクニカルインジケーターの使用について紹介しています。

情報ストレージとその表示 情報ストレージとその表示

この記事は、情報ストレージとその表示の便利で効率的な方法を紹介します。ターミナル標準ログファイルとCommnet()関数に対する代わりのものもこちらで紹介されます。

トレーダーツール、上級者向けのテクニカル分析のためのMQL4 トレーダーツール、上級者向けのテクニカル分析のためのMQL4

まず、トレーディングは確率の計算です。進展のエンジンとなる無為に関することわざは、それらのインジケーターやトレーディングシステムが開発された理由を明らかにします。トレーディングの多くの新人は「すでにできあがった」トレーディング理論を学習します。しかし、より多くの発見されていない市場の秘密があり、価格の動きの分析に使用されているツールは基本的に明らかにされていないテクニカルインジケーターや統計パッケージとして存在しています。マーケットの動向の理論への貢献において、Bill Williamsに感謝します。おそらくその漕ぎ手に頼るのは早すぎますが。

いくつかのインジケーターにおけるマルチNullバー再計算 いくつかのインジケーターにおけるマルチNullバー再計算

この記事は、Nullバーが変化した際に MetaTrader 4クライアントターミナルのインジケーター値の再計算に関する問題に焦点を当てています。複数の再計算前に保存されたプログラムコードを保存させるいくつかの追加プログラムをインジケーターに追加する方法について述べています。