2007年11月05日


簡単MT4バックテスト方法

 ブログランキング・にほんブログ村へ  

リクエストを頂いたので、MT4のバックテスト方法について説明します。
関連記事:DealBook360のバックテスト方法

MT4は難しいと思われがちですが、意外と簡単です。
基本的にDealBook360でもMT4でも多分どんなプラットフォームでも、
バックテストするのに必要な作業は大差ないと思います。

MT4は検証機能が充実していますし、なんといっても速いので、
DealBook360ユーザも使いこなせておいた方が良いと思います。


[MT4バックテスト手順]
1) ヒストリカルデータ入手
メニューからツール>History Centerを選択。
History Centerのウィンドウが表示される。
MT4 History Center
ダウンロードしたい通貨ペアと時間を選び、Downloadボタンを押す。
右側の方に入手したデータの一覧が表示されるので、
バックテストしたい期間のデータがそろってるか、右端のスクロールバーを動かしてひととおり確認する。
(ログインしただけでも1年分くらいのデータはあるはずです)


2) テスター設定
メニューから表示>Strategy Testerを選択。
テスターが(通常)メインウィンドウ下側の方に表示される。
MT4 Strategy tester

.丱奪テスト対象のstrategyを選択する。
今回は MACD Sample に設定。
通貨ペア選択。今回はダウンロードした USDJPY に設定。
モデル選択。DealBook360にあわせるため、Open Prices onlyに設定。
ご間選択。今回はダウンロードした 1Hに設定。
ゥ丱奪テスト開始〜終了日の設定。
今回は2005/01/01〜2006/12/31に設定。
Visual modeの設定。
チェックを入れるとチャートやサインを表示しながらバックテストしてくれる。


3) バックテスト実行
テスターの画面で、Гスタートボタンを押すとバックテストが開始する。

Visual modeをチェックしてるので、チャートがうごきながらのテストとなる。
速く進めたい場合は、Δ離弌爾魃Δ諒に持っていく。
リアルタイムで表示する必要がなければSkip toボタンを押す。
バックテスト実行中に止めたい場合は、Гストップボタンを押す。
(バックテスト中はスタートボタンがストップボタンに変わっている)

「プキキュー」っと変な音が鳴ったら、バックテスト完了!


4) バックテスト結果確認
テスターの画面で、┐砲△襯織屬鮴擇蠡悗┐瞳覯未魍稜Г垢襦

セッティング・・・2)、3)の作業で使用したバックテストの設定タブ。
結果・・・売買履歴。行をクリックすると、Visual modeで表示したチャートの 位置が、売買した箇所に移動する。
(チャートと照らし合わせると、ポジションを建てた理由がわかるので、移動してくれる機能は非常に便利です。)
Graph・・・損益グラフ。縦が損益、横軸はトレード回数。
バックテスト実行中もリアルタイムに更新されるので、 長時間のバックテストでは、ここを見て中断の判断に使うなどする。
MT4 Graph
グラフに何も描かれなかった場合はうまくいってないと考える。
売買条件が厳しすぎるとか、テスト期間が短いとか、 ヒストリカルデータが存在しないとか、資金不足等いろいろ原因が考えられる。
レポート・・・バックテストのパフォーマンスレポート
MT4 レポート
赤枠で囲んだ箇所に、総損益、プロフィットファクター、ドローダウン(絶対値)、トレード回数が 表示される。
操作履歴・・・テスターのログ。
エラーが出てないか必ず確認する。
(indicatorが不足して毎バーエラー表示してえらいことになってたりする。)
strategy(ExpertAdviser)内のprint文などはここに結果が表示される。


以上で基本は終わりです。
あとは使ってみればなんとなく解ってくると思います。
次回書く機会があれば、パラメータ変更方法、最適化方法でも。

システムトレーダー情報



Posted by ロストマン at 12:05│Comments(9)TrackBack(0)

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/lostman5/51252081
この記事へのコメント
どうも、わかり易い説明ありがとうございます。

やってみました。

なんか dealbook360 使うのが馬鹿らしく思えてきました・・・
Posted by kyojee at 2007年11月05日 22:04
kyojeeさん、こんばんは。

そうですね。
システム開発段階ではDealBook360を使うメリットは
少ないと思いますし、
実際の取引となると、MT4は業者がなくて厳しいと
思います。
Posted by ロストマン at 2007年11月06日 00:14
すいません。ロストマンさんヘルプみーです。

http://codebase.mql4.com/ru/source/2519

↑このindicatorをEA で使用しようとすると、意図する値が入ってきません。

iCustom(Symble(),Period(),"williamsAD",0,1);

とかして値を得ようとしていますが、期待する値は参照できません。
Open Price Only です。
Posted by kyojee at 2007年12月07日 22:56
kyojeeさん、こんばんは。
ためしにEAに入れてみましたが、認識できました。

iCustom(Symble(),Period(),"williamsAD",0,1);

とりあえずSymble→Symbolですよね。(これはCompileエラーすると思うので関係ないと思いますが。)

"williamsAD"とindicatorのファイル名は一致してますよね?違ってると操作履歴にエラーが出てるはずです。

VisualモードでバックテストしてwilliamsADのチャートが出なかったらなんかあると思うんですが、こっちでは表示されています。


ところで、FXメタトレーダー入門(toyolabさんの本)予約注文しました!配達中でまだ届いてないですが、MT4のこと色々解るようになると期待してます。
Posted by ロストマン at 2007年12月08日 00:56
すいません。説明不足で・・・
EAに取り込めるのですが、例えば30分足のUSDJPYだとすると115.5とかCloseに近い値が返ってくるんです。
チャートには80とか正しい値が表示されているのです。30分足のままPeriod()を1とかにすると正しいそうな値が返ってきますが、15分足にすると駄目です。

何か間違っているのでしょうけど、はまってます。

本は私も発注しましたー!
Posted by kyojee at 2007年12月08日 10:16
インディケータがマルチタイムフレームに対応してないからではないでしょうか?
試しにこのインディケータを呼び出すインディケータを別タイムフレームで表示しましたが、
ちょっと違う値が出ました。

今朝MT4本届きました!全部読みました。あまり気にせず使ってたところも理解できた気がします。
Posted by ロストマン at 2007年12月08日 16:35
こんにちは。
「簡単MT4バックテスト方法」は、とても親切に書かれていて分かりやすいです。
しかし、この方法ですと、結果の信頼性は45%しかないと、ForexFactoryかForexTSDに書いてありました。
多くの方がバックテストの結果と、フォワードテストの結果が、あまりにも違うと言うのはそういうことだと思うのです。

そこで、教えてもらった正確なバックテストの方法を書いて先ほど投稿したのですが、「コメントが長すぎるので受付できませんでした」と言われてしまいました。残念ですが仕方ありません。正確なバックテストをする手順は、かなり複雑です。是非気をつけてください。
Posted by 通りすがり at 2008年02月22日 21:16
長文書いてもらったのにすみません。
ライブドアのコメントは長いときは何回かに分けないとダメなんです。

貴重な情報ありがとうございました。
通常の方法では信頼性が45%となるというのは、非常に興味深いです。
どんな根拠か、上記キーワードをもとに調べてみます。
Posted by ロストマン at 2008年02月23日 01:25
詳しい解説ありがとうございます。
アドセンスをクリックしておきます。
Posted by 投資 at 2008年06月04日 23:14