最近新しいEAを開発しました。

過去10年間のバックテストの成績はこんな感じです。
ea2217040501

15分足を執行時間軸にした順張り系のEAですが、
ロジックの流れとしては、
トレンドが明確になった後の押目や戻りを捉えてエントリーし、
利大を追求せずに、ぼどほどの位置で利確するようにしました。

総取引数が1500回もあって、プロフィットファクターが1.41ですから、
単一ロットのEAとしては、優秀だと言えるでしょう。

さらに、勝率とリスクリワード比のバランスも良いですし、
収益曲線のグラフも、ほどよく右肩上がりになっています。

そして、このEAを開発するにあたり最も心掛けたのは、

できるだけシンプルに

です。

シンプルと有効性のせめぎ合い

EAのロジックはできるだけシンプルな方が良いです。

なぜなら、
その方が再現性が高くなり、フォワードテストへ移行しても、
バックテストと同様な成績を残せる確率が高くなるからです。

巷に売られているEAでは、バックテストは良好でも、
いざフォワードテスト、リアルトレードとなると、
なかなか成績が芳しくないというものが多いですが、
その原因の一つに “ロジックが複雑すぎる” を挙げる事ができます。

なので、
ロジックはできるだけシンプルにした方が良いのですが、
残念ながら、
シンプルなロジックほど、その有効性は低くなりがちです。

例えば、

MAのゴールデンクロスでロングして、デッドクロスで決済する。
RSIが30でロングして、70で決済する。

これらは、明らかにシンプルなロジックですが、
では、これらが長期的に有効なのかというと、、、
残念ながら、明らかに機能しません。

正確に言うと、有効な期間もありますが、
年単位で見ると、その収支は右肩下がりになります。

ロジックはできるだけシンプルにしたい。
 しかし、シンプルなロジックだと長期的に機能しづらい。。。

有効なEA開発作業とは、このせめぎ合いとも言えます。
pg17040502

もう少し具体的に話すと、
シンプルし過ぎるとPFはどうしても低くなりがちなので、
PFを改善させる為に、フィルターを追加していきます。

つまり、特定条件下での負けトレードを
フィルター(関数)を通すことで削除するわけです。

こうして、PFを上げていきます。

しかし、、、

フィルターを追加し過ぎるのも良くないです。

なぜなら、
そのフィルター自体の有効性が判断できなくなるからです。

例えば、
10年間のバックテストで、
損切りとなった10個のトレードを削除したフィルターって
本当に有効なんでしょうか?

10年間で10個のトレードしか該当しないフィルターって
本当に必要なのでしょうか?

仮に、そうしたフィルターを100個プログラムで追加して
10×100=1000個の損切りトレードを削除しても
意味があるものなのでしょうか?

フィルター無しで総取引数が2000回、PF=1.0だったEAが、
上記のようなフィルターを100個追加して、
総取引数を1000回まで減らして、PF=1.5にまで改善したとしても、
はたしてそのEAは将来的にも有効に機能するでしょうか?

本当に機能するかどうかわからないフィルターを100個追加して、
PFを無理矢理上げても将来的には機能しない可能性が高いと思っています。

フィルターはできるだけ少なくしたい。
 しかし、少ないフィルターだと長期的に機能しづらい。。。

有効なEA開発作業とは、このせめぎ合いとも言えます。

今回開発したEA(No22-SigmaDip)は、自分なりにシンプルなロジック、
且つ、フィルターも少なめにしました。

今週からフォワードテストに移行しています。

右肩上がりの収益になってくれると嬉しいんですが。