約定履歴CSV分析の手順をトレード歴14年のSTARKが解説。MT4・MT5からのエクスポート方法、Excel・Pythonでのプロフィットファクター・最大DD・勝率の計算、口座別の履歴DL方法まで完全網羅。
- MT4/MT5からCSVをエクスポートし、Excelで基本指標を算出できる
- 見るべき指標:勝率・PF・最大DD・平均RR比・連続損失回数
- Pythonを使えば高度な分析と可視化が自動化できる
- XM・IC Marketsの履歴DL手順も解説
約定履歴CSV分析が必要な理由
「なんとなく勝っている」「なんとなく負けている」という感覚だけでトレードを続けていても、戦略の改善はできません。約定履歴をCSV形式でエクスポートし、データとして分析することで初めて「なぜ勝てているのか」「どこで負けているのか」が明確になります。
私自身、トレード歴の最初の3年は感覚に頼っていましたが、CSV分析を始めてから初めて「GBP/JPYのロングエントリーは勝率42%しかない」「15〜20時台のエントリーはPFが1.1を下回っている」という具体的な課題が見えるようになりました。
| 分析前 | 分析後 |
|---|---|
| 「なんとなく下手くそだ」 | 「GBP/JPYの勝率が42%で引っ張っている」 |
| 「ドローダウンが大きい気がする」 | 「最大連続損失7回。金曜午後に集中している」 |
| 「どこを直せばいいかわからない」 | 「15〜20時のエントリーを除外するとPF1.8→2.1になる」 |
MT4・MT5からCSVをエクスポートする手順
MT4でのエクスポート手順
ターミナルを開く
MT4下部の「ターミナル」タブをクリック(Ctrl+Tでも開く)
「口座履歴」タブを選択
ターミナルウィンドウ内の「口座履歴」タブをクリック
期間を設定
右クリック→「全履歴」または「カスタム期間」で分析したい期間を選択
CSVで保存
右クリック→「レポートとして保存」→「詳細レポート」を選択してCSV形式で保存
MT5でのエクスポート手順
MT5はMT4と手順がほぼ同じですが、エクスポート時に「取引履歴」タブを使います。MT5の場合は「ツール」→「取引履歴」→期間指定→「CSVとして保存」の順で操作します。MT5の履歴CSVはMT4と列構成が若干異なるため、後述のExcel・Python処理で注意が必要です。
XM・IC Marketsの取引履歴ダウンロード方法
MT4/MT5端末から直接エクスポートする以外に、各ブローカーのマイページからダウンロードする方法もあります。
| ブローカー | 履歴取得方法 | 形式 |
|---|---|---|
| XM Trading | マイページ→「取引履歴」→期間指定→ダウンロード | CSV / PDF |
| IC Markets | マイページ→「取引レポート」→MT4/MT5別に選択 | CSV |
| AXIORY | マイエリア→「取引履歴」→期間とアカウント指定 | CSV |
| Exness | パーソナルエリア→「履歴」→エクスポート | CSV / Excel |
マイページからのダウンロードはMT4端末が起動していなくてもアクセスでき、長期間のデータを一括でダウンロードできる利点があります。特にXMとIC Marketsは複数口座を持っている場合でも口座番号別に履歴を取得できます。
IC Marketsはマイページから詳細な取引レポートをCSVで取得可能。複数口座の履歴管理も簡単。IC Markets公式サイトを見る →
ExcelでCSVを分析する — 基本指標の計算
エクスポートしたCSVをExcelで開いてから、以下の基本指標を計算します。MT4のCSVは通常、チケット番号・通貨ペア・売買方向・ロット・エントリー価格・決済価格・損益などの列で構成されています。
勝率の計算
| 勝率の計算式 | |
|---|---|
| 勝ちトレード数 | =COUNTIF(損益列, “>0”) |
| 全トレード数 | =COUNTA(損益列) |
| 勝率 | =勝ちトレード数 / 全トレード数 × 100 |
プロフィットファクター(PF)の計算
| PFの計算式 | |
|---|---|
| 総利益 | =SUMIF(損益列, “>0”) |
| 総損失(絶対値) | =ABS(SUMIF(損益列, “<0”)) |
| PF | =総利益 / 総損失 |
PFの目安:1.0未満はシステム失敗 / 1.0〜1.3は要改善 / 1.3〜1.8は平均的 / 1.8以上は優秀 / 2.0以上は卓越
最大ドローダウン(DD)の計算
最大DDはExcelの標準関数だけでは計算が複雑です。損益列の累積合計(残高推移)を計算し、各時点での「直近最高残高からの下落額」を求めます。最もシンプルな方法は「累積損益の推移グラフを折れ線で描き、目視で最大下落幅を確認する」方法ですが、正確な数値はPythonを使うことを推奨します。
PythonでCSVを高度分析する
Pythonを使うことで、手動計算では困難な「時間帯別勝率」「通貨ペア別PF」「月別損益推移グラフ」などを自動で算出・可視化できます。
必要なライブラリのインストール
以下のコマンドでライブラリをインストールします。
pip install pandas numpy matplotlib
基本分析スクリプト
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# CSVを読み込む(MT4のエクスポート形式に合わせて調整)
df = pd.read_csv('trade_history.csv', encoding='utf-8-sig')
# 損益列名を確認して変数に代入(例:'Profit')
profit_col = 'Profit'
# 勝率
win_rate = (df[profit_col] > 0).sum() / len(df) * 100
print(f'勝率: {win_rate:.1f}%')
# PF
total_profit = df[df[profit_col] > 0][profit_col].sum()
total_loss = abs(df[df[profit_col] < 0][profit_col].sum())
pf = total_profit / total_loss if total_loss != 0 else float('inf')
print(f'PF: {pf:.2f}')
# 最大DD
cumulative = df[profit_col].cumsum()
running_max = cumulative.cummax()
drawdown = cumulative - running_max
max_dd = drawdown.min()
print(f'最大DD: {max_dd:.2f}')
# 残高推移グラフ
plt.figure(figsize=(12, 5))
plt.plot(cumulative.values)
plt.title('残高推移')
plt.xlabel('トレード回数')
plt.ylabel('累積損益')
plt.grid(True)
plt.tight_layout()
plt.savefig('equity_curve.png', dpi=150)
plt.show()
このスクリプトで基本的な分析と残高推移グラフの保存まで自動化できます。MT4のCSVはヘッダー構成が口座・ブローカーによって異なる場合があるため、最初に `df.columns` で列名を確認してから列名を指定してください。
時間帯別・通貨ペア別分析
# 時間列がある場合(例:'Time'列がHH:MM:SS形式)
df['Hour'] = pd.to_datetime(df['Time']).dt.hour
hourly = df.groupby('Hour')[profit_col].agg(['sum','count','mean'])
print(hourly)
# 通貨ペア別PF('Symbol'列がある場合)
for symbol in df['Symbol'].unique():
sub = df[df['Symbol'] == symbol]
p = sub[sub[profit_col] > 0][profit_col].sum()
l = abs(sub[sub[profit_col] < 0][profit_col].sum())
pf_sym = p/l if l != 0 else float('inf')
print(f'{symbol}: PF={pf_sym:.2f} 勝率={((sub[profit_col]>0).sum()/len(sub)*100):.1f}%')
CSV分析で見るべき5つの指標
| 指標 | 計算方法 | 改善目標 |
|---|---|---|
| 勝率 | 勝ちトレード数 / 全トレード数 | 40%以上(PF次第) |
| プロフィットファクター | 総利益 / 総損失 | 1.5以上 |
| 最大ドローダウン | 資産最高値からの最大下落率 | 20%以内 |
| 平均RR比 | 平均利益 / 平均損失の絶対値 | 1.2以上 |
| 最大連続損失回数 | 連続でマイナスになった最大回数 | 7回以内(心理的許容範囲) |
この5指標の中で最も重要なのはPFです。勝率が30%でもPFが2.0以上あれば長期的に資金は増えます。逆に勝率70%でもPF0.8では必ず資金が減ります。
XMのMT4は履歴CSVエクスポートが安定しており、長期データの一括取得も容易。複数口座での検証にも対応。XM公式サイトを見る →
CSV分析の結果から改善策を導く方法
分析結果から具体的な改善アクションを決めるための思考フレームを紹介します。
通貨ペア別PFが低い場合
特定の通貨ペアでPFが1.0を下回っている場合は、そのペアでのトレードをいったん停止します。過去200回のトレードを遡り、「損失トレードの時間帯」「損失トレードのセットアップ種別」を確認し、問題のパターンを特定します。
時間帯別で偏りがある場合
例えば「22〜24時台のトレードだけPFが0.7」という結果が出た場合は、その時間帯をトレード禁止ゾーンに設定します。ロンドン・NYオーバーラップ終了後の22時以降は流動性が低下しスプレッドが拡大しやすいため、スキャルピングに向かない時間帯です。
最大連続損失が多い場合
最大連続損失が10回を超えている場合は、ロット管理の問題である可能性が高いです。各トレードのリスクを口座残高の1〜2%以内に収めていれば、10連敗しても残高への影響は10〜20%にとどまります。ロット固定で取引している場合は即座に%リスク管理に切り替えることを推奨します。






