こう言っては何ですが、
EA(自動売買)の開発に慣れてくると、
右肩上がりの収益曲線を描くEAを作るのは意外と簡単です。

プログラミングしていくと、
「勝率を上げるには、このコーディングが有効そうだ」
「エントリー位置の調整には、このインジケーターが有効そうだ」
というものが経験的に分かってきます。

そして、そういったアイデアがどんどん蓄積され、
その一つ一つがノウハウとなり、
オブジェクト指向における”部品“の役割となってくれます。

となると、次のEA開発には
その部品を再利用したり、共通化することで、
作業効率を上げるとともに、
有効なEAが出来上がる確率も高くなるわけです。

しかし、、、これはバックテストの段階までです。

実際にフォワードテストで稼働させてみて
バックテストと同等の成績を収められるEAはほとんど存在せず、
大半のEAは、バックテストの成績より
フォワードテストの成績の方が劣ります。

劣るだけならまだしも、
バックテストではPF>1だったのに、
フォワードテストではPF<1になるEAも普通にあります。

私はこれまで数多くのEAを開発してきましたが、
もちろん、百発百中でフォワードテストでPF>1を
実現できているわけではなく、中にはPF<1のままで
なかなか収益が上がってくれないEAもあります。

では、
バックテストではPF>1にも関わらず、
実際に稼働させると、
PF>1のEAとPF<1のEAに分かれてしまう原因は何なのか。。。

正直言って、、、分かりません。

まぁ、それが分かれば誰でも億万長者になれてしまうので、
その答えを見つけているプログラマーはいないでしょう。
profit18111301

取引回数をできるだけ多くする

しかし、答えとはいかないまでも、フォワードテストの成績を
できるだけバックテスト並みに近づける戦略はあります。

その一つが
バックテストでの取引回数を多くすること
です。

極端な例で言うと、
バックテストで取引回数10回でPF=1.5のEAと
バックテストで取引回数100回でPF=1.5のEAとでは、
どちらが信頼できるでしょうか?

もちろん、取引回数100回の方ですよね。

同じく、
バックテストで取引回数100回でPF=1.5のEAと
バックテストで取引回数1000回でPF=1.5のEAとでは、
どちらが信頼できるでしょうか?

もちろん、取引回数1000回の方ですよね。

取引回数を増やせば増やすほど、偶然性が低くなり、
信頼性と再現性が増していきます。

再現性とは、バックテストと同じような成績を
フォワードテストでも期待できることです。

よって、バックテストでの取引回数を増やせば増やすほど、
サンプルデータが多くなる為に、再現性が期待でき、
フォワードテストも期待できるわけです。

私がこれまで開発してきたEAの基準として
過去10年間のバックテストで取引回数が1000回以上
を目安にしてきました。

しかし、できるだけハズレのEAを作らないように、
つまり、再現性を高めるために、上記の基準を厳しくして、
取引回数を更に増やそうと思ったんですが
これがなかなか難しいんですよね。

バックテストのデータ(期間)は限られていますので、
その中で、PFの優位性を維持したままで
取引回数を増やしていくのは至難の業です。

私のこれまで培ってきたノウハウの中にも、
取引回数を増やす方法はなかったので、
いろいろと思案し、検証し、
アイデアを巡らせていたんですが、ようやく閃きました。
(こういった作業が面白いんですよね)
(ちなみに、散歩中に閃きました)
(検証を重ねているから閃きやすくなるんでしょうね)
idea18111302

以下は、私のオリジナルEAである[DowCounter]に
取引回数を増やすノウハウを組み込んだ新たなEA[DowConterM]の
過去10年間のバックテストです。
ea18111303
見てのとおり、総取引数=4621回となっていて
元のEAの時よりも約2~3倍ほど取引数を増やすことに成功しました。

それでいて、PF=1.34なので、
これなら再現性にも期待できそうです。

で、フォワードテストを行ってみたところ、
現在まで約1ヶ月間経過したんですが、
以下のような推移となっています。
ea18111304
USDJPY,EURJPY,EURUSD,GBPJPYの4通貨分開発したんですが、
全て堅調に推移していて、
合計で+1218.3PIPSの獲得となっています。

うんうん、順調です。

この取引回数を増やすノウハウは
今後のEA開発のマストになりそうです。