システムトレードを利用してFXで利益を上げる情報サイト

ヒストリカルデータの取得
@ヒストリカルデータ(過去データ)の保存数を増加
本作業は必ず必要というわけではありませんが、なるべく多くの過去データを扱えるように「ツール」メニューの「オプション」を選択して、「ヒストリー内の最大バー数」と「チャートの最大バー数」の数を増やしておきます。
※最大数は2147483647となっているようですが、999999999999999と入力すると自動的に最大値に設定されます。
Aヒストリーセンターからヒストリカルデータをダウンロードを実施
「ツール」メニューの「History Center」を選択して、バックテストを行いたい通貨、時間足を選択してダウンロードを開始します。
バックテストの実行
@メタトレーダの「Strategy Tester」ボタンをクリックしてテスター画面を開きます
Aテスター画面でテスト条件を選択します
一番上の「Expert Advisor」はEAの作り方でサンプルとして作成したtestを使用することにします。通貨ペアはUSDJPYを、期間はM5(5分足)を選択します。開始日と終了日は長すぎると時間が掛かるのでここでは2008.6.1〜2011.7.1としました。設定が完了したら「スタート」をクリックします。
Bスタートボタンを押すとバックテストが開始されます
バックテスト中は進捗グラフが進んでいきます。使用している足やEAの複雑さ、テスト期間、パソコンの能力などにより実行時間は相当変わってきます。あまりにも遅い場合は開始日と終了日を変更して期間を短くしてみてください。
B結果の確認
実行結果は「結果」、「Graph」、「レポート」をクリックすることにより画面が切り替わります。
一番見やすいのはグラフ画面だと思います。直感的に右肩上がりなのかどうか判断できます。テストで使用したサンプルEAは顕著ではありませんが右肩上がりとなっています。
結果画面からは一つ一つの取引について詳細が出力されます。
レポート画面からはEAの詳細情報が表示されます。EAを評価する代表的な項目であるProfit factor は1.28、下の画面では掛けてしまっていますが最大ドローダウン(Maximal
drawdown は121.75(9.88%)という結果です。
バックテストの罠
ここまででバックテストが出来るようになりましたが私はバックテストはあまり信用していません。バックテストではEAはシグナル通りに期待する値で取引が全て出来ますが、実際の取引ではポジションのオープンもクローズも期待した値で取引が出来ません。値動きが大きいときにはかなり滑ります。これは、自分でEAを作成してみると分かります。また、メタトレーダのバックテストは簡単に見せかけを変化させることが出来てしまいます。
自作のEAであれば見せかけを良くすることは全く意味がありませんが、売り物のEAの場合は、色々細工して優秀なEAと見せかけている場合も考えられるので要注意です。以下に見せかけを良く見せる方法を説明します。
@調子の良い期間だけにする
下記のグラフは先ほどのEAと全く同じですが、2006年1月から開始してみました。あっという間に全然ダメなEAになってしまいました。実は分かっていたので上の例ではあえて2008年6月以降にしていました。
AEA中に大負けする期間を避けるロジックを埋め込む
EAのプログラム中に○○年○月○日であれば取引しないというようなロジックは簡単に埋め込むことができます。リーマンショックや、最近では東日本大震災など、EAでは対応できないファンダメンタル的な要因が発生して大負けしてしまう場合は、その期間をトレードしないようなロジックを入れてしまうことも出来ます。
先ほどのtest用のEAでは、2008年は6月と11月、2009年は4月、8月〜11月、2011年は3月で大きく値を落とすので下記のようにEA中に細工してみます。
TimeCurrent()関数はサーバから現在時刻を取得する関数です。バックテスト中は該当の為替データと同期して過去の時刻が返ってきます。この為、苦手な日付の場合はトレードせずにreturnで返るように細工することが出来ます。
元々のグラフはこんな感じです。
↑細工前
細工後は、あら不思議(でもないけど)。ぱっと見、良くできたEAに見えてきました。
元々のグラフはで大きく下げている箇所が改善され右肩上がり傾向が強くなっています。
↓細工後
プロフィットファクターも1.28から1.55まで増加しました。
Bヒストリカルデータの書き換え
ヒストリカルデータという過去の値動きを記録したファイルはCSVというテキスト形式ですので少し知っている人ならエディターで簡単に値を書き換えることができます。もっというとメタトレーダのヒストリーセンターの編集画面から書き換えることも出来ます。バックテストの結果が人によって異なってしまうという問題が出ますが、ヒストリカルデータを取得するサーバにより値が少し違うと言えば逃れられそうです。