2008年12月26日金曜日

メタトレーダーのバックテスト

最近、時間があるときにMT4のバックテストを試しています。
先日お話したように、スキャストティクスとMACDを使ったETを使って、バックテストをしています。
もちろん、M1のEvery Tickでですね。
これまでの経験に基づいて、入る時期や損切りの場所を決めてみると、そこそこのものができてきそうです。

何故、スキャストティクスかというと、MACDが入った時は、既に戻ってきたところで、遅い場合が多いのです。で、MACDより早く入る指標がないかみてみると、スキャストティクスが少し早く入ることがあるんですね。それで、入るタイミングはスキャストティクスを使って、条件をMACDでさらに詰めるみたいな感じで作りました。あとは、これらの指標はどれも逆張り系なので、12月12日のような大きく動く相場になると負け込んでしまいます。そこで、大きなBreakOutがあるときには、逆張りの取引きは控えて、順張りの取引をするようにしてみました。

バックテストで気を付けることは、ずばり、オーバーフィッティングしてないかどうかですね。

Overfittingとは最適化をするときによく起こる現象で、次数やパラメーターの数を増やしていくと、その期間での利益はどんどん上がっていくのですが、実際には、その中でのモデリングでフィットさせ過ぎた結果そうなっており、他の期間のデータでは、まったく利益を上げなくなってしまうのです。

その例を示しましょう。

上のグラフが今年の12月1日から12月26日までで最適化したMT4でのトレード結果です。
なんと資産は倍になってます。

このプログラムを11月1日から11月30日まで動かしたのが下のグラフです。
資産は半減です。(><。)

これが、オーバーフィッティングということです。

よく商材の稼げるプログラムというのは、このオーバーフィッティングした結果を見せているものが多いと思います。しかし、皮肉なことに、過去のデータ(フィッティングに使ったデータ)での利益が多いほど、フォワードテストでの成績は悪くなってしまうんですよねwww

じゃあこれを防ぐにはどうすればいいのでしょうか?
というよりもどうやって正確に評価すればいいかということでしょう。

まず、データをフィッティング用と検証用の2つに分けます。
そして、検証用データは絶対にフィッティングに使わないようにします。

次にフィッティング用のデータを最低3データセット準備します。

今、M1のデータをみてみると、約10週のデータ使えるようです。1週間おきに10に分けて、互い違いにデータ検証用とフィッティング用に使ってみましょう。

パラメータはまず少ないところから始めて行きます。そして、新しいパラメータを増やす時にはそれを入れて改善されるかを検証していくという手順で進めていきます。





実際の例は、基本プログラムが確定してからですかね。
今、3つのパラメータを最初につかっているのですが、3つめの買われすぎ、売られすぎの指標がいまいち不安定で、他のパラメータを検討しています。
それと、StopLossとTakeProfitを固定にするかどうかの問題が残ってますね。

この辺がクリアされたら、この方法で実際にフィッティングしてみようと思います。


なかなかつくる時間がないので、この休みに作製して、実際にFX-TSで自動トレードを開始したいと思っていますが、できるかなぁ。。。

いろいろなIndicatorを試しているのですが、上のグラフの2倍というのはなかなかいかないようですね。
実は、最初に造ったのが、結構いい線いってるのかもしれませんw



ちょっといろいろなブログを廻ったのですが、この1年で、かなりMT4のブログが増えたようですね。
しかもかなり多くのEAが出回っているようで、ちょっとびっくりですね。
私が最初にこのブログを立ち上げた時はFireBirdぐらいしかなかったような気がしますが、
いろいろとあるようですね。

M1を使ってのちょこまか、売ったり買ったりを目指しているのですが、それは、今のところないのかな?
出回っているEAのテスト最適化も試してみたいと思います。
まずは自作かな。比較するを楽しみにして

今年もあと1日しかないのかぁ。良いお年をノシ


FX-TSへのリンク
MJ「Spot Board」へのリンク
新日本通商の外為オンラインへのリンク
パンタ・レイ証券へのリンク

0 件のコメント: