2021年12月

なんだか、急に冷え込んできました。
あと2週間もすれば今年も終わるので、当たり前なのですが、
なんとなく今年はギリギリまで穏やかな陽気というのが
つづいていたような・・・

【はじめに】
気が向くままにMT4(Metatrader4)やEA(Expert Advisors)のことを
書いてます。
わたしとうちのお館さまの独断と偏見で書いています。
なので、うちのパソコンでは問題がないことを確認していますが、
試す時は自己責任でお願いします。

【本文】
MT4のバックテスト(BT)の話になって、5回目。
他の方が同じようなことを書けば、3回くらいで説明しきれた気が・・・
修業が足りません。
今回は、↓こちら↓の最後です。
1) テストするEAと設定ファイル(setファイル)を用意
2) MT4をいくつか用意
3) テストを一度に動かすためのファイルを用意
4) テストの条件を書いたファイルを用意
5) テスト実行
6) テスト結果ファイルを合体

前回までに、MT4を実行するファイル連続実行用バッチ.bat
ダブルクリックすれば、MT4が3つ動き、それぞれが設定ファイル
「PuellaST_1.txt」を読んで、
分割した期間別バックテストの結果をファイル(EI005_01.html)に
保存してくれるという説明をしました。
もともと超長期間(2005.01.01~2021.10.31)のテストが
目的でしたから、分割したテスト結果をまとめます。
便利なツールが無かったので、お館さまにExcel VBAを
使って、作ってもらいました。
勝率だけでなく、バックテストで表示される結果から、
各種ドローダウンも計算しています。
残念ながら、小数点の末尾あたりに誤差が
ありますけど(;'∀')
でも、そのあたりは「精度が落ちてもしかたない!」と
わりきってます。
【メモ】(その1)
バックテストの結果だけでは解消できない誤差
について、いいわけ(;^ω^)
MT4のストラテジーテスターのタブ「結果」に、
テスト期間中の売買が表示されます。
この画面に表示されている値と、内部で持っている値に
差があります。
↓こちらの図↓の赤で囲んだ部分が一例です。
01_表示される値にズレがある

残高が1000542.78の後、損益が136.33(つまり利益)ですが、
次に表示される残高が1000679.12です。
表示内容で計算したら、残高は
1000542.78 + 136.33 = 1000679.11です。
表示されていない小数第3位以降が影響している?
バックテストの結果として出力される内容だけでは
対処できないので、計算結果がズレてもしかたないと
考えてます。

【メモ】(その2)
各種ドローダウンは、FX会社さまからダウンロードした
1分足データの終値を使って計算しています。
MT4がどうやって計算しているのかナゾですが、
おそらく終値ではなく、高値や安値も加味しているのでしょう。
うちで計算した結果は、MT4の計算結果とすこしずれます。
いまのところ、各種ドローダウンが数10%もずれたことは無いので、
そぉっとしてます。


割り切るところは割り切るとして、うちで、どんな合体を
しているかというと、
取引結果を自作のExcelシートに張り付けて、計算してます。
図を使って説明すると、、、
①3つに分けたテスト結果をブラウザで表示して、
 取引結果部分をマウスで選択して、
11_①取引結果部分をマウスで選択

②自作Excelファイルにコピー
12_②取引結果をExcelシートに貼り付け

③あとはExcelマクロでドローダウンとかを計算
13_③バックテスト結果を集計する

 ↑左側の表がうちで計算した結果で、右はMT4の出力結果です。

手作業なので時間はかかりますが、慣れれば、数分で終わります。
プロフィットファクターはきちんと計算できますし、
ドローダウンもとんでもなく違うこともないので、
うちでは、これで満足してます。

以上で、バックテストの時短は完了です。
これまでのお話をまとめると・・・
1) テストするEAと設定ファイル(setファイル)を用意
2) MT4をいくつか用意
  うちの、パソコンの能力を考えて、3つで説明しました。
3) テストを一度に動かすためのファイルを用意
  3回目で説明したバッチファイル(連続実行用バッチ.bat)のこと。
  内容は↓こんな感じ↓
echo MT4コマンド実行
start "" "C:\Program Files (x86)\FXTF MT4_1\terminal.exe" f:\batch_strategic_tester\config\PuellaEI_1.txt
start "" "C:\Program Files (x86)\FXTF MT4_2\terminal.exe" f:\batch_strategic_tester\config\PuellaEI_2.txt
start "" "C:\Program Files (x86)\FXTF MT4_3\terminal.exe" f:\batch_strategic_tester\config\PuellaEI_3.txt


4) テストの条件を書いたファイルを用意
  4回目で説明した; start strategy testerで
  始まるファイル(PuellaST_1.txt)のこと。
  内容は↓こんな感じ↓
; start strategy tester
TestExpert=PuellaTigrisEI_005
TestExpertParameters=.\batch_setting\PuellaEI005_1.set
TestSymbol=EURUSD
TestPeriod=M5
TestSpread=2
TestModel=0
TestOptimization=false
TestDateEnable=true
TestFromDate=2005.01.01
TestToDate=2021.10.31
TestReport=.\tester\result\EI005_01.html
TestReplaceReport=true
TestShutdownTerminal=true

  テスト開始日と終了日、出力ファイル名を修正します。
  この中に書くフォルダは、MT4のフォルダ限定にします。
5) テスト実行
6) テスト結果ファイルを合体

【さいごに】
MT4で超長期のバックテストをする時にかかる時間を短縮する
方法を書いてきました。
いくつか、事前準備と結果の合体作業が必要なので、
バックテストが合計で数時間かかる時に向いています。
そんな長時間のテストが必要ない方でも、バックテストの
自動実行の方法は、意外と役に立つと思います。
うちでは、自作EAのプログラム修正をした後は、
期間(数か月間、1年間、数年間など)や
タイムフレーム(15分足、60分足など)、
最近はスプレッドを変えてテストをして、
極端に悪い結果にならないかを確認しています。
お館さまが・・・(;^ω^)
すると、1つ当たりのテストは短時間でも、合計すると
意外と時間がかかるのですが、寝る前にテストを
始めておけば朝には終わります。
わたしのようなIT弱者でもクリック一つで済むので、
やり直しも簡単です。
MT4が、最適化結果をファイルに出力してくれると
完璧なのですが、ひと工夫必要です。

詳しい専門知識はともかく(?)、
慣れれば意外といろいろとできるようになりますので、
パソコンが苦手でも興味のある方は、
まずはデモ口座で、試してみてはいかがでしょうか?

ふぅっ( ´Д`)=3 、やっと終わった。。。

にほんブログ村 為替ブログへ
にほんブログ村

トレード日記ランキング
さっき、ZOZOの創業者・前澤さんが、宇宙に出発するために
基地に移動するというニュースをやっていました。
この方は、いろいろ話題となるのですが、さすがに宇宙はムリと
思ってました。
でも、本当に行くんですよねぇ。。。
日本時間8日午後4半ごろ、ロシアのソユーズで出発して、
20日まで宇宙ステーションにいるとか。
お金持ちとはいえ、日本人の民間人でこんなすごいことって、
あるんですね。

【はじめに】
気が向くままにMT4(Metatrader4)や
EA(Expert Advisors)のことを書いてます。
残念ながらMT5(Metatrader5)は未確認です。
ほかの話題も同じですが、MT4やEA関連の話題は、
わたしとうちのお館さまの独断と偏見で書いています。
「うちでは、こうやってます!」というだけです。
なので、うちのパソコンでは問題がないことを確認済みの
話題ばかりですが、試す時は自己責任でお願いします。

【おさらい】
話がかなり長くなったのでおさらいです。
MT4を使ったバックテスト(BT)をする時間や手間を省くのに、
①テストの期間を分割して一度に動かした方が早く終わりそう。
01_テスト時間は短くなるはず
②毎回、MT4を動かして、EAを選択して、BTの条件入力、、、
  というのはめんどくさいので重要なので
  漏れなく簡単に済ませられた方が良さそう。
と考えてます。
今回は②をする時に用意するファイルの説明です。
【本文】
今回は、↓こちら↓の4)と5)のあたりです。
1) テストするEAと設定ファイル(setファイル)を用意
  事前にEAと設定が決まっていて、必要なファイルが
  MT4のフォルダに入っているとします。
2) MT4をいくつか用意
  うちの、パソコンの能力を考えて、3つで説明します。
3) テストを一度に動かすためのファイルを用意
4) テストの条件を書いたファイルを用意
5) テスト実行

6) テスト結果ファイルを合体

前回紹介したBT実行用ファイルは↓こんな感じ↓です。
echo MT4コマンド実行
start "" "C:\Program Files (x86)\FXTF MT4_1\terminal.exe" f:\batch_strategic_tester\config\PuellaEI_1.txt
start "" "C:\Program Files (x86)\FXTF MT4_2\terminal.exe" f:\batch_strategic_tester\config\PuellaEI_2.txt
start "" "C:\Program Files (x86)\FXTF MT4_3\terminal.exe" f:\batch_strategic_tester\config\PuellaEI_3.txt

うちでは、ファイル名を連続実行用バッチ.batとしています。
このファイルのアイコンをダブルクリックすると、Windows10が
"C:\Program Files (x86)\FXTF MT4_1\terminal.exe"
を動かす時PuellaEI_1.txt、PuellaEI_2.txt、PuellaEI_3.txtの中の
↓こちら↓の設定を使います。
; start strategy tester
TestExpert=PuellaTigrisEI_005
TestExpertParameters=.\batch_setting\PuellaEI005_1.set
TestSymbol=EURUSD
TestPeriod=M5
TestSpread=2
TestModel=0
TestOptimization=false
TestDateEnable=true
TestFromDate=2005.01.01
TestToDate=2021.10.31
TestReport=.\tester\result\EI005_01.html
TestReplaceReport=true
TestShutdownTerminal=true
すると、MT4が自分で動き始めて、バックテストをしてくれて、
終わったら自分で消えてくれます。
一行ずつの内容は↓こんな感じ↓です。
ちっちゃいですが、ストラテジーテスターの画面も貼っておきます。
01_MT4画面
1. ; start strategy tester
  おまじないです。

2. TestExpert=PuellaTigrisEI_005
  テストするEAの名前で、MT4の画面の②です。
  PuellaTigrisEI_005というのはうちの自作EAの名前です。
  適宜、変更してください。

3. TestExpertParameters=.\batch_setting\PuellaTigrisEI005_1.set
  テストするEAの各種パラメータが入ったファイルです。
  エキスパート設定→パラメータの入力で読み込むファイルのこと。
  MT4の画面の③です。
  置き場所は、MT4の意味の分からない名前のフォルダの
  C:\Users\tora\AppData\Roaming\MetaQuotes
    \Terminal\0AXXXXXX
  中にあるtesterというフォルダが出発点です。
  うちでは、わかりやすくするためtesterの下にbatch_setting
  (本当はbatch_settings?)というサブフォルダを事前に
  追加してます。
  結果、↓こんな感じ↓です。
  C:\Users\tora\AppData\Roaming\MetaQuotes
    \Terminal\0AXXXXXX\tester\batch_setting
  赤文字が、追加したサブフォルダです。

4. TestSymbol=EURUSD
  対象通貨ペアで、MT4の画面の④です。

5. TestPeriod=M5
  期間(時間間隔)で、MT4の画面の⑤です。

6. TestSpread=2
  スプレッドで、MT4の画面の⑥です。

7. TestModel=0
  モデルで、MT4の画面の⑦です。
  テスト結果の信頼性を考えると0(全ティック)が良いです。
  スピード重視なら2(始値のみ)もありますが、EAの戦略に
  よっては結果の精度が大きく下がります。

8. TestOptimization=false
  最適化をするかどうかの選択で、MT4の画面の⑧です。
  TestOptimization=true
  としたらMT4が最適化もしてくれます。
  でも、最適化結果を保存するにはいろいろと工夫が必要です。

9. TestDateEnable=true
  テスト期間を指定するかどうかの選択で、MT4の画面の⑨です。
  テストの開始と終了日付を指定する時は、trueにします。

10. TestFromDate=2011.01.01
  テストの開始日で、MT4の画面の⑩です。

11. TestToDate=2009.12.31
  テストの終了日で、MT4の画面の⑪です。

12. TestReport=.\tester\result\EI005_01.html
  BTの結果を保存するファイル名です。
  MT4のテスト結果が表示されるレポート画面を右クリックして
  「レポートの保存」をするときのファイル名です。
  MT4が、HTML形式でテスト結果を保存してくれます。
  保存場所は、MT4の意味の分からない名前のフォルダの
  C:\Users\tora\AppData\Roaming\MetaQuotes
    \Terminal\0AXXXXXX
  中にあるtesterというフォルダが出発点です。
  うちでは、わかりやすくするためtesterの下にresult
  (本当はresults?)というサブフォルダを事前に追加してます。
  結果、↓こんな感じ↓です。
  C:\Users\tora\AppData\Roaming\MetaQuotes
    \Terminal\0AXXXXXX\tester\result
  赤文字が、追加したサブフォルダです。

13. TestReplaceReport=true
  BTの結果レポートを上書きする時はtrueです。

14. TestShutdownTerminal=true
  テストが終わった後、MT4を終了する場合はtrueです。
  テストが終わるとすぐにMT4が、画面から消えてしまいます。
  BTが終わった時のMT4画面を見たいときは、falseにします。


長々と書きましたが、わたしがちょこちょこ直すとしたら、
最適化をした後に3)のsetファイル名を変えるくらいです。
あとは、10)11)のBT期間(特に終了日)も直すかも?
【メモ】(その1)
  3)と12)は、
  C:\Users\tora\AppData\Roaming\MetaQuotes
    \Terminal\0AXXXXXX\tester
  の中のフォルダやファイルしか設定できません。
  専門用語でいうと、
  “testerフォルダ配下に限定した相対パス指定”です。
  testerフォルダの下以外を設定しても、うまく動いてくれません。
  MT4のアクセス制限が原因です。
  例えば、BT結果をわかりやすいところに保存しようとして、
    C:\Users\tora\MT4_テスト結果
  とか、
    f:\backtest\result
  としてもダメです。

【メモ】(その2)
  すぐ上のメモで、
  testerフォルダの下以外を設定しても、うまく動いてくれません。
  MT4のアクセス制限が原因です。

  と書いていますが、抜け道があって、MT4とは全然関係のない
  別の場所を使うことができます。
  原稿が間に合わなかったので、また今度書きます(@^^)/~~~


以上が、アイコンをダブルクリックしてMT4にBTをしてもらうときに
使う設定の説明でした。
もちろん、わたしは、上に書いた内容の全部が理解できている
わけではありません
今回の記事を書く準備をしているついでに初めて知ったことも
多いです(`・ω・´)キリ(ぇっ?)
でも、メモ帳でテスト開始・終了日付とかテストするEAの名前を
書き直すくらいはできていたので、それくらいの知識があれば、
この仕組みを十分に使えてきました。

残りは、テスト結果の合体ですが、かなり自己満足な精度で
しかないので、次回、さらっと書いて終わりにします。
また次回(@^^)/~~~

次回も似たタイトルにするので、「関係ないや!」って方は、
読み飛ばしてください。

にほんブログ村 為替ブログへ
にほんブログ村

トレード日記ランキング
外は大雨・・・
お館さまは、システムトラブルで早朝(というか、深夜?)に
タクシーで出かけていて、さっきのメールでは
いつ帰れるか微妙らしい・・・
きょうは、家事はゴメンして、このあと寝ますzzz( ˘ω˘ )

MT4ネタに関するメッセージをいくつかいただいてます。
届いたメッセージをすぐに全部修正していくのは大変なので、
もう少しまとめてから書き直そうと思ってます。
でも気になったのが、前回までに説明している、
MT4を3つ同時に動かすとか、1つずつ動かすとかの
動きのイメージとメリット・デメリットが伝わって
いなかったっぽいことです。
へたっぴですが、図を使ってもう一回説明します。
まず、MT4を3つ同時に動かすというのは、
↓こんなイメージ↓です。
20211201_3つ同時に実行

MT4がバックテストをしている最中に、
別のMT4を動かしてバックテストをするのと同じです。
メリットは、3つのバックテストを一気に終わらせることができます。
デメリットは、かしこいパソコンでなければ、3つのMT4で
テストを動かしただけでパソコンの動きが遅くなり、
他のことができなくなります。
最悪、早く終わらせるために一度に3つ動かしたのに、
いつまでたってもバックテストが終わらないこともありえます。
ということで、決まった短時間で、かしこいパソコンで一気に
たくさんのバックテスト(や最適化)をする時に向いています。

次にMT4を1つずつ動かすというのは、
↓こんなイメージ↓です。
20211201_3つ順番に実行

MT4がバックテストを終えるのを待ってから、次のMT4を動かす
のと同じです。
メリットは、MT4が1つしか動かないので、ふつうにMT4を
使っているパソコンなら、他のことをしても問題ありません。
デメリットは、バックテストの数だけ作業時間がかかります。
かしこいパソコンでなくても、時間をかけてでも良いので
バックテスト(や最適化)をする時に向いています。
応用技で、終わったテスト結果を使って、次のテストをする
こともできます。
たとえば、超長期でバックテストをした結果が良ければ、
短期間のバックテストもして見るとか、別の通貨ペアでも
テストしてみるとか。
作るのにちょっとハードルが高いらしいですけど(;'∀')

こんな感じで、MT4を3つ同時に動かすのも、
1つずつ動かすのも一長一短あります。
ただ、今回、わたしが書いているのは、MT4を3つ同時に
動かす場合です。
うちでは、こっちをいつも使っているので。

うまく説明を補えているといいのですが・・・

にほんブログ村 為替ブログへ
にほんブログ村

トレード日記ランキング

 Copyright ©トラの親 うちのトラの子の年収は? All rights reserved. 

 / Template by 無料ブログ テンプレート カスタマイズ