取引履歴をすべてCSVファイルに出力するスクリプト|MT4
MT4の取引履歴をCSVファイルに出力して集計したいのですが。
良い方法はありますか?
FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。
この無料EAで不労所得が稼げます
累計テスト120年以上・リアル取引公開2020年~
このページでわかること・できること
〇取引履歴からCSVファイルを出力するスクリプトについて
〇スクリプトのダウンロード
〇スクリプトのインストールと使い方
取引履歴をCSVファイルに出力するスクリプト|ExportCSV
ExportCSVを実行するとパラメーター画面が開き、入力した期間の口座履歴をCSVファイルとして出力できる。
出力したファイルはデータフォルダのFilesに「AccountHistory」というファイル名で保存される。
CSVファイルに書き込まれる内容は以下。
- A列:注文番号
- B列:日時
- C列:通貨ペア
- D列:注文の種類
- 0:買い
- 1:売り
- 2:買いリミット
- 3:売りリミット
- 4:買いストップ
- 5:売りストップ
- E列:ロット数
CSVファイルに出力される内容は上記の通りとなる。
D列、注文の種類は0~5の整数で出力される。
スクリプト・ExportCSVのダウンロード
ダウンロードするファイルは.ex4のため、MT4のスクリプトフォルダ(scripts)へ移動すれば使用が可能だ。
スクリプトのインストール
ダウンロードしたスクリプトはMT4の「Scripts」フォルダへ移動し、再起動でインストールが完了する。
MT4から上記の順番でフォルダを開き、スクリプトを移動する。
スクリプトのインストール詳細は以下を参照
スクリプトExportCSVの使い方
インストールされたスクリプトはMT4のナビゲーター>スクリプトから呼び出しが可能となる。
ExportCSVをダブルクリック、またはチャートへドロップでスクリプトを実行できる。
スクリプトを実行するとパラメーター画面が開くので、出力したい期間を入力して指定する。
パラメーターを設定し「OK」をクリックすると確認画面が表示される。
出力されたCSVファイルはMT4のデータフォルダに「AccountHistory」という名前のファイルで保存されている。
取引履歴のCSVファイルの有効な活用法
1. トレードパフォーマンスの分析
CSVファイルに保存された取引履歴をExcelやGoogleスプレッドシートなどの表計算ソフトにインポートし、詳細なトレードパフォーマンスの分析をする。
- 勝率と損益率の計算: 取引の勝ち負けを集計し、勝率(勝ち取引数/全取引数)や平均利益と平均損失を計算することで、全体的なパフォーマンスを評価でる。
- リスクとリターンの評価: 各取引のリスクとリターンを比較し、リスク管理の適切さやリターンの最大化を目指すための改善点を見つけることがでる。
- パフォーマンスの可視化: グラフやチャートを使って、時間経過に伴う利益の推移や取引回数、平均損益などを視覚的に分析できる。
2. ストラテジーバックテストと最適化
CSVファイルを使用して取引戦略のバックテストを行い、その戦略の有効性を確認できる。
- 戦略の検証: 過去の取引データを使って、特定のトレード戦略が過去にどれだけ成功したかを検証する。これにより、将来のパフォーマンスを予測しやすくなる。
- 最適化: 異なるパラメータを試し、戦略を最適化する。例えば、異なるストップロスやテイクプロフィットのレベルを設定し、その効果を比較できる。
- シミュレーション: 市場の異なるシナリオをシミュレートし、戦略が様々な市場環境でどのように機能するかをテストする。
3. 税務申告と会計管理
取引履歴のデータは、税務申告や会計管理のためにも非常に有用となる。
- 収支計算: 取引ごとの利益と損失を集計して、年間の総収支を計算する。これは、税務申告時に必要な情報を提供する。
- 経費管理: トレード関連の経費を把握し、正確な経費計上を行う。
- 監査準備: 取引履歴を整理しておくことで、将来的に税務監査が発生した場合、迅速に対応できる。
取引データの整合性を確認し、必要に応じて補足資料を作成する。
ExportCSVのソースコード
//+------------------------------------------------------------------+
//| ExportCSVFile.mq4 |
//| Copyright 2024, FX-Bonus.net |
//| https://fx-bonus.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, FX-Bonus.net"
#property link "https://fx-bonus.net/"
#property version "1.00"
#property strict
#property show_inputs
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
// パラメーター宣言
input datetime fromDate = D'2024.01.01 00:00'; // 開始日
input datetime toDate = D'2024.01.07 23:59'; // 終了日
// 関数宣言
void ExportAccountHistory(string fileName, datetime fromTime, datetime toTime);
// スクリプト開始
void OnStart()
{
// 確認ダイアログを表示し、はい/いいえを選択させる
int answer = MessageBox("指定期間の口座履歴をCSVファイルに出力しますか?", "確認", MB_YESNO | MB_ICONQUESTION);
// 「はい」が選択された場合
if(answer == IDYES)
{
// CSVファイルに出力する関数を呼び出し
ExportAccountHistory("AccountHistory.csv", fromDate, toDate);
}
else
{
Print("CSVファイルの出力をキャンセルしました。");
}
}
// 指定期間の口座履歴をCSVファイルに出力する関数
void ExportAccountHistory(string fileName, datetime fromTime, datetime toTime)
{
// CSVファイルを開く
int fileHandle = FileOpen(fileName, FILE_WRITE|FILE_CSV);
if(fileHandle == INVALID_HANDLE)
{
Print("ファイルを開けませんでした: ", GetLastError());
return;
}
// 指定期間の口座履歴を取得してCSVファイルに書き込む
for(int i = 0; i < OrdersHistoryTotal(); i++)
{
// 注文の履歴を取得
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
datetime orderTime = OrderOpenTime();
if(orderTime >= fromTime && orderTime <= toTime)
{
// 指定期間内の注文履歴をCSVファイルに書き込む
string csvLine = StringFormat("%d,%s,%s,%d,%.5f", OrderTicket(), TimeToString(orderTime), OrderSymbol(), OrderType(), OrderLots());
FileWrite(fileHandle, csvLine);
}
}
}
// CSVファイルを閉じる
FileClose(fileHandle);
}
ソースコードの解説
全体の流れ
- スクリプトが実行されるとパラメーター画面を開き期間の指定、ユーザーにCSV出力の確認ダイアログを表示。
- ユーザーが「はい」を選択すると、指定された期間の口座履歴が
ExportAccountHistory
関数を通じてCSVファイルに出力される。 - 出力されたファイルは
AccountHistory.csv
として保存さ。ファイルの保存場所はMT4のデータフォルダ内のMQL4/Files/
ディレクトリとなる。
パラメーター宣言
input datetime fromDate = D'2024.01.01 00:00'; // 開始日 input datetime toDate = D'2024.01.07 23:59'; // 終了日
input datetime fromDate
: スクリプト実行時にユーザーが設定できる開始日時。デフォルトは2024年1月1日 00:00。input datetime toDate
: スクリプト実行時にユーザーが設定できる終了日時。デフォルトは2024年1月7日 23:59。
関数宣言
void ExportAccountHistory(string fileName, datetime fromTime, datetime toTime);
ExportAccountHistory
: 指定期間の口座履歴をCSVファイルに出力するための関数。
スクリプト開始
void OnStart() { // 確認ダイアログを表示し、はい/いいえを選択させる int answer = MessageBox("指定期間の口座履歴をCSVファイルに出力しますか?", "確認", MB_YESNO | MB_ICONQUESTION); // 「はい」が選択された場合 if(answer == IDYES) { // CSVファイルに出力する関数を呼び出し ExportAccountHistory("AccountHistory.csv", fromDate, toDate); } else { Print("CSVファイルの出力をキャンセルしました。"); } }
OnStart
: スクリプトのメイン関数で、実行されると以下の処理を行う。MessageBox
で確認ダイアログを表示し、ユーザーに「はい」または「いいえ」の選択肢。- 「はい」を選択した場合、
ExportAccountHistory
関数を呼び出してCSVファイルに口座履歴を出力する。 - 「いいえ」を選択した場合、
Print
関数でキャンセルメッセージを出力する。
指定期間の口座履歴をCSVファイルに出力する関数
void ExportAccountHistory(string fileName, datetime fromTime, datetime toTime) { // CSVファイルを開く int fileHandle = FileOpen(fileName, FILE_WRITE|FILE_CSV); if(fileHandle == INVALID_HANDLE) { Print("ファイルを開けませんでした: ", GetLastError()); return; } // 指定期間の口座履歴を取得してCSVファイルに書き込む for(int i = 0; i < OrdersHistoryTotal(); i++) { // 注文の履歴を取得 if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { datetime orderTime = OrderOpenTime(); if(orderTime >= fromTime && orderTime <= toTime) { // 指定期間内の注文履歴をCSVファイルに書き込む string csvLine = StringFormat("%d,%s,%s,%d,%.5f", OrderTicket(), TimeToString(orderTime), OrderSymbol(), OrderType(), OrderLots()); FileWrite(fileHandle, csvLine); } } } // CSVファイルを閉じる FileClose(fileHandle); }
ExportAccountHistory
: 実際に口座履歴をCSVファイルに出力する関数。FileOpen
: 指定されたファイル名でCSVファイルを開く。開けなかった場合はエラーメッセージを出力し、関数を終了する。OrdersHistoryTotal
: 口座の過去の注文の総数を取得する。- ループ内で
OrderSelect
を使って過去の注文を一つずつ選択し、注文の日時が指定された期間内であればその注文の詳細をCSV形式でFileWrite
を使って書き込む。 FileClose
: ファイルの書き込みが完了したら、ファイルを閉じる。
便利なMT4スクリプト集
-
海外FXのEA_MT4
ラウンドナンバーに自動で水平ラインを引く|MT4スクリプト
-
海外FXのEA_MT4
市場ごとに高値と安値を色分けするMT4ツール|時間帯ブレイクアウト
-
海外FXのEA_MT4
取引履歴をすべてCSVファイルに出力するスクリプト|MT4
-
海外FXのEA_MT4
リスクゼロの損益分岐点でストップ注文するスクリプト|ブレイクイーブン
-
海外FXのEA_MT4
MT4を便利にするスクリプトまとめ
-
海外FXのEA_MT4
すべてのチャートを一括で閉じる方法|通貨ペア選択も可|MT4スクリプト
-
海外FXのEA_MT4
MT4でSL・TP注文を一括でキャンセルする方法
-
海外FXのEA_MT4
ストップロス(損切り)とテイクプロフィット(利食い)を一括で注文する方法
-
海外FXのEA_MT4
MT4一括決済スクリプト|全決済と売り買い決済の選択もできる
-
海外FXのEA_MT4
すべてのチャートを一括で開くMT4スクリプト
-
海外FXのEA_MT4
チャートのトレンドラインやオブジェクトを一括で削除する方法
-
海外FXのEA_MT4
MT4チャートの時間足を一括で切替えるツール
まとめ
MT4の取引履歴をCSVファイルに出力できるスクリプト「ExportCSV」は、トレーダーにとって非常に便利なツールである。このスクリプトを利用することで、取引履歴を簡単にCSV形式で保存でき、さまざまな目的で活用することが可能だ。
まず、保存した取引履歴はトレードパフォーマンスの分析に役立つ。ExcelやGoogleスプレッドシートにインポートして、勝率や損益率、リスクとリターンの評価を行うことで、トレードの改善点を見つけることができる。また、ストラテジーのバックテストにも活用でき、過去のデータを使用して戦略の有効性を検証したり、最適化することも可能だ。さらに、税務申告や会計管理の際には、取引履歴を集計することで正確な収支報告が行える。
このように、ExportCSVを導入することでトレードの効率化とデータ管理が向上するため、ぜひ活用してほしい。