EAを分析するためのEA作成方法

2018年10月15日

チャート

分かり辛いタイトルにしてしまいましたが、今回は市販EAの分析をしてみようと思います。

市販EAには、大まかに取引タイミングの説明が書かれていると思いますが、もう少し詳細を知りたいと思ったことはありませんか?

分析をすることで運用しているEAのことをよりよく知れますし、自作EAのアイデアにもなるので少し覗いてみましょう。

分析用EAのソースも公開しますので、最後まで見ていただけたら幸いです。

※MT4/MT5にまだ慣れていない方は、先に「メタトレーダーで自動売買するための事前準備(第1回)」シリーズをご覧になってから見ていただけるとスムーズかと思います。

大まかな方針

以下のステップで作業していきます。

  1. 分析対象データの作成(エントリー時間などを抽出します)
  2. 作成したファイルをプログラムで読込む
  3. 分析対象EAがエントリーした時間に各指標の値がどうなっていたか出力
  4. 結果の解析

 

分析用データの作成

分析したいEAのバックテストを行う

まずは分析したいEAのバックテストをしましょう。
今回は期間を「2015.01.01」~「2017.01.01」の2年間としました。

下図は、とある市販EAをバックテストした結果です。

かなりのパフォーマンスですね。

このEAはバーの始値のみ動くので、「モデル」は始値のみを選択しました。
バックテスト結果

 

結果を表計算ソフトで編集

「結果」タブを選択後、「右クリック>すべてコピー」をします。
バックテスト結果一覧

結果を表計算ソフトの2行目に貼り付けます。

※貼り付ける際、区切りを聞かれると思いますので、「タブ区切り」を選択してください。

以下のようになっていればOKです。
表計算ソフトでの編集①

 

フィルターしたいので、先頭行に適当なヘッダーを付けます。
表計算ソフトでの編集②

 

取引種別(C列)がmodifyのものは、今回の解析で使用しないので削除します。
フィルターしてC列のmodifyを選択すると、以下のようになります。
表計算ソフトでの編集③

 

この行は全て不要なので、「行ごと削除」します。
表計算ソフトでの編集④

 

フィルターを解除します。
取引種別(C列)が「buy, sell, t/p, s/l」の4種類になっていればOKです。
※成行決済のEAの場合は、「t/p, s/l」部分が「close」となります。
表計算ソフトでの編集⑤

 

次に、下図の通り「I列3行目~最終行」をコピーし、「I列2行目」に貼り付けます。
表計算ソフトでの編集⑥

上記は、プログラムが処理しやすいようにするための作業なので、深く考えなくて大丈夫です。

1つ注意点があります。

複数ポジションを持つEAの場合は、注文番号(D列)を昇順で並べてから作業してください。

並べ替えは、フィルターの機能で簡単にできます。

分析対象の市販EAは、決済処理が固定pipsまたはトレーリングストップとなっていて、決済側を解析する必要がないので、さらに不要部分を削除します。

取引種別(C列)のフィルターで「t/p, s/l」を選択し、先ほどの要領で「行ごと」削除してください。
フィルターを解除し、以下の通り「buy, sell」のみが残ればOKです。
表計算ソフトでの編集⑦

 

分析に利用するのは「時間:B列」、「取引種別:C列」、「損益:I列」の3列のみなので、他の列は全て削除します。
表計算ソフトでの編集⑧

 

ヘッダーは不要なので、2行目以降のデータ部分を全て選択し、「input.tsv」という名前で保存してください。
表計算ソフトでの編集⑨

 

ファイルを配置する

作成したファイルは、以下パスに配置しておいてください。

tester\files
作成したファイルの配置

場所が分かりづらいですが、Expertsの1つ上の階層にtesterフォルダがありますので、その下のfiles下に配置です。

思ったよりも手作業が多かったので、プログラム化することも検討しておきます。

 

プログラミング

項目ごとにプログラムを抜粋したものを掲載していきますが、説明用なのでコンパイルが通らない可能性もあります。

最後に全部まとめたものも掲載しますので、そちらをお使いください。

 

初回処理(ファイル読込み)

OnInit()で作成した入力データをオープンして、正常に開ければメモリ上に読み込んでいきます。

この部分でエラーになる場合は、ファイル名が違っているかファイルの配置場所が違っている可能性がありますのでご確認ください。

 

処理対象判定

barの始めであるかの判定と、作成したinput.tsvに記載された時間のデータであるかを確認し、異なる場合は処理を終了します。

 

ファイル出力処理

サンプル用で、多めに出力する指標を設定しました。

ここに記載したものだけではなく、髭の大きさやギャップなど、思いつくものは何でも出力可能です。

少し長いですがやっていることはシンプルで、出力用ファイルをオープンして正常に開ければ各指標の値を取得してファイルに書き込んでいます。

 

最終版プログラム

これで完成です。

 

テスト

実行

実行しましょう。

やり方はバックテストと同じです。

※バックテストのやり方が分からない場合は、先に「最短でEAを作る(第2回)」をご確認ください。

期間を「2015.01.01」~「2017.01.01」にして、「スタート」をクリックしてください。

正常に終了していれば、「input.tsv」を配置した「tester\files」配下に「bunseki.tsv」が作成されています。

 

解析

ここまでくれば、あとは表計算ソフトやPythonを使って煮るなり焼くなりです。

と言っても、どう解析していけばいいか分かりづらいと思うので少しだけ例を記載します。

コツは買いと売りで分けて解析することです。

今回は買いだけに絞った解析結果を記載します。

分析結果のグラフ

以下のことが分かりました。

  1. CCIとRSIから、完全に逆張りEAである事が分かる
  2. 14期間RSIと100期間移動平均乖離から、行き過ぎの逆張りはしないことが分かる
  3. ADXから、ある程度のトレンドがある時に動くことが分かる
  4. 赤丸部分から、実は順張りロジックも搭載されていることが分かる

このEAの販売ページには売買ロジックが記載されていませんが、少しはクリアになりました。

4.に関してはこちらのプログラムミスを疑い、ビジュアルモードを使ってそのEAをバックテストしてみましたが、確かに順張りでエントリーされていました。

順張り(少なめ)、逆張り(多め)のEAだったようです。

 

最後に

ここまで読んでいただき、ありがとうございました。

分析をしたことで、よりEAの詳細が分かったのではないかと思います。

また、自分自身の分析能力が向上するうえにEAのアイデアも貰えるので、良いことずくめではないでしょうか。

興味があれば以下の記事もご確認ください。