MetaTrader4バックテスト補助ツール Ver 0.2.0 リリース

使用する時間によって設定ファイル(.set)を変更できる機能を追加しました。

設定ファイル(.set)を以下のルールで命名してください。

EA名_時間.set

例)

EA名:hoge.ex4

使用する時間:1h

設定ファイル名→ hoge_1h.set

 

この機能を使用しない場合には今までどおり、EA名.setを作成してください。

(EA名_時間.setが無い場合、EA名.setを設定します)

 

ファイルのダウンロードはこちらから。

MT4BackTester

※これは開発中のツールです。使用上の注意は前回の記事と同様になります。

※Ver0.0.x からある機能については前回の記事を参考にしてください。

 

MetaTrader4バックテスト補助ツール Ver 0.1.0 リリース

最適化結果をマージする機能をつけてみました。

MT4BackTester010

 

最適化チェックボックスの隣にある「結果を結合」チェックボックスにチェックをつけると、バックテスト結果を1つのファイルにまとめて、EXEファイルと同じフォルダに出力します。

Marge_作成日時.htm 的なファイル名です。

ブラウザで表示すると以下のような結果が表示されます。

MargeResults

すべての実行結果を結合して、利益の高い順に並べて表示します。

 

<この機能を使う際の注意事項>

・最適化した結果でないと正しく表示されません。(っていうかエラーになると思います)

・過去実施したデータが MT4インストールフォルダ\tester\MT4BackTester の中にある場合、一旦削除してから実行したほうがよいです。

→一緒に結合したい場合には残して置いてください。

→最適化しないで実行した結果が残っていると恐らくエラーが発生します(^^;)

 

ファイルのダウンロードはこちらから。

MT4BackTester

※これは開発中のツールです。使用上の注意は前回の記事と同様になります。

※Ver0.0.x からある機能については前回の記事を参考にしてください。

 

次回の修正(予定)

「時間足毎に違う設定ファイル(.set)を指定したいなぁ・・」っと思ったので

次はそれを実装しようかと思ってます。

1時間足の設定ファイルは EA名_H1.set とするとか、ファイル名で切り分けようかなと思ってます。

 

—–

独り言

いまさらながら「MT4BackTester」っていうツール名、どうなんだろ?という疑問が…(-_-;

バックテストするツールではあるんだけど、バックテスト自体はMT4がやってるわけで、単なる補助ツールですよね~

MT4BackTestAssistanceとかのがよかったかなぁ・・・(長いけどw

 

 

 

MetaTrader4バックテスト補助ツールα版公開

MT4BackTester

とりあえず動いてるっぽいので公開してみます。

※あんまりテストしてないです(´▽`;)

使ってみたい方だけ、ご自身の責任でお使いください。

(何か不都合が起きても一切責任とれません…)

 

【ダウンロード・インストール】

下記のURLからダウンロード

MT4BackTester

zipファイルを解凍するとEXEファイルが一つ入ってます。

適当な場所に解凍してEXEファイルを実行してください。

 

【動作環境】

・WindowsVista、Windows7の方は特に何も必要ありません。(たぶん)

・WindowsXPの場合は.Net Framework2.0以上をインストールしてください。

※WindowsServer系でも動くんじゃないかと思います。(たぶん)

※WindowsXPより古いOSでは動かないかもしれません。

※僕はWindows7の64bitで動作確認しています。他のOSは未検証です。

 

【注意】

1.WindowsVista以降のOSを使用している方で、Program Files(x86)フォルダの下にMT4をインストールしている方は「管理者権限」でEXEファイルを実行してください。

※ファイルのプロパティを開き、互換性タブの「管理者としてこのプログラムを実行する」にチェックを入れてください。

2.バックテストで必要なヒストリーデータは事前に準備してください。(MT4上にヒストリーデータが無いとバックテストされません)

3.MT4のVisual Modeのチェックは事前に外しておいてください。

4.設定ファイル(.set)はEAと同じ名前で作成しておいてください

例) hoge.ex4 の設定ファイル

hoge.set

 

【使い方】

上から順番に入力していきます。

最初にMT4のインストールフォルダを指定。間違っているとエラーが発生します。

また、MT4のインストールフォルダの下にあるexpertsフォルダにEAを置かないと何も起きません。

正しく入力されるとリストに「expertsフォルダ」に入っているEAが表示されます。

バックテストしたいEAを選択してください。(複数選択可能。Ctrlを押しながら選択してください。)

 

バックテストの条件を選択してください。(通貨ペア、時間、モデル)

必要に応じて最適化、期間指定、結果を上書くにチェックします。(期間指定にチェックされている場合には日付を入力してください)

準備ができたら「バックテスト実行」ボタンをクリックすると設定した条件でバックテストが実行されます。

 

バックテスト結果はMT4インストールフォルダの\tester\MT4BackTester\の下に作成されます。

ファイル名は EA名_+通貨ペア+時間.html 等となります。  (hoge_EURUSDH1.html など)

※「すべてのバックテストが終了しました。」というメッセージが表示されたら終了です。

※一度設定して画面を閉じると設定ファイル(MT4BackTester.ini)を生成します。

次回起動時、このファイルを読み込んで前回終了時の状態にしています。

万が一、設定ファイルの読み込みに失敗する場合にはこのiniファイルを削除してから実行してください。

 

 

とりあえず以上です。最初の方に書きましたがあんまりテストしてないのでバグはあると思います。

うまく動かないとか何かあればお気軽にコメントください。できる範囲でなんとかします。

※機能追加や要望も対応するかも知れません。(しないかも知れません)

 

 

#あ、通貨ペア増やすの忘れてた・・・

#増やしてみました。

—–

Q.1つのEAで複数のsetファイルを使いたい

A.このツールでは1つのEAにつき、1つのsetファイルのみ使用できます。

複数のsetファイルを切り替えて使いたい場合、EA(.ex4)のファイルをコピーで増やせば対応できます。

 

今開発中のツール「MT4BackTester」

使用していたノートPCのSSDが故障してデータが吹っ飛んだemijaです。

バックアップは定期的にとりましょう・・・・

 

そのようなわけで、前回の調査で使用していたトレードプログラムも消失してしまいまして・・・

やる気がなくなっていました・・・。

 

今は表題にある「MT4BackTester」というMT4のバックテスト補助ツールを開発中です。

(前回まで調査してたのは放棄しました(笑))

 

<画面は開発中のものです>

MT4BackTester

 

MT4はコマンドラインから設定ファイルを引数で渡す事でバックテストすることもできます。

通貨ペアを変更して実行する方法はとあるMetaTraderの備忘秘録に書かれています。

(※参考にさせていただきました!)

 

備忘秘録で紹介されているツールだと通貨ペアのみですが、「EAや時間足を変更して実行できたら便利なんじゃないの?」と思ったので別のツールを作ってしまうことにしました。

(テキストファイルをモソモソ修正するのも何だか原始的なので、画面から指定したいな~っというのが発端だったりします。)

 

今週末か、来週の頭くらいには作れるかなと思っています。

できたらβ版として、公開してみようかと思っていますので、興味のある方がいましたら使ってみてください。

「前日の終値から当日の価格を予想する」をシステム化してみた

 

前々回、投稿した「前日の終値から当日の価格を予想する」では「あまり意味がなさそうだ」と書きましたが、バックテストの実行結果では「上手くいく時期とそうでない時期が明確」になっていることから、何らかのフィルタを加えることで使えるシステムになるのではないかと考えました。

 

「トレンド方向に仕掛ける」ことで勝率を上げてみます。

トレンドを計るのに最も単純な方法は移動平均でしょう。

移動平均よりも価格が上の場合には買いのみ、下の場合には売りのみ仕掛けます。

今回、移動平均には20日指数移動平均を使用しました。(単純移動平均でもよいですし、40日や60日でも良いです)

 

期間:2007/1/1~2012/3/27  通貨ペア:ユーロ/米ドル

HalfUpperMA20

かなり良くなりました。

もう少し安定させるため、独自のトレーリングストップを組み込んでみます。

 

HalfUpper1300

どうでしょう。それなりに良くなったかと。

方向感が無い(移動平均線の上下をいったりきたりする)相場ではダマシが多くなり負けてしまうことも少なくありませんが・・・。

その場合は手動で停止するか、トレンドの強さを測る指標でダマシを防ぐ方法でよくなるかもしれません。

(僕はADXとCCIで試しましたが、良い結果にはならなかったです)

 

運用したいシステムかどうか・・・と考えると、ちょっと微妙な気が・・・

うーん・・・。もう少し良くならないか、考えてみます。

 

 

 

MT4で平日と土・日で実行結果が変わる件について

 

前々回の投稿に「通りすがり」さんがコメント入れてくれたのですが勢いで消しちゃいました。すみません・・・

(スパムとして認識されていて、スパム解除してからスパム全削除したのですが。一緒に消えてしまったようです・・・)

 

コメントの方は読ませて頂いて「結果が変わるのはスプレッドのせいじゃないか?」とご意見いただきました。

日足のトレードでガラっと結果が変わるほど影響を与えるかどうかは微妙な所ですが、実行した際に結果が変わるのは事実のようです。

(確か、平日のテストではリスクを小さくしてトレード回数を増やしたらよくなる傾向にあった・・・ような気がします。そしてその値をそのまま休日に使うと悪化していました。)

 

コメントを読んでいて「あ、そういえば・・・とあるMetaTraderの備忘秘録にそんなエントリーあったわ。」っというのを思い出しました(気づくの遅っ!

 

今調査しているものは僕のシステムの中では短期の部類に入るので影響は小さくなさそうです。

ちょっと試してみようと思います。

 

MT4のバックテストでスプレッドが気になっている方はfaiさんのブログを参考にしてくださいっ☆

 

 

 

前日の終値の位置から当日の価格を予想する

 

今日は終値が1日のレンジの50%((高値-安値)÷2)よりも上の場合の高値を更新する確率と、下の場合の安値を更新する確率を調べてみました。

 

★終値が高値と安値の中間より上に位置する場合、次の日に高値を更新する確率

期間:2001/1/1~2012/3/23 通貨ペア:ユーロ/米ドル

調査対象日数:2928

中間より上の日数:1519

内、次の日に高値を超えた日数:1101

高値を更新する確率:72.48%

 

・・・良さそうですが、終値が50%よりも上ということは「安値を更新するよりもレンジが狭い」だけかも知れません。

高値-終値で算出した値(レンジ)を、次の日の始値から減算した価格(同レンジの安値)を下抜ける確率も調べてみます。

ここで前述の確率より悪化すれば優位性があると確認できます。

 

★終値が高値と安値の中間より上に位置する場合、次の日に安値(同レンジ)を更新する確率

期間:2001/1/1~2012/3/23 通貨ペア:ユーロ/米ドル

調査対象日数:2928

中間より上の日数:1519

内、次の日に安値を超えた日数:1122

安値を更新する確率:73.86%

 

・・・あれ?(^~^;)

 

前日の終値の位置がレンジの50%より上かどうか?は、次の日の価格には影響しないようです。

 

当然、システムを作っても残念な結果になります(笑)

HalfUpper

5年間の勝率は45%程度。リスクリワードレシオは約1.0です。

 

=====

ちょっと残念な結果になりましたが、もう1つ調べてみたいことがあります。

始値も50%超えていた場合(ローソク足でいう下ヒゲの場合)はどうなるでしょう?

これなら優位性が出るかもしれません。

 

★始値と終値が高値と安値の中間より上に位置する場合、次の日に高値を更新する確率

期間:2001/1/1~2012/3/23 通貨ペア:ユーロ/ドル

調査対象日数:2928

下ヒゲ日数(レンジの半分以上がヒゲ):407

内、次の日に高値を超えた日数:295

高値を更新する確率:72.48%

 

確率は変わらなかった・・・(--;)

(下ヒゲになる日数は少ないのですが。高値を超える確立は、ほぼ同じになりました。)

 

 

・・・・・ヒゲ?なにそれ美味しいの?

※今回、1日のレンジ(足の長さやヒゲの長さ)を無視していますので、レンジを加えることで優位性が確認できる可能性があります。

今回は「有効なレンジの長さを客観的に測るのが難しい」と考え、調査対象外としました。

(有効なレンジ(長さ)を探しても、たまたま上手くいく値が見つかるだけではないか?と思います。興味のある方はご自身でお確かめください。)

 

 

 

 

僅かな優位性から利益を上げるシステムを構築する方法

前回、前々回と調査してきた内容を基にトレードシステムを構築していきます。

 

まずは「高値更新した次の日に買いを仕掛け、安値更新した次の日に売りを仕掛ける」というだけのシステムです。(高値・安値、両方更新した場合には仕掛けません)

「買いの場合は前日高値で利食い、前日安値で損切り」「売りの場合には前日安値で利食い、前日高値で損切り」としました。

 

期間:2007/1/1~2012/3/23

通貨ペア:ユーロ/米ドル

DoubleRidder1

勝率は買いが61%、売りが55%程度と、調査した結果とほぼ同等。

しかし、1トレードの平均損失 > 1トレードの平均利益 となっており、利益を出すことができませんでした。

 

そこで、1トレードの平均損失 =  1トレードの平均利益となるように、利食いポイントから損切りポイントを算出すると以下のようになりました。

(※買いの場合、 損切り価格=仕掛ける価格 - (利食い価格-仕掛ける価格))

DoubleRiddr2

平均利益 > 平均損失 となりましたが、勝率が40%前後になってしまい、やはり右肩下がりの資産曲線に・・・。

 

この後、あれこれ試しましたが利益が出せたシステムは以下のシステム。

DoubleRidder3

○「高値を更新した次の日に買いを仕掛ける。手仕舞いと損切り価格は固定(pips指定)。(売りはしない)

○トレーリングストップを併用。

 

調子の良い時と悪い時が顕著に出ているので、トレンド方向にのみ仕掛けることで良くなるかも知れません。

 

—–

この程度の優位性で利益を上げ続けるシステムを作るのは難しいですね・・・。

単体で使用するのではなく、他の指標や優位性と合せて使った方が良さそうです。

 

金曜日に検証した時には右肩上がりの資産曲線を描くシステムが出来ていたのですが、土曜日に動かしたら右肩下がりになりました。

夢でも見ていたのでしょうか。。。

(今回が初めてではない気がするのですが。データが変わってるのか幻を見ているのか・・・?)

 

なお、タイトルはエイプリルフール的なものです。

(金曜日に検証した時の資産曲線が残っていれば、嘘っぽく書けたんですけど・・・(笑))

 

 

 

高値更新と安値更新確率の修正版(同時更新対応版)

前回の調査で「高値更新した日の次の日に高値を更新する確率(3日高値更新する確率)」は約55%、「安値更新した日の次の日に安値を更新する確率(3日安値更新する確率)」は約51%と、やや順張り有利という結果が出ました。

しかし、前回の調査には「高値も安値も同時に更新した場合」の考慮が無かったため、同時更新時には片方が必ず負けてしまうことに気づきました。

そこで「両方更新した場合には無視する」ことで勝率を上げてみます。

 

「高値を更新した次の日」に続騰(3日高値更新)する確率(安値同時更新時は無視する)

期間:2001/1/4~2012/3/23 通貨ペア:ユーロ/米ドル 高値ベース

検証日数:2927

高値更新日数:1142

未更新日数:1785

3日高値更新日数:688

3日高値更新確率:約60.2%

 

「安値を更新した次の日」に続落(3日安値更新)する確率(高値同時更新時は無視する)

期間:2001/1/4~2012/3/23 通貨ペア:ユーロ/米ドル 安値ベース

検証日数:2927

安値更新日数:984

未更新日数:1943

3日安値更新日数:541

3日安値更新確率:約54.8%

 

予想通り、上昇しました。

高値更新の場合には60%を超えています。

これだけ優位性があれば、バックテストでそこそこ良い結果が出るシステムが作れそうです。

 

次回はこの優位性を利用したトレードシステムを作ってみます。

 

 

上げと下げの確率、高値更新と安値更新の確率を検証

今日はオープニング・レンジ・ブレイクアウトの再検証@買い有利・売り有利の日についてで使用した検証データを使用して、上げる確率と下げる確率、高値更新と安値更新の確率を調べてみました。

 

「上げるか下げるかは50%」と言われている方を見かけますが、実際の相場ではどうなっているのでしょうか。

期間:2001/1/4~2012/3/23 通貨ペア:ユーロ/米ドル 終値ベース

検証日数:2927

上げ日数:1494

下げ日数:1418

変化なし:15

上げた確率:約51.0%

 

僅かに上げ有利ですが、ほぼ50%。

やはり確率は50%のようです。

 

次に、「高値を更新した次の日」に続騰(3日高値更新)する確率を調べます。

 

期間:2001/1/4~2012/3/23 通貨ペア:ユーロ/米ドル 高値ベース

検証日数:2927

高値更新日数:1508

未更新日数:1419

3日高値更新日数:829

3日高値更新確率:約54.9%

 

2日前と1日前の高値を比較し、1日前の方が上げていた場合、再度高値を更新する確率は55%近くありました。

逆張りを仕掛けるよりも、順張りの方がやや有利、ということでしょうか。

なお、4日高値更新の確率は約53.9%、5日高値更新の確率は53.2%と更新確率が徐々に減少しました。

 

安値更新の場合も見てみます。

 

期間:2001/1/4~2012/3/23 通貨ペア:ユーロ/米ドル 安値ベース

検証日数:2927

安値更新日数:1352

未更新日数:1575

3日安値更新日数:686

3日安値更新確率:約50.7%

 

高値更新の確率よりも低いですが、それでも50%を僅かに超えました。

こちらも順張りの方が僅かに有利のようです。

なお、4日安値更新の確率は約48.5%、5日安値更新の確率は約48.3%となっており、高値更新同様、確率が下がっていきました。

 

もう少し顕著な優位性が見えると良かったのですが・・・

続騰の後は上げやすい、続落の後は下げやすいということと、連続で更新し続けた場合には更新確率が徐々に減少する傾向が見られただけでも良しと考えておきますか。

 

次回は、この傾向を考えたトレードシステムを作ってみる・・・かもしれません(未定)

 

 

 

Subscribe to RSS Feed Follow me on Twitter!
運命の出会い