2015年02月16日

【MT4】Strategy TesterでManual Backtestをする(ほぼ完成版)

【MT4】ストラテジーテスターで手動バックテストをする(β版)」の続きです。

ついにできましたー。疲れました。

Manual_Backtest_EA1.jpg


最新版のファイルです。すでにお持ちの方はダウンロード後、上書き保存+コンパイルをお願いします。

[EA用]
Manual_Backtest_EA.mq4 (2015/03/02 ver2.1)

[インジケーター用]
Manual_Backtest_Indi.mq4 (2015/03/02 ver2.1)

MT4 Build765で作成・動作確認しています。PCはWin7/8.1です。



今回から指値注文、逆指値注文できるようにしました。

Manual_Backtest_EA2.jpg

分かりづらいかもしれませんが、一度試してください。ブレイクアウトを手法にする場合は使うことになるかと思います。


逆に注文の取り消しは、
@指値/逆指値ボタンを押す → A全決済ボタンを押す
になります。
全注文が取り消しになりますので、注意してください。

個別の注文取消しはややこしくなるかなと思い止めました。


そして今回からご要望にありました簡易結果を追加しました。勝敗(勝率)、プロフィットファクター(PF)となってます。それぐらいで十分かなと思うのですが、どうでしょうか。あとはMT4のレポートを見てほしいと思います。


前回のブログ記事も参考に、いろいろ試してみてください。また後日、使い方をまとめたファイルを作ろうと思います。


いろいろアドバイスをいただき、本当にありがとうございました。有料のソフトには程遠いですが、これだけできれば十分でしょう。今まで作ってきた中でいちばんお薦めしたいインジケーターかもしれません。皆さん一緒に勝ちトレーダーになりましょう。(`・ω・´)




使ってみた感想など、些細なことでもいいのでコメントいただけると助かります。できたインジケーターのアイディアはコメントで成り立ってます。バージョンアップも考えてます。よろしくお願いします。


【追記】
やり方をまとめたものを作りました。
StrategyTester_ManualBacktest.pdf
posted by ロンド at 22:01| Comment(51) | MT4 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
どんどんバージョンアップしていますね。

現在保有中のポジションの情報(注文種別/ロット数/現在の損益、程度の簡易的な情報)が
画面の端っこにでも表示されてるといいな、と思ったのですが、
どうせなら、保有中チケットのリストをラベルか何かのオブジェクトで作ってしまって、
そのオブジェクトをそのまま決済/取消ボタンにしてしまえば、情報表示と個別決済が
一石二鳥で実現できてしまうのでは、と思ったりしました。

実は、既にそのアイデアで決済用EAのコードを書いてみたのですが、結構いい感じです。
(手動でクローズしたい時、ターミナルから注文を探すのは結構面倒なので)
Posted by lolo at 2015年02月16日 23:54
>loloさん

やりだすと止まらないです。もう疲れました。少しペース落とします。

リストで選べるようになると便利ですね。画面上でスクロールでできるようにすればいいかなぁと。そのためにはクラスとかつかってやることになりそうです。サブウィンドウでいいか。いろいろ試してみようと思います。
Posted by ロンド at 2015年02月17日 17:29
>ロンドさん

>やりだすと止まらないです。もう疲れました。少しペース落とします。

たしかに凝りだすときりがないですよね。
根を詰めないでのんびりやって下さい。
Posted by lolo at 2015年02月17日 19:02
>loloさん

ありがとうございます。
のんびりマイペースでがんばります。
Posted by ロンド at 2015年02月17日 19:52
凝りだすと疲れるので、ペースは落とすようにしてくださいね。
かなりこなれてきましたねー。

要望は書いてはおきますが、ご自身のペースでお願いしますね。

・ロットは最低0.01だとうれしい(当方海外の証券会社を使っていて最低ロットが0.01のため)
・買いと売りの色は左右反対(売りが赤、買いが青)がいいかも(証券会社によって違う?)
Posted by ワカイツ at 2015年02月17日 23:01
ロンドさん、こんばんは。

お疲れ様でした。
インジケーターで市販ソフトなみの機能を実現されて素晴らしいと思います。
やはりいつも使っているインジケーターでバックテストできるのはいいですね。
特に、利確、損切ラインが手動にて変更できるのは便利だと思いました。
私が使っている裁量君にはなかった機能なので、感謝して使わせていただきます。





Posted by bigapple at 2015年02月17日 23:05
>ワカイツさん

やりたいことが決まるとプログラムもサクサク進むような気がします。
バグとかあるかもしれないので、そのときはすぐに対応したいです。

ほとんどのMT4証券会社は1000通貨単位なんでしょうか。
ちょっと調べたいです。

色ですね。あと大きさとかも使いやすいように個人で指定できた方がいいでしょうかね。もしどうしても気になるようでしたらコード修正してみてください。色の部分なのでたぶんできると思います。
Posted by ロンド at 2015年02月18日 17:33
>bigappleさん

使っていただきありがとうございます。
市販ソフトには負けますが、最低限のことはできるかなぁと思います。
無料ですし。
あとはバックテストを続けるしかないですね。
自分もレベルアップさせたいです。
Posted by ロンド at 2015年02月18日 17:41
せっかくなので自分でも色々いじってみますねー。ありがとですー。
Posted by ワカイツ at 2015年02月18日 20:19
ロンドさん

初めまして。

先日たまたま検索中にこちらのブログを見つけさせていただき、
先ほど、

【MT4】ストラテジーテスターで手動バックテストをする(β版)

をダウンロードさせて頂きました。



・・・すごいw

の一言でしたw

まさか、DLLやGUIなどを使わずに、MQLだけでこんなことが可能だとは・・・

今まで、DLLやGUIを使ったものしか見たことがなく、DLLが必須だと思いこんでおりました。
思い込みをぶち壊してくださってありがとうございます。

バックテスターもありがたく使わせて頂きます。

これからもブログ楽しみにしております。
Posted by yuu at 2015年02月18日 22:49
>yuuさん

はじめまして。コメントありがとうございます。
そしてダウンロードもありがとうございます。

DLLを使わないってのもいいですよね。
ファイル1つだけでそんなに大きなコードでもないです。
いろいろ試してまた使ってみた感想を聞かせてください。

これからもよろしくお願いします。
Posted by ロンド at 2015年02月18日 23:05
あざっす!(・ω・)ノ
Posted by ラインマン at 2015年02月20日 00:22
>ラインマンさん

こちらこそ。

ラインマンってあのラインマンですか。
Posted by ロンド at 2015年02月20日 17:25
初めまして。知り合いのTwitterで紹介されていたのでお邪魔させて頂きましたm(__)m

バックテスターをダウンロードさせて頂きました。

この土日で使わせて頂いてますが指値移動も使えてとても便利です!

有り難く使わせて頂きますm(__)m






Posted by pairen38 at 2015年02月22日 17:08
>pairen38さん

はじめまして。コメントありがとうございます。

そしてインジケーターを使っていただき、ありがとうございます。
検証するにあたって基本的なことはこれで十分かなぁと思ってます。
また何か気づいたことなどありましたら、教えてください。

これからもよろしくお願いします。
使いやすいようにバージョンアップしていきたいです。
Posted by ロンド at 2015年02月22日 19:29
この様なインジケーターを無料で公開して頂いてありがとうございます。
かなりの労力が必要だったと思われますし、他にも多数のインジケーターを無料で公開されており、ロンドさんにとにかく感謝です。
今後もひっそりと応援させて頂きます。
Posted by アルパカ at 2015年02月25日 20:50
>アルパカさん

ダウンロードありがとうございます。
いつも思いつきでいろいろ作ってます。
ニューMT4になってからいろいろできるようになりました。
MT4にほんと感謝です。

これからもよろしくお願いします。
使いやすく改良していきたいです。
Posted by ロンド at 2015年02月26日 16:55
先週にテスターをダウンロードさせて頂いた者です。
改めましてとても使いやすいソフトを無料で使わせて頂いてる事に
感謝させて頂きます。
本当に有難うございますm(__)m

少し質問なのですが私はパソコンの事は良く解ってないので
幼稚な質問かも知れませんがこのテスターをしている時に
複数の時間足(1分と5分とか)を表示させることって出来るのでしょうか?

もしよろしければ回答をお願い致しますm(__)m

Posted by pairen38 at 2015年03月01日 18:09
>pairen38さん

引き続きありがとうございます。


>複数の時間足(1分と5分とか)を表示させることって出来るのでしょうか?

これはできるようです。といってもやったことがないのですが。

http://d.hatena.ne.jp/fai_fx/20100411/1270913869

こちらを参考に一度試してみてください。新MQL4版でないとうまくいかないかもしれません。
Posted by ロンド at 2015年03月01日 20:13
早々にお返事頂き有難うございますm(__)m

早速試してみます!
Posted by pairen38 at 2015年03月01日 20:18
有難うございます!出来ましたm(__)m 

これでマルチタイムでの検証も出来るようになります。

お手数をお掛けしてすいませんでしたm(__)m
Posted by pairen38 at 2015年03月01日 20:27
はじめまして。
MT4で、複数時間枠を同時スクロールできるインジを探してロンドさんのHPにたどり着きました。以前見つけたと思ったら旧バージョンで、MT4をダウングレードしようとするもうまくいかず、諦めかけていたところでした。このようなインジを無償で提供いただけるなんて本当に嬉しいです。ありがとうございます!

ところで上記のうまくいかなかったインジ、pairen38さんにご紹介されているものと同じでした。pairen38さんはできたのですね。。。それでこのページにコメントさせていただいています。
でも、どうしてこのページを紹介されたのですか?ロンドさんのチャートを同期させるインジも同じではないでしょうか。

ぐだぐだすみません。とりあえずやってみます^^;チャート同期にこのページの手動バックテストも一緒にできれば最強・理想です。ワクワクしてきましたーー。
Posted by nerimama at 2015年05月08日 00:36
>nerimamaさん

はじめまして。インジを使ってくださりありがとうございます。

普通のチャートでしたら私の作った同期させるインジでいいのですが、テスターを使ってバックテストさせながら同期となると私のインジでもいいのですが、右側(未来)が見えてしまいます。実際のトレードと同じようにしたい場合は、他の時間足も先が見えない状態がいいかということで上のページを紹介しました。
分かって頂けたでしょうか。説明がヘタですみません。

これからもよろしくお願いします。
Posted by ロンド at 2015年05月08日 09:14
ロンドさん
早速のコメントありがとうございました!同期を右側に合わせればよいのでは?と思ったのですが、実際にやってみてわかりました。ロンドさんの同期させるインジは、あくまでも場所を合わせるものなので、実際のトレードと同じようにその時のレートのラインが出るようにするのならご紹介のページが良いようです。

ちなみにご紹介のページのインジ、改めてやってみたら入れることができました^^;目的によってどちらも活用するのではないかと思います。色々やってみようと思います。

もちろん手動バックテストのインジも使います!こんなのが無償であるなんて思いませんでした。作成には多大な労力を掛けられたことと思います。
改めて、ありがとうございました!
Posted by nerimama at 2015年05月11日 16:49
>nerimamaさん

いろんな方法がありますよね。自分に合った楽な方法がベストかと思います。

もっとトレードに役立つものを作っていきたいです。
またよろしくお願いします。
Posted by ロンド at 2015年05月11日 21:37
ロンドさん、SynchroChartと共に使わせてもらっています。
こういうのが欲しかったのでありがとうございます!
Posted by borrell at 2015年06月30日 13:20
>borrellさん

インジケーターを使っていただきありがとうございます。
もっとこんなインジがほしいなどご要望がありましたら、ぜひ教えてください。
できるだけお応え致します。
Posted by ロンド at 2015年06月30日 18:10
はじめまして。MT4のバックテスターを探していてたどり着きました。

すばらしいEAを無料で使わせていただきありがとうございます。
FT2ですとバックテストしたいインジが無かったりするので
MT4で検証できて本当に助かります。

自分もMQL4で簡単なインジをは作れるのですが、これは素晴らしいと思います。
酷暑の折ご自愛下さい。

#過去コメントにあるマルチタイムなチャート同期インジの件
 データへのアクセス仕様が変わったようでbuild840では動かないです。
 600、700台では動作しました。
 最近のMT4は改悪しかしないので、古いbuildを保存して置かないと危険ですね・・・。
Posted by KBK at 2015年08月04日 09:52
>KBKさん

はじめまして。コメントありがとうございます。
インジケーターもありがとうございます。

FT2もMT4のインジケーターが使えるようになるといいですよね。
なんとかマルチタイムのインジを作りたいなぁとは考えているのですが、アイディアが思い浮かばずです。なんとかしたいですけども。^^;

もっと便利なインジを作り続けたいです。
これからもよろしくお願いします。
Posted by ロンド at 2015年08月04日 20:23
はじめまして
さきほどEAをダウンロードさせていただいて
感動して使ってます
ありがとうございました

さきほどブログでも紹介させていただいたのですが、
やっぱひとことご挨拶すべきだったかな?と思って、、、、
事前にお断りいれなくてすみません
もしご迷惑だったら言ってください

ではでは
ありがとうございました
Posted by まるみ at 2015年09月12日 20:23
>まるみさん

ダウンロードして使ってくださり、ありがとうございます。
ブログでの紹介もありがとうございます。非常にうれしいです。
全然迷惑だなんて思いません。感謝しかありません。
いろんな人に無料で使っていただいて、勝てるようになればそれでいいです。

またいろんなインジを作っていきたいので、これからもよろしくお願いします。
Posted by ロンド at 2015年09月12日 23:27
こちらのバックテスター、早速使わせて頂きました。

導入の手間もかからず、発注ボタンがインジケーターになっているため、テンプレ一つで環境が整い、とても重宝しております。ありがとうございました。

Posted by ahineko at 2015年10月08日 20:58
>ahinekoさん

はじめまして。
使っていただきありがとうございます。
テンプレで出せるのが楽ですよね。

他にもいろいろインジを作ってますので、試してみてください。
これからもよろしくお願いします。
Posted by ロンド at 2015年10月10日 08:24
はじめましてロンドさま
ダウンロードさせていただきました

勉強中で早速バックテストをしております
ありがとうございますm(__)m

1分足でスキャルをしておりましたところ、スプレッドは現在地のままなのですが、売りは現在地、買いが上の方で約定してしまいます。当方のMT4の設定が変なのかもしれませんが、とりあえずスプリッドを「1」にして対応しております。

本題ですが、売りでも買いでも約定後、指定した秒数、分数で約定したいのですが方法はありますか?

下のようなコメントを見つけましたが、どのようにしたらよいか分かりません。
−−−−−−−−−−−−−
OrderSelect で、Order Ticket Order Open Timeを取得して、
If(Oeder Open Time+60<=Time Current()); 約定から60秒以上たったら以下の{ }の命令を行う。
{
Order Close( Order Ticket(),Oeder Lot(),Ask(or Bid),... )
}
−−−−−−−−−−−−−

ご教授頂けらたら幸いです。宜しくお願い致します。
Posted by れん at 2015年10月11日 00:49
>れんさん

ダウンロードしていただき、ありがとうございます。

>1分足でスキャルをしておりましたところ、スプレッドは現在地のままなのですが、売りは現在地、買いが上の方で約定してしまいます。

スプレッドの大きさによるものだと思います。



>本題ですが、売りでも買いでも約定後、指定した秒数、分数で約定したいのですが方法はありますか?

いろいろ考えてみました。まず1分ごとにポジションの状況を確認して1分以内に約定することになるポジションのticketとオープン時間を取得します。オープン時間+指定した時間を過ぎたらそのポジションをticketから選んでクローズするでどうでしょうか。
Posted by ロンド at 2015年10月11日 22:44
ロンドさま
早速のコメントありがとうございます。

>まず1分ごとにポジションの状況を確認して1分以内に約定することになるポジションのticketとオープン時間を取得します。オープン時間+指定した時間を過ぎたらそのポジションをticketから選んでクローズするでどうでしょうか。

なるほど、指定時間でポジションを確認できるというのは素晴らしいです。とても目安になります。
ポジションを握ってから指定時間で”ピコピコ”したらいいですね!

素人考えで恐縮ですが、プログラムがとても複雑になるような気が…

わたしの場合、連続してポジションを追加することもあり、あくまでも練習なので強制的に指定時間でクローズしてもらいたいこともあります。
そんなことを考えるのは私だけかもしれません^^;

ですのであまりご面倒をおかけしてもと思いますので、たとえば下記の記述をエキスパート編集で「Manual_Backtest_EA」のどこかに追記すると、ポジション取得後、指定秒数(60秒)で強制的にクローズするものなのでしょうか?
−−−−−−−−−−−−−
If(Oeder Open Time+60<=Time Current());
{
Order Close( Order Ticket(),Oeder Lot(),Ask(or Bid),... )
}
−−−−−−−−−−−−−

宜しくお願い致しますm(__)m
Posted by れん at 2015年10月12日 00:21
>れんさん

Manual_Backtest_EAに数行追記するだけでは無理です。大幅に変更しないといけません。

今思ったのですが、テスターで秒単位のクローズをする検証はうまくいかないのではないかなぁと。あまりにも短期売買ですとリアルとの環境の違いが大きく出ます。エントリー後60秒で決済という方法にこだわるのであればデモ口座で実際にトレードしていくしかないのかもしれません。次の1分足出現時に決済であれば簡単なのでしょうけども、それでは駄目なのですよね?
Posted by ロンド at 2015年10月12日 09:34
>ロンドさま

コメントありがとうございます!
素人考えで簡単にできると思っておりました…。すみませんm(__)m

ロンドさまのご指摘どおり、リアルトレードにおいては必要ないと思います。利が伸ばせそうなのに指定時間でクローズするのはナンセンスだと私も思います。
ただ、エントリーのタイミングなんかも練習できればと思い、新規ポジション取得後1分でクローズにこだわりたかったのです…。

>次の1分足出現時に決済

その場合ですと、連続でポジションを取った時に次の1分足ローソク出現で全てクローズとなってしまいます。

何かとんちんかんな質問をして申し訳ありません。
変なところにこだわらず、視点を変えて練習して行きます!

いろいろご試案いただきましてありがとうございました。
Posted by れん at 2015年10月12日 10:46
>れんさん

またよろしくお願いします。
Posted by ロンド at 2015年10月12日 21:31
休日に練習したくてのこのページにたどり付きました。
素晴らしいですね!
早速インストールさせていただきましたが,
OrderSend error 131
が出てしまい,注文ができじにいます。
設定の仕方がまずかったでしょうか,ご教授ください。
Posted by teek at 2015年12月05日 14:53
↑自己解決しました。
ストップの幅が狭すぎたみたいです。
すみませんでした。
Posted by teek at 2015年12月05日 16:02
>teekさん

はじめまして。使っていただきありがとうございます。
エラー報告など何でもコメント大歓迎です。
またよろしくお願いします。
Posted by ロンド at 2015年12月05日 20:33
こんにちは。初めまして。

マニュアルバックテストのツールを使わせて頂いております。
素晴らしいツールをありがとうございます。

現在、1分足チャートを使ってテストを行っているのですが、
マルチタイムフレームのインジケーター(1分足チャートに5分足のRSIを表示)
を実装すると動作しません。

さすがにマルチタイムフレームのインジケーターは難しいでしょうか。

MT4初心者ながらに聞いてしまいました、すみません。
Posted by llazugon at 2016年04月15日 17:34
はじめまして。
たまたまこちらを見かけまして拝見させていただきました。
ブログ全体がとてもおもしろく、文面から管理人さんの謙虚なお人柄がみてとれ、
とても好感がもてます^^

マニュアルバックテストを使ってみました。
作成するのにとても苦労したと思います。
ありがとうございます。

有料のMT4バックテスターというのを使ってますが
こちらはこちらで便利な機能があり良いのですが
エントリー後にリミット、ストップをドラッグで移動させる事が出来ず
変更させるのに手間がかかります。

マニュアルバックテストのドラッグで移動できる機能はめちゃめちゃ嬉しい機能でした。
今までの手間がかかりません。私にとって一番の目玉でした。
検証がスムーズにできますので長時間の作業にも精神的に耐える事ができます。

使いにくい点はスピードコントロールでした。
相場の問題とする場所までもっていきたいけど、「遅いな、少しスピード上げよう、ああ、早くなりすぎた、ありゃ、過ぎちゃった」ということが頻繁に起こってしまいます。

有料のMT4バックテスターやフォレックステスターのようなローソク足を1本ずつ再生するような機能があればな・・・と思いました。
さらに、他に見たことありませんが2本ずつ、3本ずつ、4本ずつなどの機能(もちろんボタン一つで!)もあればなどと思いました。有料でもかまいませんので検討していただけませんでしょうか。

重ね重ねですがマニュアルバックテスト本当にありがとうございました。
それでは失礼いたします。







Posted by フィボ at 2016年10月04日 13:59
こんな凄いのが無料で使わせていただけるなんて!
ありがとうございます。
ブログ 更新楽しみにしています。
Posted by モモ at 2016年10月16日 12:04
>フィボさん

コメントありがとうございます。
インジケーターも使っていただき、ありがとうございます。

ぜひFTのような指定した本数だけ動かすインジを作りたいです。
アイディアありがとうございます。

これからもよろしくお願いします。
Posted by ロンド at 2016年10月17日 21:52
>モモさん

コメントありがとうございます。
またブログの再開します。
よろしくお願い致します。
Posted by ロンド at 2016年10月17日 22:04
DLさせていただきました。
有料版にも一長一短があるので、
迷ってしまい、どうしようかと思っているときに
こちらを使わせて頂きました。

なにより、T/P,S/Lを本番の時のように動かせるのが有難いです。
贅沢を言うなら、
足がクリックで一本ずつ動くといいなあ。とは思いますが、
そこは速度に慣れてしまえばクリアできますし、
本番はそんなわけがないのですから、
あまり便利さに慣れない方がいいのかな、と思います。

素晴らしいインジをありがとうございます。m(__)m

これからも期待はしておりますが、
ご無理なさいませんよう、ご自愛くださいませ。
Posted by りなP at 2016年10月23日 15:20
>りなPさん

DLありがとうございます。
速度調整は欲しいです。なんとか修正したいです。どうすればいいか考えてみます。

これからもよろしくお願い致します。
Posted by ロンド at 2016年10月28日 21:27
MT4もBuild 1000を超え落ち着きましたので、本格的な勉強を始めました。
MQL4 Referenceの他にはこれといった教材は見当たりませんので、優れたプログラムを見習って理解するようにしています。Manual_Backtest_Indi.mq4は複雑になったオブジェクト関数を学ぶには大変貴重な教材です。貴殿作成の関数を使った int OnInit()の部分を順次仕上げていくと、最後には見事に発注パネルが出来上がりました。結果は当然のことでしょうが、このプロセスが大切だと思っています。後はOnChatEvent()とEAを理解することですが、シニアーですので時間がかかりそうです。

質問ですが冒頭部分の
#define KEY_A 65
#define KEY_S 83
#define KEY_D 68
の数字の部分は何を意味するものでしょうか。

これは希望ですが、バックテストの際、スタートと同時にデフォルトで発注画面もチャートに表示する方法なないものでしょうか。因みにXFTFのmini Terminalはデフォルトで立ち上がるようにできています。残念ながら、こちらは同社口座開設者以外のチャートでは作動しないようですが。

Posted by 神奈川在 at 2017年01月02日 11:03
>神奈川在さん

コメントありがとうございます。
私も他の人が作ったコードで勉強中です。

#define KEY_A 65
数字はキーボードの「A」には65といった感じにキーコードが割り当てれています。これは決まっているものとしか言えないかなと。

>バックテストの際、スタートと同時にデフォルトで発注画面もチャートに表示する方法なないものでしょうか。

なんかできそうな気もするのですが、今パッとは思いつかないです。DLLとか外部で何かするのかなぁとも。自分でも考えてみます。

これからもよろしくお願い致します。
Posted by ロンド at 2017年01月02日 21:51
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]