MT4テスト結果CSVファイル変換ツール「MT4PLCSV」


MT4PLCSVは、ストラテジーテスターの結果タブに表示されている損益等を抽出し、インジケーター「320_PLCSV2Graph.mq4」や「320_Csv2Graph.mq4」で使用するCSVファイルを作成するツールです。

「320_Csv2Graph.mq4」については前バージョン(Ver 1.X.0.0)と「320_Csv2Graph.mq4」についてを参照してください。

「320_PLCSV2Graph.mq4」は、MT4PLCSVのバージョン2.0.0.0以降と連携することを前提としたインジケーターです。
このインジケーターは有効証拠金の動きをチャートのサブウィンドウにグラフを表示します。
ストラテジーテスターに表示されているグラフよりも有効証拠金の動きが細かく表示されます。
そのため、例えば、含み損を前提としたリピート系EAの場合、売買が無い期間の有効証拠金の動きが見えるようになります。

以下の画面イメージを例に説明します。
ストラテジーテスターのグラフは売買の結果を元に表示します。赤色枠の部分です。
そのため売買が発生していない青色枠の期間はなんの表示もありません。

今回の説明用に使用したリピート系EAのバックテストでは、パラメーター設定で最大ポジション数を10にしているので、青色枠の期間は売買が発生していません。しかし、ポジションを保有した状態でレートが下がっているので有効証拠金が減っていきます。

その後、レートは上がり、利確しています。
ストラテジーテスターのグラフだけを見ると、特に問題なく順調に利益を出しているように見えますが、実際は途中で有効証拠金が半分近くまで減っていたことがわかります。

このようにストラテジーテスターのグラフではわからないことが「320_PLCSV2Graph.mq4」を使用したらわかるようになります。
自作EAやネットから入手したEAがどのようになるか気になる方は試してみてはいかがでしょうか。

ファイルはMT4用のトップページからダウンロードできます。

画面イメージ
注文番号「70」は6月に買い、11月に売っていますが、その間の有効証拠金の動きがストラテジーテスターのグラフ上に現れないため、たまたまロスカットされなかった危なっかしいEA(またはパラメーター設定)ということに気づかない。
MT4PLCSVと320_PLCSV2Graphの説明用画面イメージ


前バージョン(Ver 1.X.0.0)と「320_Csv2Graph.mq4」について

バージョン2.0.0.0以降は「320_PLCSV2Graph.mq4」の使用を前提とした説明なっています。
「320_Csv2Graph.mq4」を前提としていた前バージョンの説明はすると表示されます。

「320_Csv2Graph.mq4」はチャートのサブウィンドウに折れ線グラフを表示するので、ストラテジーテスターに表示されている折れ線グラフとは異なる視点で分析ができます。

例えば、下の画面イメージの水色矢印は9日に(注文番号29から30の間に)決済取引がなかったため水平線になっているのですが、ストラテジーテスターのグラフからはそのことを読み取れません。(赤色矢印が指している箇所を見てもわからない)
上記インジケーターを使用したら「このEAはチャート(相場)が○○の場合は反応(売買)しない」といったような分析もできます。
トレンドが得意なEAはレンジの場合に、レンジが得意なEAの場合はトレンドの場合に、不要な売買は避けたほうが良い場合があります。EA開発時に不得意な相場ではきちんと売買が停止されていることを確認する時に役立つと思います。

また、損益が連続して上昇または下降している場合や乱高下を繰り返すとき、どのような相場(トレンド、レンジ、急騰急落など)の時にそのような結果になるのかが見えやすくなると思います。
利益は出てるが「チャートとの関連性が見えない」、「相場の影響を受けてないように見える」といったEAは物凄いEAか、いい加減なEAのいずれかかもしれません。

「320_Csv2Graph.mq4」と連携したときの画面イメージ
※赤色枠など、説明用に追加した図形は実際には表示されません。
 また、見やすくするため日時や価格を切りがいい値で表示するインジケーター「320_KiriGaII」を使用しています。
320_Csv2Graphと連携時の画面イメージ

上記グラフの元になった結果データの一部
結果データの画面


導入方法(インストール)

ダウンロードしたZIPファイルを適当なフォルダに展開(解凍)してください。

注意:「C:\Program Files\」や「C:\Program Files (x86)\」フォルダ配下には展開しないでください。正しく動作しない可能性があります。

インジケーター「320_PLCSV2Graph.mq4」は通常のインジケーターと同様にMT4に導入してください。

  1. MT4のメニュー「ファイル」から「データフォルダを開く」をクリックする。
  2. エクスプローラーが表示されたら「MQL4」フォルダ内にある「Indicators」フォルダに当インジケーター「320_PLCSV2Graph.mq4」をコピーする。
  3. MT4のナビゲーターウィンドウで右クリックして「更新」をクリックする。またはMT4を再起動する。
  4. ナビゲーターウィンドウに当インジケーターが表示されたらチャートに挿入する。
  5. 必要に応じてパラメーターを変更する。

補足:ZIPファイルはMT4用のトップページからダウンロードできます。


削除方法(アンインストール)

MT4PLCSVを終了し、上記インストール時に作成したフォルダごと削除してください。MT4PLCSVはレジストリを使用していません。

インジケーター「320_PLCSV2Graph.mq4」は通常のインジケーターと同様にMT4から削除してください。

  1. チャートから当インジケーターを削除する。
  2. MT4のメニュー「ファイル」から「データフォルダを開く」をクリックする。
  3. エクスプローラーが表示されたら「MQL4」フォルダ→「Indicators」フォルダ内の「320_PLCSV2Graph.ex4」や「320_PLCSV2Graph.mq4」を削除する。
  4. MT4のナビゲーターウィンドウで右クリックして「更新」をクリックする。またはMT4を再起動する。

使い方

  1. MT4を起動してストラテジーテスターでテストを行い、結果タブにテスト結果が表示されていることを確認してください。
  2. MT4PLCSV.exeを起動し、画面に表示されている「使い方」の順番に従って操作してください。
    なお、次回起動時からは「CSVファイル保存先」と「CSVファイル名」は前回の値を引き継ぎますので画面に表示されている「1.」から「3.」の操作は省略できます。

MT4PLCSVの画面イメージ
MT4PLCSVの画面イメージ

補足:ストラテジーテスターでテストして「チャートを開く」で開いたチャートに「320_PLCSV2Graph」を挿入した場合は、「MQL4」ではなく「tester」フォルダ内の「Files」フォルダに保存したCSVファイルを参照する場合があります。どのような条件で「tester」フォルダ配下になるかは不明ですので、ご使用時の状況に応じて適宜保存先を変更してください。


使い方(バージョン2.0.0.0以降に追加された機能について)

利便性向上を目的とした機能追加を行いました。各機能はメニューから選択します。
MT4PLCSVのメニュー

常に前面表示

MT4PLCSVを常に前面に表示されるようにします。

他の画面を操作していても常に前面に表示されるので、MT4PLCSVに「Files」フォルダをドラッグアンドドロップしたり、「クリップボードからコピーして作成」ボタンをクリックする際に画面を切り替える必要がなくなるので便利です。

コンパクト化

画面を以下のように小さく表示します。
MT4PLCSVをコンパクトに表示

「クリップボードからコピーして作成」ボタンは「CSV作成」ボタンに変わります。
使い方を覚え、CSVファイルの保存先や名称を変更する必要がない場合は小さくしたほうが邪魔にならないと思います。

ホットキー有効化

ホットキー「Alt+V」を有効にします。

ホットキーを押すと、MT4PLCSV以外の画面を操作している状態でも「クリップボードからコピーして作成」ボタンをクリックしたときと同じ動きをします。
そのため、MT4の結果タブで「Alt+A」キーを押してクリップボードに結果をコピーした後、続けて「Alt+V」を押すとCSVファイルが作成されます。わざわざMT4PLCSVの画面に切り替える必要はありません。

クリップボード監視

クリップボード書き換えの監視を行います。

クリップボードにストラテジーテスターの結果データがコピーされたと判断した場合、「クリップボードからコピーして作成」ボタンをクリックしたときと同じ動きをします。
そのため、MT4の結果タブで「Alt+A」キーを押してクリップボードに結果をコピーするだけでCSVファイルが作成されます。

マルチモード

ストラテジーテスターの結果データを最大3つまでまとめて処理できます。

ストラテジーテスターでは複数のEAを同時にテストすることができません。
そのため、複数のEA、例えばトレンドでは利益を出すがレンジでは損するEAとレンジでは利益を出すがトレンドでは損するEAを同時に稼働させたときのトータルの資金の動き(合計損益や口座残高、有効証拠金など)を確認することができません。

マルチモードを使用すれば、例えば、上昇トレンドに強いEA、下降トレンドに強いEA、レンジに強いEAの3つのEAを同時に稼働させたときのトータルの資金の動きを確認できます。

使い方
マルチモードの場合、画面に表示されている「使い方」の「4.」と「5.」の代わりに以下の操作を行ってください。
 4-1.ストラテジーテスターで1つ目のEAのテストを実施する。
 4-2.テスト完了後、結果タブに表示されている結果をコピー(Alt+A)して左側の「クリップボードからコピー」をクリックする。
 4-3.2つ目のEAも同様にテストを実施し、結果をコピーして中央の「クリップボードからコピー」をクリックする。
 4-4.3つ目のEAも含めたい場合は、同様にテスト実施から右側の「クリップボードからコピー」クリックまで行う。
 5 .「以下の結果データをマージして作成」ボタンをクリックする。

マルチモード時の画面イメージ
画面が拡張され最大3つの結果データを張り付けられます。
貼り付け後は「以下の結果データをマージして作成」ボタンをクリックしてください。
マルチモード時の画面イメージ

注意:マルチモードは、コンパクト化、ホットキー有効化、クリップボード監視と同時に使用することはできません。
マルチモードを使用する際には先にこれらを無効にしてください。

ショートカット作成

MT4PLCSVを起動するためのショートカットを作成します。

詳細は後述の「ショートカットの作成について」を参照してください。

320_Csv2Graph.mq4用

320_Csv2Graph.mq4用のCSVファイルを出力します。

オフラインヘルプ表示

オフラインヘルプ(このHTML文書)を表示します。


インジケーター「320_PLCSV2Graph」のパラメーターの説明

Custom Indicatorの「パラメーターの入力」の画面イメージ
パラメーターの入力画面

CSVのファイル名

MT4の「Files」フォルダに保存したCSVのファイル名を指定します。

補足:日本語のファイル名の使用したり、「.csv」以外の拡張子にしたり、「Files」フォルダに新しくフォルダを作成してそこにファイルを保存したりしましたが特に問題はないようです。
ただし、厳密なエラー処理を施していないので無難なフォルダ名、ファイル名にしてください。

補足:「Files」フォルダはMT4のメニュー「ファイル」から「データフォルダを開く」をクリックし、表示されたエクスプローラーの「MQL4」フォルダ内にあります。
ただし、ストラテジーテスターでテストして「チャートを開く」で開いたチャートに当インジケーターを挿入した場合は、「MQL4」ではなく「tester」フォルダ内の「Files」フォルダに保存したCSVファイルを参照する場合があります。どのような条件で「tester」フォルダ配下になるかは不明ですので、ご使用時の状況に応じて適宜保存先を変更してください。

再読込ラベルを表示する(=true)

サブウィンドウの左上あたりに「再読込」という文字を表示します。

「再読込」をクリックするとCSVファイルを読み込み直します。
ストラテジーテスターでテスト後、CSVファイルを作成する前にインジケーターを挿入した場合は作成後に「再読込」をクリックするだけで済みます。

結果ラベルを表示する(=true)

口座残高(残)、有効証拠金(証)およびレバレッジ(レ)を表示します。

口座残高は左から、テスト開始時点、テスト終了時点、テスト期間内の最大、テスト期間内の最小の額です。
有効証拠金は左から、テスト開始時点、テスト終了時点、テスト期間内の最大、テスト期間内の最小、最終時点までの最小の額です。
レバレッジは左から、テスト期間内の最大、最終時点までの最大の値です。

最終時点までの最小証拠金や最大レバレッジは、チャートの最後のバーまで証拠金やレバレッジの変動を計算して算出した値です。
CSVファイルはテスト期間分のデータしかありません。チャートのバーがその期間以降にもある場合は最後のバーまで証拠金やレバレッジの変動を計算して証拠金がどこまで減るか、レバレッジがどこまで高くなるかを算出しています。

両建てマックス方式(=true)

レバレッジを両建てマックス方式で計算するか積み上げ方式で計算するかを指定します。
両建てマックス方式の場合は「true」、積み上げ方式の場合は「false」を指定してください。

追加情報表示(=true)

設定を「true」にすると
 口座残高(残)に、口座残高が最小になったときの日時
 有効証拠金(証)に、有効証拠金が最小になったときの日時
 レバレッジ(レ)に、レバレッジが最大になったときの日時
を追加して表示します。

また、保有通貨枚数(保)も追加表示します。
保有通貨枚数は左から
 口座残高が最小になったときの売りポジション通貨枚数
 口座残高が最小になったときの買いポジション通貨枚数
 有効証拠金が最小になったときの売りポジション通貨枚数
 有効証拠金が最小になったときの買いポジション通貨枚数
 レバレッジが最大になったときの売りポジション通貨枚数
 レバレッジが最大になったときの買いポジション通貨枚数
です。(口座残高は「残」、有効証拠金は「証」、レバレッジは「レ」、売りは「S」、買いは「B」と表示されます)

補足:「結果ラベルを表示する」を「true」にした場合に有効な設定です。

CSVファイル出力(=true)

読み込んだCSVファイルにレバレッジを付加して別名(CSVファイル名の後ろに「_Add」を付与)で保存します。
日付はスラッシュ(/)区切りに変換され、ヘッダ行も付与されますので、Excelなど、他のアプリでデータを使用したい場合は「true」にしてください。

各項目の説明
「日時」は新規注文や決済注文が約定したときの日時です。
「口座残高」は約定した時点の口座残高です。
「通貨枚数」は約定した時点で保有している通貨枚数です。
「合計金額」は約定した時点の「新規注文約定時の通貨枚数×レート」の合計金額です。
「レバレッジ」は約定した時点のレバレッジです。

口座残高固定(=true)

レバレッジを計算する際にEAで得た利益を含まずに計算したい場合は「true」を指定します。

利益を含めるとテストの前半と後半では後半の方がレバレッジが低くなります。
特に数年単位のテストで大きな利益が出ていると後半ではリスクが発生していても(ハイレバレッジになっていても)気づきません。

実運用では利益分をFX口座から銀行口座へ移す方もおり、その場合は口座残高は常にほぼ同額と思われます。
そのような運用を想定したい場合は「true」にすることをお勧めします。


ショートカットの作成について

MT4PLCSVは設定内容をINIファイルに保存していますが、そのままだと1つしか保存できません。
1つしかないと、MT4を複数インストールしていたり、CSVファイルの保存先を「MQL4」から「tester」に変える場合はその都度設定の変更が必要になります。

そこで、設定ごとにINIファイルのファイル名を変更して保存し、MT4PLCSVを起動する際にそのINIファイル名を指定することで毎回設定を変更する手間が省けます。


ショートカットは以下の手順で作成します。

まず、MT4PLCSV.exeを起動し、画面に表示されている「使い方」の「1.」から「3.」の操作を行います。

次にメニューの「ショートカット作成」をクリックします。
「名前を付けて保存」が表示されますのでINIファイル名を入力し、「保存」ボタンをクリックして保存します。
OANDAの場合なら「OANDA」や「OANDA-Test」のようにわかりやすいファイル名が良いでしょう。
INIファイルの保存先はどこでも良いですが、MT4PLCSV.exeと同じフォルダにまとめておくと管理しやすいでしょう。

次にショートカットファイル(リンクファイル:*.lnk)の保存先を聞いてきます。
ショートカットファイル名は既定ではINIファイル名と同じです。そのままでも構いませんし変更しても良いです。
保存先はどこでも良いですが、バックテストを行うときによくアクセスするフォルダとかデスクトップに保存すると便利でしょう。

ショートカットの作成はこれで完了です。今後はショートカットから起動することで設定した内容で使用できます。
ショートカットから起動した場合は下の画面のようにタイトルにINIファイル名が表示されますので目印にしてください。
ショートカット起動時の画面


あと、MT4PLCSVは複数起動することもできますが以下の点に注意してください。

ホットキーは1つのMT4PLCSVだけでしか使用できません
Windowsの仕様上、ホットキーはWindows上で起動しているアプリケーションのうち1つのアプリケーションでしか使用できません。
そのため、ホットキーを使用するように設定したMT4PLCSVを複数起動した場合は後から起動した方がエラーになります。
また、他のアプリケーションですでに「Alt+V」をホットキーとして使用している場合も同様にエラーとなります。
エラーになるとホットキーの設定は解除されます。

クリップボード監視は複数のMT4PLCSVで同時に動作します
Windowsの仕様上、クリップボードの監視は複数のアプリケーションで同時に使用可能です。
そのため、OANDA用とFXTF用の2つのMT4PLCSVが起動している状態でOANDAのストラテジーテスターの結果データをクリップボードにコピーしたとき、OANDA側とFXTF側の両方でCSVファイルが作成されます。
エラーは発生しないので気づかないうちにCSVファイルが上書きされていたということになりかねません。
MT4PLCSVを複数起動する場合はクリップボード監視の設定に注意してください。


ソースについて

MT4PLCSV.exeについては最低限必要なソースのみ添付しています。リソースファイル(.res)などは添付していません。


更新履歴

リリース日 バージョン 内容
2017/05/25 1.0.0.0 初リリース
2017/09/03 1.1.0.0 Delphi 10.1でコンパイルしたものは一部のアンチウイルスソフトでアドウェア扱いされるみたいなので、Delphi 7で作り直しました。
Delphi 7(古いコンパイラー)に合わせてソースの一部を変更しています。詳細は添付のソース参照。
2018/04/19 1.1.1.0 Delphi 7で作り直した際に修正漏れがありましたので対応しました。
2018/04/24 1.2.0.0 1.メッセージボックス関連の処理を見直しました。
2.CSVファイル保存先フォルダ「Files」について補足を追記しました。
2018/11/07 2.0.0.0 1.開発環境をDelphi10.2に移行しました。それに伴い、ロケールやPer-Monitor DPI Awareに対応しました。
2.320_PLCSV2Graph用のCSVファイルに対応しました。
3.利便性を高めるための機能(クリップボード監視など)を追加しました。
2018/11/23 2.0.1.0 1.メニューが表示されない不具合を修正しました。
2020/03/10 2.1.0.0 1.マルチモードを追加しました。
2.注文取消(delete)に対応しました。

320_PLCSV2Graph.mq4に以下の修正を行いました。(バージョンは2.00)
1.口座残高や有効証拠金が最小値またはレバレッジが最大値になった時の日付と保有通貨枚数を表示する機能を追加しました。
2.読み込んだCSVファイルにレバレッジと高値安値を付加して別名で保存する機能を追加しました。
3.口座残高を初期金額のままレバレッジを算出する機能を追加しました。