2015年02月12日

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

今回はストラテジーテスターを使った手動バックテストです。ソフトを使わなくてもインジケーターやEAである程度のことができることを昨日知りました。裁量トレードされる方にお薦めしたいです。

manualtest1.jpg


ファイルは2つあります。

[EA用]
Manual_Backtest_EA.mq4 (2015/02/15 ver1.2)

[インジケーター用]
Manual_Backtest_Indi.mq4 (2015/02/15 ver1.2)

MT4 Build765で作成・動作確認しています

最新版(ver2.1)がこちらにあります。


ダウンロード後、Manual_Backtest_EA.mq4 は[Experts]のフォルダー、Manual_Backtest_Indi.mq4 は[Indicators]のフォルダーに入れてください。



使い方
@ストラテジーテスターを起動します。

A画像のように設定します。

mbea.jpg


モデルは「コントロールポイント」か「全ティック」に設定してください。
ビジュアルモードが便利です。


Bスタート後、新しいチャートが表示されるのでそのチャートにインジケーターManual_Backtest_Indiを表示させます。一時停止させた方がやりやすいです。


Cあとはテスターを動かしながら(1.スキップの左 [>>] を押しながら 2.[Pause/Break]キーを押しながら)、[買い][売り]とかクリックすると発注されます。

キーボードのショートカット
[A] ・・・ 買い注文
[D] ・・・ 売り注文
[S] ・・・ ポジション全決済


Dインジケーター側でポジションの指値(リミット)、逆指値(ストップ)の設定もできます。
manualtest2.jpg


Eそして変更がチャート上でできます。
manualtest3.jpg

レンジの外に移動させたり、トレールのようなこともできます。


Fトレード終了後、結果表示(レポート、グラフ)となります。


結構「Forex Tester2」というソフトに近づけたかなと。最低限のことはこれで十分だと思います。あとはポジション管理とか、個別の決済でしょうか。やろうと思えばできなくもないです。

自分としては裁量トレードする人にお役に立てるインジ&EAだと思います。ぜひ使ってみて感想を聞かせてください。もっとこうした方がいいなどありましたら、参考にさせてもらいます。機能を追加させます。




【追記】2015/02/12 20:23 
早速バグがあり、修正しました(OrderModify error 1)。最新版はManual_Backtest_EA.mq4(2015/02/12 ver1.1)です。


【追記】2015/02/15 12:34 
頻繁に修正することになりそうなので、しばらくはβ版ということにしてください。

上に最新版をアップしました。ver1.2
上書き保存、コンパイルをお願いします。


【主な修正】
1.買い、売りの位置を逆に。
2.キーボードのショートカット[←][→][↑][↓]は廃止。
3.ロット数を変更可能にしました。
btindi1.jpg
0.1が1万通貨ということで、デフォルトで0.1にしました。1.0がいいでしょうか。


これからの予定
・指値、逆指値注文
・簡易結果表示


【MT4】Strategy TesterでManual Backtestをする(ほぼ完成版)」へ続く・・・
posted by ロンド at 17:48| Comment(26) | MT4 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
大阪ではお世話になりました。
ありがとうございました。

ところで、おもしろいプログラムを公開されましたね。
勉強させていただきます。
ありがとうございました。
Posted by saru999 at 2015年02月12日 18:05
>saru999さん

こちらこそありがとうございました。
またよろしくお願いします。

自分としては結構便利だなぁと自画自賛してます。
これでまた検証を繰り返そうと思います。
Posted by ロンド at 2015年02月12日 18:36
ご無沙汰していますー。
いまポイジョンとっているのでインジケータの確認はまだできてないですが、重宝しそうなソフトですね。
Posted by ワカイツ at 2015年02月12日 23:15
>ワカイツさん

実際のトレードのように検証としてのバックテストができるかなぁと思い作りました。
まだまだ改良をしないといけないかなぁとも感じてます。
週末にでも試してみてください。
Posted by ロンド at 2015年02月13日 15:24
試してみましたー。
別のソフトを立ち上げるのではなくインジケータだけでここまで出来るのは素晴らしいですー。

あるとうれしいな、って機能は「ForexTester2」や「MT4裁量バックテスター」と比較すると、

・ロット数の調整
・時刻の表示
・売りと買いの位置はMT4に合わせて左右反対の方がいいかも?表示も「成行売り」「成行買い」と言ったように名前も同一で。
・インジケータの配置はメインの右下ではなく左下の方が最新の足とかぶらないので見やすいかも(Chart Shiftでずらしています)
・オフラインチャートを自動生成(Visualが1分足なら60倍で1時間足と言うような形)して複数足を同時に見られるとよりデモトレードに近いのでいいかも。

もろろんソースをみて自分で改良してみる、という方法もありかと思っています。

複数足の箇所は、以前にお話しした内容を含めて重複して書いていますね。いまだうまくいってない箇所です・・。
Posted by ワカイツ at 2015年02月14日 15:01
これいいですね
自分も昔作ろうとしてザセツしたことがあります。OrderSend()をスクリプトで入れるように考えたんですけど、なんだけ旨くオーダーが通らなくてあきらめました。

使ってみて改良ポイントを考えました。
1.買いボタンが右、売りボタンが左のほうがよい
MT4のトレードパネルも右が買いですよね。(細かい話ですが)
他のツールでもスピード注文とかもそうなってるので習慣的にしっくり来ます。


2.これはちょっと実現するのが難しいような気がしますが、
トレード中にも成績を見たい。
今何回トレードしていてそのうち何回勝ったとか、勝率とか、RRレシオ(リスクリワード比?)とか、バックテストを最後待てやらずに途中でやめたりしてもある程度目安として見えると便利かなと。


あと、ご存知かもしれないですが、トリビアです。EA名と同じ名前のテンプレートを作っておくとバックテストの時そのテンプレートが適用された状態でチャートが表示されます。





Posted by たい at 2015年02月14日 18:20
はじめまして、窮鼠と申します。
saru999さんから、こちらのブログを教えていただきました。
高齢者トレ−ダ−です。
素人レベルのプログラミングで悪戦苦闘してEA作りを楽しんでいます。
いくつかの記事を拝見させていただきましたが、
珠玉のインジケ−タ−群、すごいですね。
これからもいろいろ勉強させていただきたいと思います。
よろしくお願いいたします。
Posted by 窮鼠 at 2015年02月14日 19:18
>ワカイツさん

ソフトにはソフトの良さがあると思うのですが、インジだけでそれに近づけたらいいなぁと思ってます。「ForexTester2」持っているのですが、最近使ってないです。(^_^;)

>・ロット数の調整

これは追加させたいです。インジのパラメーターでやるか、チャート上でやるか考えてます。

>・時刻の表示

日本時間に変換したものってことでしょうか。あるといいですね。考えます。

>・売りと買いの位置はMT4に合わせて左右反対の方がいいかも?表示も「成行売り」「成行買い」と言ったように名前も同一で。

これは気づきませんでした。左右変更します。「成行売り」となると横長にボタンを作らないといけないかなぁと。

>・インジケータの配置はメインの右下ではなく左下の方が最新の足とかぶらないので見やすいかも(Chart Shiftでずらしています)

ずっとChart Shiftでずらしてやっていたので気づきませんでした。これは対応したいです。

>・オフラインチャートを自動生成(Visualが1分足なら60倍で1時間足と言うような形)して複数足を同時に見られるとよりデモトレードに近いのでいいかも。

同期のインジで対応できるかなぁと。ちょっとまた考えてみます。


いろいろアドバイスありがとうございます。近日中に機能追加したものをアップします。
Posted by ロンド at 2015年02月14日 20:33
>たいさん

使っていただきありがとうございます。
自分もスクリプトでOrderSend()できると思ってやったのですが無理でした。


>1.買いボタンが右、売りボタンが左のほうがよい

これは気づきませんでした。なんとなく青は買いかなぁと思って作ったのですが、ほとんどの業者の発注画面は左が売り(青)で右が買い(赤)なんですね。また修正したいです。


>今何回トレードしていてそのうち何回勝ったとか、勝率とか、RRレシオ(リスクリワード比?)とか、バックテストを最後待てやらずに途中でやめたりしてもある程度目安として見えると便利かなと。

これはあるといいですね。ただEA側からどうやって出力を出すかを考えないといけないかなと。リスクリワード比を表示するのはおもしろいです。機能として追加してみたいです。


トリビア知りませんでした。これは便利です。いちいちチャートの設定をやっていて面倒でした。こういう方法があったんだ。教えていただきありがとうございます。
Posted by ロンド at 2015年02月14日 20:48
>窮鼠さん

はじめまして。
こちらこそよろしくお願いします。

インジケーターはいろいろ作ってます。
EAはまた開発再開したいです。納得のいくものができればいいのですが。
自分もプログラムは独学でやっているので素人に近いレベルです。
私も教えてください。

これからもよろしくお願いします。
勉強会したいです。
Posted by ロンド at 2015年02月14日 20:54
ロンドさん、こんばんは。

ダウンロードさせて頂いたManual_Backtestセットのコードを睨んで
リファレンスなども読みつつ、しばらくいじくってみたら、
ボタンの作り方やOnChartEventの使い方も概ね理解できました。

やっぱりちゃんと動作するサンプルコードがあると勉強がはかどりますね。
ありがとうございます。

ところで、機能追加ですが、ここまで出てないものとして、

1) ストップ・リミットもBT中に変更可能にする
2) ペンディングオーダーの実装
3) 一日の特定の時間に停止する機能(ロンドン時間だけ検証したいなどの需要)

とりあえずこのくらい思いつきました。

3) は、停止するのはfai氏のhttp://d.hatena.ne.jp/fai_fx/20091006/1254754827#seemore
あたりの方法で実現できそうですが、サマータイムとか真面目に考えはじめると
ちょっと面倒くさいかもしれませんね。
Posted by at 2015年02月14日 23:03
ロンドさん

お返事ありがとうございますー

ForexTester2はテスターとしては優秀かとは思いますが、MT4のインジケータが使えないとかなにかと不便を感じていますのでMT4ベースがいいなって思っています。

>>・ロット数の調整
>これは追加させたいです。インジのパラメーターでやるか、チャート上でやるか考えてます。

ロットは資金管理を意識しながら裁量トレードの練習をすることを考えると変更は出来る方がいいですね。チャート上で出来る方がよりいいですが、動作時の負荷や改良のための負担がかかるようであればインジのパラメータでもいいと思います。

>>・時刻の表示
>日本時間に変換したものってことでしょうか。あるといいですね。考えます。

「MT4最小バックテスター」では日時が表示されるため、今いつの値動きかをすぐにわかります。「Manual_Backtest」でも表示されるといいなと思ってました。
日本時間への変換は、出来ればあった方がいいかなと思います。

>>・売りと買いの位置はMT4に合わせて左右反対の方がいいかも?表示も「成行売り」「成行買い」と言ったように名前も同一で。
>これは気づきませんでした。左右変更します。「成行売り」となると横長にボタンを作らないといけないかなぁと。

出来れば色(RGB)も同一の方がそれっぽくなるのでいいですね。
名称を変えると横長になるのがネックですね…

合わせて他の方がおっしゃっている「トレード中にも成績を見たい」はCSVで逐次出力するのが出来るならそういった代替もありかと思っています。

複数足については

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

をまねしてBuild600以降対応版でやってみたのですがいまだ出来てないですね・・。

あとは複数足が出来ればほぼほぼ「ForexTester2」や「MT4裁量バックテスター」に近づくと思いますー。
Posted by ワカイツ at 2015年02月14日 23:05
上のコメントは私のものですが、名前を入れ忘れました・・・。
Posted by lolo at 2015年02月14日 23:05
>loloさん

コードにコメントも入ってないですし、一部コピペもあったりして理解するのは難しいのではないかなぁと思います。他人のコードはどれも難しいですね。(^_^;)
あとオーダーはMT4系の形式で書いているのでそのままではMT5では使えないですね。


1) ストップ・リミットもBT中に変更可能にする

これは変更出来るのですが、また違うのでしょうか。

2) ペンディングオーダーの実装

これを今取り掛かってます。できるようにしたいです。

3) 一日の特定の時間に停止する機能(ロンドン時間だけ検証したいなどの需要)

こういうことが出来るんですね。知りませんでした。勉強になります。
Pauseキーでテスターを停められたんですね。これも知りませんでした。今までマウスでやっていたので便利になります。
Posted by ロンド at 2015年02月15日 09:53
>ワカイツさん

ForexTester2はMT4のインジを使えるようにしてほしいです。ソフトとしてはいいソフトですけど。

ロット数の調整はチャート上でできるようにしました。今度またファイルをアップします。試してみてください。

それにしてもfaiさんのブログはいろいろ参考になります。またじっくりと見てコードに反映していこうと思います。
Posted by ロンド at 2015年02月15日 10:18
>ロンドさん

>これは変更出来るのですが、また違うのでしょうか。

すみません、勘違いしてました。
EA側ではなく、インジケーター側で設定するんですね。
さらに、エントリー後に手動でも動かせるので何の問題もないです。
失礼しました。
Posted by lolo at 2015年02月15日 12:26
>loloさん

またコードを修正したので試してみてください。
使い勝手とか参考にしたいです。
Posted by ロンド at 2015年02月15日 12:56
window7のMT4使いです。
初心者なので裁量用のバックテスターを探してここにたどり着きました。
さっそく使ってみたのですが、うちもMT4ではうまく作動しませんでした。
最新のMT4では動作しないのでしょうか?
Posted by tanaka at 2016年08月14日 15:58
私のMT4にはバックテスターのところにビジュアルモードの項目がないです。
それが原因でしょうか?
Posted by tanaka at 2016年08月14日 16:30
>tanakaさん

テスターの縦幅が狭いからではないでしょうか。
一度広げてみてください。
Posted by ロンド at 2016年08月15日 11:59
お返事ありがとうございます。テスター広げたらビジュアルモードの項目出てきました。
ですが、チェック入れてスタートさせても新しいチャートが出てこないです・・・。
スタート押しても、ただビッ!って音が出るだけです。
最適化グラフや最適化結果は空欄のままです。
Posted by tanaka at 2016年08月15日 14:50
>tanakaさん

それはおかしいですね。ビジュアルモードをオンにしてスタートさせたらUSDJPY,H1(visual)のように普通は新しいチャートが出てくるはずですが。。。
Posted by ロンド at 2016年08月15日 16:55
なんでですかね・・・デモのmt4だとできないとかありますか?
もう一度確認しましたがやはりできないようです。
Posted by tanaka at 2016年08月15日 19:03
ロンドさんの今使っているMT4では使えていたのですか?
mt4の会社2つ使ってますが両方使えないです。
やり方なにか間違えてるのかなあ・・・
EAは普段使っているのでEA自体は動かせるはずなんですが
Posted by tanaka at 2016年08月15日 19:08
>tanakaさん

デモでもできます。EAのビジュアルモードのバックテストができますでしょうか。
それができるならこのマニュアルでもできるはずです。
試してみてください。
Posted by ロンド at 2016年08月15日 21:21
どうもうまくいかないので、新しい会社でデモをはじめてそこのMT4でやったらうまく行きました。
Posted by tanaka at 2016年08月15日 23:00
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]