この記事は、MT5ストラテジーテスターレポート(HTML)を、パフォーマンス分析ライブラリ「QuantStats」で詳細な分析レポートを作成するための前処理のメモです。
ソースコードの品質に関してあまり気にしていないのでムダなところがあるかもしれませんが、予めご了承下さい。
MT5ストラテジーテスターレポート(HTML)とはこのようなものです。
今回はこのレポートをPythonで読み取って、QuantStatsで詳細分析してみましょう。
データ取得と前処理
QuantStatsでは、このような日時と残高データが必要です。
HTML読み取り
MT5ストラテジーテスターレポート(HTML)を読み取って前処理をしていきます。
まず、MT5ストラテジーテスターレポート名を指定してread_html関数でpandasデータフレームに取得します。
import pandas as pd
df = pd.read_html('EA_IntradayPatternsEURUSD.html') # ファイル名を指定
約定情報の取得
次に取得したデータフレームから約定情報のみを取得します。今回は"時間"と"損益"、"残高"以外のデータは必要ないですが、ついでに他のも含めて型変換しておきます。
df=df[1]
# 最初のカラムの中身が'約定'である行のインデックスを取得
index = df.index[df.iloc[:, 0] == '約定'].tolist()[0]
# '約定'である行より下の行を別のデータフレームに格納
deals = df.iloc[index+1:].reset_index(drop=True)
deals = deals.iloc[0:-2].reset_index(drop=True)# 上から2行と下から1行を削除
deals.columns = deals.iloc[0]# 一番上の行を列名とする
deals = deals.iloc[2:].reset_index(drop=True)
deals['時間'] = pd.to_datetime(deals['時間'])
deals['約定'] = deals['約定'].astype(int)
deals['注文'] = deals['注文'].astype(int)
deals['数量'] = deals['数量'].astype('float64')
deals['価格'] = deals['価格'].astype('float64')
deals['損益'] = deals['損益'].str.replace(' ', '').astype('float64') # 半角スペースを削除してからfloat64型に変換
deals['残高'] = deals['残高'].str.replace(' ', '').astype('float64') # 半角スペースを削除してからfloat64型に変換
これで"deals"という名前のデータフレームに約定情報を格納できました。
Daily損益に変換
今回は、単一ポジションのEAと複数ポジションのEAを同じように処理するため、日別損益に変換してからQuantStatsにデータを渡すようにしてみます。
# 日別損益に変換する
results = deals[['時間', '損益']]
results['時間'] = pd.to_datetime(results['時間']).dt.normalize()
results = results.groupby('時間')['損益'].sum().reset_index()
results.columns = ['date', 'pl']
# 'pl'カラムの累積データを計算し、'balance'カラムに追加する
results['balance'] = deals['残高'].iloc[0]
results['balance'] = results['balance'] + results['pl'].cumsum()
results = results.set_index('date')
results = results['balance']
ここで作成されたデータフレーム"results"の中身はこんな感じです
QuantStatsでレポート作成
QuantStatsが受け取れる形式に変換できたので早速使用してみましょう。
import quantstats as qs
# Jupyter Notebook上で出力する場合はこっち
qs.reports.full(results)
# HTML形式のQuantStatsレポートを作成する場合はこっちです
qs.reports.html(results, output='report.html', title="Performance Report")
QuantStatsについての詳細はこちらから確認してください。
https://github.com/ranaroussi/quantstats