取引履歴をすべてCSVファイルに出力するスクリプト|MT4

CSV出力スクリプト
  • URLをコピーしました!

MT4の取引履歴をCSVファイルに出力して集計したいのですが。
良い方法はありますか?

ホシノ

FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。

BBF_MQL5-20240501
リアルトレード公開|EA BBF

このページでわかること・できること

〇取引履歴からCSVファイルを出力するスクリプトについて

〇スクリプトのダウンロード

〇スクリプトのインストールと使い方

目次

取引履歴をCSVファイルに出力するスクリプト|ExportCSV

ExportCSVを実行するとパラメーター画面が開き、入力した期間の口座履歴をCSVファイルとして出力できる。
出力したファイルはデータフォルダのFilesに「AccountHistory」というファイル名で保存される。
CSVファイルに書き込まれる内容は以下。

  • A列:注文番号
  • B列:日時
  • C列:通貨ペア
  • D列:注文の種類※別表参照
  • E列:ロット数

※注文の種類

  • 0:買い
  • 1:売り
  • 2:買いリミット
  • 3:売りリミット
  • 4:買いストップ
  • 5:売りストップ

CSVファイルに出力される内容は上記の通りとなる。
D列、注文の種類は整数で出力されるため、表と照らし合わせる必要がある。

スクリプト・ExportCSVのダウンロードはこちら

スクリプトのインストール

ダウンロードしたスクリプトはMT4の「scripts」フォルダへ移動し、再起動でインストールが完了する。

ファイル>データフォルダを開く>MQL4>Scripts

MT4から上記の順番でフォルダを開き、スクリプトを移動する。
スクリプトのインストール詳細は以下を参照

スクリプトExportCSVの使い方

インストールされたスクリプトはMT4のナビゲーター>スクリプトから呼び出しが可能となる。
ExportCSVをダブルクリック、またはチャートへドロップでスクリプトを実行できる。

スクリプトを実行するとパラメーター画面が開くので、出力したい期間を入力して指定する。

ExportCSVパラメーター画面
パラメーター画面でCSVファイルに出力するデータの期間を指定できる

パラメーターを設定し「OK」をクリックすると確認画面が表示される。

エクスポートCSVの確認ダイアログ画面
スクリプト実行前に確認できる

出力されたCSVファイルはMT4のデータフォルダに「AccountHistory」という名前のファイルで保存されている。

CSVファイルの保存先ディレクトリ
ファイル>データフォルダを開く>MQL4>Files

取引履歴のCSVファイルの有効な活用 3選

1. トレードパフォーマンスの分析

CSVファイルに保存された取引履歴をExcelやGoogleスプレッドシートなどの表計算ソフトにインポートし、詳細なトレードパフォーマンスの分析をする。

  • 勝率と損益率の計算: 取引の勝ち負けを集計し、勝率(勝ち取引数/全取引数)や平均利益と平均損失を計算することで、全体的なパフォーマンスを評価でる。
  • リスクとリターンの評価: 各取引のリスクとリターンを比較し、リスク管理の適切さやリターンの最大化を目指すための改善点を見つけることがでる。
  • パフォーマンスの可視化: グラフやチャートを使って、時間経過に伴う利益の推移や取引回数、平均損益などを視覚的に分析できる。

2. ストラテジーバックテストと最適化

CSVファイルを使用して取引戦略のバックテストを行い、その戦略の有効性を確認できる。

  • 戦略の検証: 過去の取引データを使って、特定のトレード戦略が過去にどれだけ成功したかを検証する。これにより、将来のパフォーマンスを予測しやすくなる。
  • 最適化: 異なるパラメータを試し、戦略を最適化する。例えば、異なるストップロスやテイクプロフィットのレベルを設定し、その効果を比較できる。
  • シミュレーション: 市場の異なるシナリオをシミュレートし、戦略が様々な市場環境でどのように機能するかをテストする。

3. 税務申告と会計管理

取引履歴のデータは、税務申告や会計管理のためにも非常に有用となる。

  • 収支計算: 取引ごとの利益と損失を集計して、年間の総収支を計算する。これは、税務申告時に必要な情報を提供する。
  • 経費管理: トレード関連の経費を把握し、正確な経費計上を行う。
  • 監査準備: 取引履歴を整理しておくことで、将来的に税務監査が発生した場合、迅速に対応できる。
    取引データの整合性を確認し、必要に応じて補足資料を作成する。

スクリプトのプログラム

//+------------------------------------------------------------------+
//|                                                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);
}

プログラムコードの解説

全体の流れ

  1. スクリプトが実行されるとパラメーター画面を開き期間の指定、ユーザーにCSV出力の確認ダイアログを表示。
  2. ユーザーが「はい」を選択すると、指定された期間の口座履歴がExportAccountHistory関数を通じてCSVファイルに出力される。
  3. 出力されたファイルは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スクリプト集

  • URLをコピーしました!
  • URLをコピーしました!

このEAを使って、将来の見通しが立ちました

収入を増やしたい、将来のための資産が欲しい、支払いに縛られない自由な生活がしたい

このEAを使うと将来が見通せます。

22年以上で無敗の安定取引。リスク0%運用も可能なロジック。年利100%越えの上級者向け取引も可能。

マネーマシンとして育て上げることで大きな不労所得を得られます。

BBF-Girl
ドリームEA_BBF 無料ダウンロード
BBF_MQL5-20240501
リアルトレード公開|EA BBF

ポジション監視の時間

集中力は続いてますか?


オートクローズツールを使ってポジション管理を自動化


自動ポジション管理だから万が一でも大丈夫

あなたは空いた時間を自由に、効率的に使えます

自動決済ルールは独自にカスタム可能

ストップ、リミット変更にも対応。

エントリー後のポジション管理をすべて自動化できるトレーディングサポートツール。

トレード中のちょっとした離席など、念のためセットといった使い方も可能。

MT4用自動決済ツール【AutoCloseTool】は無料で入手できます。

オートクローズツール

取引ごとにキャッシュバックが発生します

もらわないだけ損している
取引ごとに毎回発生する現金のキャッシュバック
海外FXのキャッシュバックはメリットしかないサービスです

取引ごとにキャッシュバック
目次