EAのパラメタを最適化(第6回)

2018年10月14日

ステップアップする人

今回は、押し目エントリーのEA作成(第5回)で作成したEAを使って、最適化を行っていきます。

最適化の説明は後述します。

最適化の考え方は奥が深く、ここで全てを書くことはできませんが、まずは必要最小限のやり方を見ていきましょう。

最適化する

最適化とは?

最適化とは、各パラメタを変化させていった場合のテスト結果をまとめて表示させ、その中から適切なものを選ぶことです。

各パラメタとは、移動平均線期間やRSI期間のことを指します。
具体的には「移動平均線期間が50で、RSIが15で・・・」、「移動平均線が100で、RSIが15で・・・」といった組み合わせをひたすら試しいくイメージです。

これは手動で1つ1つやったらとても大変なことですが、設定さえすればあとはMT4/MT5がやってくれますので心配ありません。

 

実際にやってみる

[MT4の場合]

エキスパート設定」をクリックしてください。

MT4のストラテジーテスター

 
下図の赤枠部分を同じように設定して、「OK」をクリックしてください。

パラメタ入力画面

[MT5の場合]

「パラメータ」タブを選択して、MT4と同じように設定します。

MT5のパラメタ入力画面

 
ma_periodを例に説明すると、期間50で開始して50ずつ増やしながら200までテストするということです。
50 > 100 > 150 > 200で順次テストされていきます。

※MAGICとSlippageについてまだ説明できていなかったので、ここで解説します。

[MAGIC]

EAを識別するための固有の番号です。
他のEAと重複しないように設定してください。

[Slippage]

注文処理を送信した時の価格と、実際に処理される時の価格差をどこまで許容するかです。
例えば重大指標発表時などはSlippageがとても大きくなり、想定外の損失になる可能性もありますのでそれを回避できます。

押し目エントリーのEA作成(第5回)で作成したプログラムに、MAGICとSlippageは記載されていなかったことに気づいた方もおられるかと思います。

実はこの部分は最短でEAを作る(第2回)で導入した共通ライブラリに含まれる部分なので、個別のプログラムでは書く必要が無いのです。

次は、MT4の「最適化」(MT5はオプティマイズ<遺伝的アルゴリズム>)を選択して「スタート」をクリックします。

[結果]
直ぐに完了したと思います。

ただ、以下の赤枠部分を確認して、「あれ?」となったのではないでしょうか。
バックテスト結果

今回の検証は324パターンあるので、324/324となって欲しいところですが、324/1280(324)となってしまいました。

何故関係ない1280という数値が出てくるか?ですが、遺伝的アルゴリズムを使っているためです。
遺伝的アルゴリズムとは、ネット検索すると以下のような定義になっています。

遺伝的アルゴリズムはデータ(解の候補)を遺伝子で表現した「個体」を複数用意し、適応度の高い個体を優先的に選択して交叉(組み換え)・突然変異などの操作を繰り返しながら解を探索する。適応度は適応度関数によって与えられる。

この手法の利点は、評価関数の可微分性や単峰性などの知識がない場合であっても適用可能なことである。 必要とされる条件は評価関数の全順序性と、探索空間が位相(トポロジー)を持っていることである。

また、遺伝子の表現の仕方によっては組合せ最適化問題やNP困難な問題などのさまざまな問題に適用可能である。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

ちょっと理解が難しいですが、私は「通常の最適解を求める方法よりも精度の高い解を求めることができる。

しかし完全ではない。

1280という数値は遺伝的アルゴリズムで子孫を増殖して検証したために出た値である。」とざっくり理解しています。

つまり気にする必要はないということです。

324パターン程度であれば、大して時間が掛からないので遺伝的アルゴリズムを使うまでもないです。
ただ、あまり厳密にやり過ぎると過剰最適化になりやすいという考え方もあり、私の場合は基本的に遺伝的アルゴリズムを使用しています。

遺伝的アルゴリズムを利用しない場合は、MT4ならば「エキスパート設定」をクリックし、「テスト設定」タブを選択します。
そこで、遺伝的アルゴリズムのチェックを外してください。
チェックを外せば、324/324のテストが実施されます。
MT4のテスト設定タブ

 

最適化結果を確認する

まずは、下図の通り「損益」部分をクリックして降順に並び替えます。
MT4の最適化結果

 
1万ドルを超えるものもいくつかありますね。
この中からどのパラメタを選択するかは自身の判断になります。

以下を判断基準にして、今回は赤枠で囲んだ2つが有力と考えました。

項目名 説明 判断基準
損益 取引により増減した資産 大きいほど良い。
総取引数 取引した回数 多いほど良い。
※多過ぎる場合は手数料等の少しの誤差で想定外の結果になる可能性があるので慎重になる必要あり。
プロフィットファクタ 総利益÷総損失 大きいほど良い。
※大きすぎるものは過剰最適化されている可能性あり。
ドローダウン $ 資産減少の金額 小さいほど良い。

 

最適化結果を反映してバックテスト

比較する

ここまでの検証で、数値としてどれが優れているかは分かりました。

ただし、最適化で確認できるのは最終結果のみなので、途中で停滞期間が多くあっても気づくことができません。

途中経過も含めて大まかに状態を確認するためには、それぞれを個別にバックテストしてグラフで比較するのが有効です。

  • 比較対象①:押し目エントリーのEA作成(第5回)のバックテストで使ったもの
  • 比較対象②:上図の赤枠で囲んだ1つ目の候補
  • 比較対象③:上図の赤枠で囲んだ2つ目の候補

[設定値]

項目名 第5回の時 候補① 候補②
ma_period 100 100 100
entry_rsi_buy 15 10 10
entry_rsi_sell 85 90 95
exit_rsi_buy 85 90 90
exit_rsi_sell 15 10 15

赤枠部分を適宜変更しながらテストします。
MT4のパラメタ入力画面

 
結果を確認してみましょう。

[第5回の時]
前回のバックテスト結果

 
[候補①]
候補①のバックテスト結果

 
[候補②]
候補②のバックテスト結果

 

評価する

 
この結果から、第5回で利用した初期設定のパラメタよりも、今回候補として選んだパラメタのほうが良いことが分かりました。

候補①と②はほぼ同じ動きのようなので、より利益が見込めそうな候補①を採用することにします。

最終的に設定したパラメタを以下に記載します。

項目名
ma_period 100
entry_rsi_buy 10
entry_rsi_sell 90
exit_rsi_buy 90
exit_rsi_sell 10

 

まとめ

今回は、最適化とバックテストを行い、最も利益が見込めそうなパラメタを設定するところまで実施しました。

次回のフォワードテスト~ライブ口座稼働まで(第7回)で、フォワードテストを実施していきます。

今回の記事のまとめ

  • 最適化とバックテストを実施し、最も利益が見込めるパラメタを決定する

 

自動売買入門のまとめは以下をご参照ください