『MT4 の取引履歴をテキストファイル(CSV 形式)に出力するスクリプト(MQL4)』で保存した CSV 形式のファイルをもとに Python(seaborn)で累積損益グラフを描く方法です。
CSV ファイルは以下のような形式です。1 行目はヘッダ(コメント)で, 2 行目以降に取引履歴が続きます。
各行は,カンマ区切りで,オープン時刻,クローズ時刻,ロット数,損益,シンボル名,売買種別が並びます。
OpenTime,CloseTime,Lots,Profit,Symbol,Buy/Sell
2020.10.26 03:54:05,2020.10.26 04:10:03,1.41,-4371,USDJPY-cd,Sell
2020.10.26 04:21:22,2020.10.26 05:01:09,1.41,11985,USDJPY-cd,Buy
2020.10.26 07:23:36,2020.10.26 08:59:58,1.42,-426,USDJPY-cd,Buy
2020.10.26 10:00:11,2020.10.26 10:19:02,1.42,-710,USDJPY-cd,Buy
2020.10.26 10:36:15,2020.10.26 10:56:00,1.4,3360,USDJPY-cd,Sell
Python のスクリプトは以下のようになります。CSV ファイルの読み込みには pandas を,グラフの描画には seaborn + matplotlib を使っています。
累積損益(損益の累積和)の計算は cumsum メソッドで行なえます。
import matplotlib.pyplot as plt
import matplotlib.dates as md
import seaborn as sns
import pandas as pd
# 読み込む CSV ファイルのパス(適宜変更してください)
path = r'C:\HogeHoge\OrderHistory.csv'
# CSV ファイルの読み込み(OpenTime と CloseTime は datetime 型として読み込む)
df = pd.read_csv(path, parse_dates=['OpenTime', 'CloseTime'])
# 日本語フォントを設定
sns.set(font='Yu Gothic')
# x 軸を CloseTime,y 軸を Profit の累積和にしてプロット
plt.plot(df['CloseTime'], df['Profit'].cumsum(), label = '取引履歴', linewidth = 2)
# 凡例を表示
plt.legend()
# x 軸目盛りのフォーマットを指定
ax = plt.gca()
xfmt = md.DateFormatter('%m-%d %H:%M')
ax.xaxis.set_major_formatter(xfmt)
# x 軸目盛りを 30°回転
plt.xticks(rotation = 30)
# 軸ラベルを設定
plt.xlabel("決済日時")
plt.ylabel("累積損益 [JPY]")
# グラフを表示
plt.show()
実行すると以下のようなグラフが描けます。