(18) 【MT5】 バックテストで最適パラメータセットを探す(2)

投稿者: | 2017年10月6日

この記事は最終更新から 1512日 が経過しています。

(1) やりたいこと

約20日前に投稿した 「(14) 【MT5】 バックテストで最適パラメータセットを探す」 では、パソコンを高負荷状態にすることによる傷みが心配になり途中で止めてしまった。
50ccスクーターでフルスロットル状態で全力走行し続けているような恐怖心があった。

そこで 「(17) バックテスト用マシンを調達」 ではHP製の中古ワークステーションをヤフオクで購入した。
これならば 125ccバイクで50km/h走行しているような安心感がある。

今回は後者の環境を使用してバックテストにリベンジしたい。

(2) 対象EA

(13) 【MQL5】 Golden Cross EAサブクラスを作成」 で作成したEAを使用する。
このEAの場合、以下の2種類のパラメーターが最適化対象となる。
1) 短期MAのperiod
2) 長期MAのperiod

(3) 最適化実行

MetaTrader5の最適化機能は、バックテストを繰り返すことにより実現している。
すなわち、入力パラメータ値の組合せを変えてバックテストを自動的に繰り返し、収益の高いものを見つけるのだ。

因みにバックテストとは、過去の相場データを入力としてストラテジを検証すること。

1. 入力値の範囲とステップ値を設定

ストラテジテスターのInputタブを開く。
各入力パラメーター値の範囲および、繰り返し時の変更量(=ステップ値)を設定する。

今回は日足チャートを使用、超パラメータを以下のように設定した。
1) 短期MAのperiod : 4~16, 1step
2) 長期MAのperiod : 8~32, 1step

2. 実行

[Start] ボタンを1回押下する。

待つ。

前回とは異なりファンの音が静かだ。
CPU温度は前回と同様に 70度を超えているが、心配するようなファン大回転の音は聞こえない。
さすがは HP社製のワークステーションだ。

このワークステーションのCPUは 物理4コア, BIOSで HT onに設定してあるので論理8コアで動作する。
MetaTrader5プログラムは、バックテストの各回を 8スレッドに均等に割り当てて処理させている。

と言うことは…
44コア88スレッドマシンで実行すれば、88並列でバックテストが実行できるのか?
数年後にそんなマシンがヤフオクで安く出ていたら試してみよう。今買ったら軽く100万円を超える。

例えば 2017年10月現在 X5690を2基搭載したワークステーション(12コア24スレッド)が 10万円以下で出品されているが、6年前にはこの構成で100万するのは当たり前だった。数年待ってみよう。

3. 実行完了

約 4時間かけて全 325ケースのバックテストを実行完了!

ストラテジを変えるたびにこれをやっていたら大変だ。
やっぱり 88並列処理とかできるメニーコアなワークステーションが欲しくなるだろう。

ストラテジーテスター欄に書かれていた 「クラウドネットワーク、エージェント」 なるものも気になる。
クラウドなリソースを使ってバックテストできるサービスが提供されているようだ。
今回は 325のテストケースを実行したが、325ノードを使えれば 1回分のテスト時間で全バックテストが完了する。
とっても良いアイディアで便利そうだ。今度調べてみよう。

(4) 最適化結果

MetaTrader5のストラテジーテスター欄の オプティマイズ結果オプティマイズグラフ に最適化結果が表示される。
最適化結果は XMLファイルに exportして MS-Excel上で眺めたり加工したりできる。

今回の場合、(SMA1, SMA2) = (16日, 9日) の組み合わせが最良の結果だった。
次いで (5日, 14日), (4日, 23日), (6日, 11日), (6日, 14日), (6日, 15日) と続く。

???

SMA1 > SMA2 ???

Golden Clossではないではないか!

いわゆる逆張りではないか。
なんとしたことか。

チャートを見ると、確かに短期線が長期線を抜いたところでの売買方向が逆になっている。
2011年から 6年間もトレンドに逆らい続けて売買するというのは生身の人間には困難なこと、すごい勇気だ。
それだけ右往左往するレンジ相場が続いたということなのだろう。

(5) 最適化結果の分析情報を出力

以下の 4種類のグラフが出力される。

1) 1D : パラメーター vs 損益

X軸 : 最適化パラメーター(任意の1個を指定可能)
Y軸 : 損益

2) 2D : パラメーター vs 損益

「2種類の最適化パラメーターの組み合わせの損益」の相対的大小関係を色の濃淡で表している。
スパイク型ではなくおわん型になっていれば、そのパラメーターの組み合わせがカーブフィッティングではないと期待できる。
X軸 : 最適化パラメーター(任意の1個を指定可能)
Y軸 : 最適化パラメーター(X軸指定以外の任意の1個を指定可能)
濃淡 : 損益

3) 3D : パラメーター vs 損益

上の 2D図を 3D図にしてみただけ。
もっと複雑なストラテジーになれば役立つのかもしれない。
X軸 : 最適化パラメーター(任意の1個を指定可能)
Y軸 : 最適化パラメーター(X軸指定以外の任意の1個を指定可能)
Z軸 : 損益

4) 全テストケースの損益分布図

今回のストラテジーの場合、大半のケースで原資を下回っている。

雑感

おもしろい!
でも時間がかかる。

より楽しむためにはメニーコアな高性能マシンが必要だ。
やっぱり Z820 がほしい…
バックテストのクラウドサービスもあるようなので調べてみよう。

XMLで出力された生レポートは他のツールで好きなように加工して使える。
Linuxマシンに送って Octaveや Pythonで好きにグラフ化して眺めてみようと思う。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)