オプティマイザでの遺伝的アルゴリズム vs シンプルな検索
Andrey Khatimlianskii | 16 2月, 2016
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時間)
最後はご自身で判断してください。