ホームホーム  [日本語 / English]

Python(seaborn)で損益ヒストグラムを描く

はじめに

『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 を使っています。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# CSV ファイルのパス(適宜変更してください)
path = r'C:\HogeHoge\OrderHistory.csv'

# CSV ファイルの読み込み
df = pd.read_csv(path)

# 日本語フォントを設定
sns.set(font="Yu Gothic")

# 損益を 1 ロットあたりに正規化して,ヒストグラムを描画
sns.displot(df['Profit']/df['Lots'], kde=True)

# x 軸ラベルの設定
plt.xlabel('ロットあたり損益 [JPY/Lot]')

# グラフの表示
plt.show()

実行すると以下のようなヒストグラムが描けます。

損益ヒストグラム
Bill Lubanovic (著), 斎藤 康毅 (監修), 長尾 高弘 (翻訳)