ここでは、MetaTrader4のテスター機能を使ってEAの良し悪しを判断する方法について紹介します。
もし「購入した自動売買ソフトがMetaTrader4のEAなんだけどホントに利益がでるの?」とか「ダウンロードしたEAの過去の成績を知りたい」と思っていたら、ぜひこの記事を参考にしてみてください。
「MetaTrader4でのEAの動かし方が全くわからない」という方は、前回の記事も参考にしてみてください。
前回記事【MetaTrader4の自動売買で必要な操作方法】へ
博士!このEAの過去の成績はどうだったかにゃ?
残念ながら実績データがないんじゃ。だが、MT4のテスター機能を使えば過去の成績を知ることができるぞい!
にゃんと!!
MT4のテスター機能の使い方
売買ロジックの過去の成績を検証することを「バックテスト」といいます。
MetaTrader4では、ストラテジーテスターというテスター機能を使って、過去においてEAがどのような取引をしてどれだけの損益だったかを知ることができます。
テスターウィンドウを表示させる
MT4画面でメニュー「表示」の中の「ストラテジーテスター」をクリックすると、テスターウィンドウが表示されます。ツールバーの虫眼鏡マークのボタンをクリックでもテスターウィンドウを表示させることができます。
テスターのセッティングタブで各項目を設定する
テスターウィンドウ内の下側には、セッティングタブと操作履歴タブがあります。バックテストをするにはセッティングタブでどのEAをどの通貨ペア・時間足でいつからいつまでなどの設定をする必要があります。
セッティングタブの左上の項目から順番に解説していきます。
EAかインジケーターかの選択
一番左上のボックスでは、「エキスパートアドバイザ」か「インディケータ」のどちらかを選択します。
エキスパートアドバイザを選択すると、そのボックスの右側のリストボックスがEAのリストになるので、バックテストするEAを選択しましょう。インディケータを選択した場合、右側のリストボックスがインジケーターのリストになり、過去の表示を確認したいインジケーターを選択できるようになります。
通貨ペア(銘柄)の選択
2段目の項目で通貨ペアを選択します。ここで選択できる通貨ペアは、MetaTrader4を起動したときの気配値表示に表示されたものになっています。
モデルの選択
3段目の項目でモデルを選択します。ここでのモデルとは、値動きの再現精度と考えると良いです。
値動きの再現精度は、テスト結果の信頼性と比例します。その反面、値動きの再現精度が高いとティック(値動き)数が多くなるため結果が出るまでの待ち時間が長くなります。必要な精度によって使い分けるのがコツです。
モデルは下記の3つから選択します。
- 全ティック(使用可能な最小時間枠を使いすべてのティックを生成する、最も正確な方法)
- コントロールポイント(ひとつ下の時間枠を使ったおおまかな方法。結果はあまり信頼性はない)
- 始値のみ(最も速い方法。バーの始めにしか動かないEA向け)
全ティック
MT4またはサーバーにある1分足のヒストリカルデータを使用しようとします。1分足がなければ5分足、それがなければ15分足というようにできる限り正確にテストしようとするモードです。ボリューム(ティック数)も反映されます。
コントロールポイント
例えば1時間足の場合30分足というように1つ下の時間枠の4本値データから一定数のティックを生成してテストするモードです。
素早く動作確認などをしたい場合などに便利です。
始値のみ
始値を付けたときだけ処理を実行するモードです。ローソク足出現時のみ処理をするEAであれば、このモードで素早くテストすることができます。
期間を指定
4段目の項目の「期間を指定」にチェックを入れると、バックテストの開始日と終了日を指定できるようになります。MT4またはサーバー上に指定した期間のヒストリカルデータがない場合、その期間はスキップされます。
この項目にチェックを入れない場合は、ヒストリカルデータ全ての期間でバックテストを行います。
ビジュアルモード
ビジュアルモードにチェックをいれると、値動きと売買取引の様子をチャートで確認しながらバックテストを進めることができます。
その右側のレバーで1~32の速さで値動き速度が調節できます。その右側のボタンで一時停止・再開が可能です。スキップボタンをクリックすると、その右側の指定年月日までチャート表示をスキップするためその期間のテスト速度は速くなります。
期間(時間枠)の選択
テスターウィンドウの右側、期間(時間枠)の項目ではM1(1分足)~Daily(日足)の中からテストする時間足周期を選択します。
スプレッド
Ask(買値)とBid(売値)のスプレッド(差幅)をポイントで指定します。「現在値」を選択するとリアルタイムでのスプレッドがテスト開始時に適応され、そのスプレッドでバックテストを行います。週末などのスプレッド拡大時には「現在値」を選択しないほうが無難です。
ポイントとは
MetaTraderで使用する用語でポイント(Point)とは、1ポイントが取引プライスの最小値幅となります。例えば、USDJPY(ドル/円)のプライスが108.500というように小数点以下3桁表示の場合、取引プライスの最小値幅(1ポイント)は0.001となります。
最近は小数点以下3桁・5桁のFX口座が多いので、その場合は、1 Pip = 10 Point になることを覚えておきましょう。
最適化
最適化は、EAのパラメーターを最適化する時にチェックをいれます。通常のバックテストの場合はチェックをはずした状態にします。
エキスパート設定ボタンでパラメーターを設定
右上のエキスパート設定ボタンをクリックすると、設定ダイアログが表示されます。
ここでは主に、テスト設定タブで初期証拠金を変更したり、パラメーターの入力タブでEAのパラメーターを設定します。
その他にも項目やボタンがありますが、以上が最低限知っておきたいテスター機能の使い方です。
バックテストの実行とその出力結果
各設定は済んだかな?それではスタートボタンを押すのじゃ!
は、はい!!
バックテスト開始と中断
テスターウィンドウの右下のスタートボタンをクリックすると、バックテストが開始されます。
バックテストが開始されると、スタートボタンだったものがストップボタンに替わります。ストップボタンをクリックするとバックテストは中断して終了します。
バックテスト完了の合図
バックテストが開始されると、テスト進行状況に合わせてストップボタンの左側のメーターが進んでいきます。メーターが満タンになり、ストップボタンがスタートボタンに替わり、「ピィプゥー」と鳴ったらバックテスト完了です。
バックテストの出力結果
バックテストが完了すると、テスターウィンドウのセッティングタブの右側に、結果・グラフ・レポートのタブが追加されます。
結果
結果タブには、バックテストでの注文履歴が記録されています。各注文の時間・数量・価格・損益や、その時の残高を確認することができます。
グラフ
グラフタブは、資産の増減をグラフ化したものです。右肩上がりなら利益が出ているということになります。
レポート
レポートタブでは、バックテストの結果をデータとしてまとめてある成績レポートが確認できます。
レポートの中で最初に確認しておきたい項目は、総取引数です。
総取引数が多ければ多いほど、信頼性が高いバックテスト結果といえます。総取引数が少ない場合は、そのEAの良し悪しを判断することができません。
次に重要な項目は、純益です。
純益は、バックテスト開始から終了までのトータルの損益です。純益がマイナスの場合は、そのバックテストを行ったEA・通貨ペア・時間足・パラメーター設定でリアルタイム稼働をしても証拠金残高が減っていく可能性が非常に高いです。
レポートからEAの良し悪しを判断する
手順1
EAの良し悪しを判断するときには、単利運用のレポートで初期証拠金と純益と最大ドローダウンを見ます。
最大ドローダウンとは、過去の最大残高からの損失額の最大値です。
相対ドローダウンとは、過去の最大残高からの損失%の最大値です。
例)
100万円の資金で運用を開始していきなり10万円の損失が出た。(10%のドローダウン)
その後、400万円まで増えたが、そこから20万円の損失が出た。(5%のドローダウン)
上記の例では、最大ドローダウンが20万円で、相対ドローダウンが10%となります。
手順2
運用直後に最大ドローダウンが来ることを想定して、初期証拠金に対する最大ドローダウンのパーセンテージが自分の許容範囲になるように初期証拠金または取引数量を変更して再度バックテストします。
手順3
初期証拠金に対する最大ドローダウンのパーセンテージが自分の許容範囲内になっていることを確認して、下記の計算式で年利%を算出します。
年利% = 純益 ÷ 初期証拠金 × 100 ÷ テスト開始から終了までの年数
年利とは、1年間の利益率のことで、例えば資金100万円で年利30%の場合は利益が30万円となります。
さいごに
算出された年利%が自分の合格基準に達していれば良いEAと判断してもよいかと思います。
あとがき
MetaTrader4のテスター機能の使い方とレポートの見方、EAの良し悪しの判断方法を紹介しました。
EAの良し悪しの判断方法は他にもいろいろありますので、ご自身に合った判断方法を見つけるのもよいかと思います。
さて、次回はいよいよMetaTrader4のEAの作り方を説明します^^
こんばんわ。
はじめて質問させていただきます。
プログラムを作成して、スタートボタンをおしてみたのですが、
操作履歴のシートを見ると、Order Send Error 131が出力されていて、
結果シートやGraphには何も出力されていない現象となっております。
アドバイスをお願いできないでしょうか。
よろしくお願い致します。
yamaさん
こんにちわ。
Order Send Error 131 は、ロット数が無効な数値だということを表しています。
例えば、最小ロット数が0.1の口座で、0.01ロットのエントリをしようとしたときに
このエラーが出たりします。
はじめまして、MT4のEAに挑戦しようと検索していたらこのサイトに
辿り着きました。
で、ものすごく初歩的なトラブルかもしれませんが
上の通りにMoving Average を用いてバックテストの練習を
していて
『Moving Average でそのままの、自動売買はやめにしましょう。
チャートを右クリック → Expert Advisors → 削除』
の指示通り削除しようとしたら削除の所が半透明になっていて
バックテストしたチャートが削除できません。
何処か設定を変えてしまったのか??まったく判りません。
どうかご教授下さいませんか?よろしくお願いします。
はじめまして、MT4のEAに挑戦しようと検索していたらこのサイトに
辿り着きました。
で、ものすごく初歩的なトラブルかもしれませんが
上の通りにMoving Average を用いてバックテストの練習を
していて
『Moving Average でそのままの、自動売買はやめにしましょう。
チャートを右クリック → Expert Advisors → 削除』
の指示通り削除しようとしたら削除の所が半透明になっていて
バックテストしたチャートが削除できません。
何処か設定を変えてしまったのか??まったく判りません。
どうかご教授下さいませんか?よろしくお願いします。
しんさん
コメントありがとうございます^^
チャートの下に、USDJPY,M5(visual)など(visual)と書いてあるタブのチャートは、
バックテストのビジュアルモードで表示されたチャートですので、そのタブを右クリックし、
Closeを選択して削除します。
通常のチャート((visual)などの表示がないもの)の右上に、EA名とニッコリマークがある場合は、EAが稼動していますので、そのチャートを右クリックして、
Expert Advisors → 削除
の手順で、EAを外します^^
ありがとうございました。問題解決しました。
昨日、はじめてMT4をダウンロードしてちょっと困っていました^^;
またどこかで超初歩的な質問をさせて頂く事もあろうかと思いますが
その時はどうかよろしくお願いします。
Dr.EAのブログとても判りやすくて大変見やすい画面で気に入っています。
これからも大いに活用していきたいと思います。
初めまして、バックテストをしようとしてつまづいて、このブログに来たのですが、
上の方が Order Send Error 131 が表示されて結果が出てこないという質問
に対して、ロット数が無効な数値というのはわかったのですが、具体的にどうやって対処
したらいいのでしょうか?
初歩的な質問で申し訳りませんが、教えていただけませんでしょうか?
hiroさん
こんにちわ^^
パラメータでロット指定できる場合は、整数の1を入力してみてください。
ロットが自動的に算出される機能がある場合は、その機能をOFFにしてください。
すみません。システムトレードに興味を持った素人です。
以前、シミュレーション(バックテスト?)はすでに確定してる
終値を利用して結果を出すために、実運用では、終値は例えば日足の場合だと、未来値のため利用できない。そのため、シミュレーションの方が結果が良くなるとか言う話を聞いたことがあります。
この話の意味がよく分からずに調べてるのですが、答えそのものの記事に出会いません。
結局、自分で考えてみたのですが、シミュレーションは、例えば過去の数ヶ月とか用いて行う。つまり、利用するデータは全て現在に於いて確定してるデータである。
しかし、同じロジックを、実運用する場合、日足だと、終値はまだ決まってないので何かしらの代替の値を利用することになる。つまり不正確な値を利用するのだから、その分精度が落ちるという意味で良いのでしょうか?
(勿論、過去の期間に対して、そのロジックが有効であったが、
傾向等が変わってしまい、現在ロジックの有効性そのものがなくなってしまって結果が悪くなるといった可能性の話もあると思いますが、それはここでは無視してください。)
また、このような意味で合ってるのであれば、終値の代替値として、
どのような値を利用するのが一般的ですか?
素人です。質問自体ナンセンスかもしれません。ご容赦下さい。
おじさんさん
こんにちは。
>シミュレーション(バックテスト?)はすでに確定してる 終値を利用して結果を出すために、実運用では、終値は例えば日足の場合だと、未来値のため利用できない。そのため、シミュレーションの方が結果が良くなるとか言う話を聞いたことがあります。
この話が間違っているのではと思います。
未来値を使用したシミュレーションをした場合のことかなと思います。