← すべてのチュートリアル
MT5 API · 5:04

MT5 の履歴をレポートに。

実際の約定を読み、入出金を分けて出力。

Pythonのサンプルをダウンロード · ZIP ↓

手順を読む

  1. 0:00

    MT5 の履歴をレポートに。

    このチュートリアルでは、MT5 の取引履歴を取得し、計上済みの取引損益を計算して、Python で見やすいレポートに出力します。

  2. 0:13

    読み取り専用で接続。

    mt5.mrpc.pro を開き、ConnectEx を選びます。デモ口座のログイン番号、パスワード、ブローカーのサーバー名を入力します。TRIAL または API キーを使い、任意の id は空欄にします。今回は投資家パスワードで読み取り専用接続を行います。返された端末 id はコンソールに保存されます。

  3. 0:41

    口座の通貨を確認。

    AccountSummary を実行します。このデモ口座の通貨は米ドルで、残高は九万九千九百九十九ドル九十六セントです。損益や費用を表示するときは、口座の通貨を使います。

  4. 1:01

    終了済みの期間を指定。

    DealsHistory を選びます。inputFromUtc と inputToUtc に、末尾が Z の日時を入力します。対応するブローカー時刻の欄は空欄にします。今回は十月一日から十月二十八日の開始時点までです。次のページを取得するときも、この期間を固定します。

  5. 1:27

    すべてのページを取得。

    HTTP Status Code 200 を確認したら、まず error を読みます。今回、API エラーはありません。pageSize が二の場合、最初の応答には全十三件のうち二件だけが含まれます。nextPageToken を pageToken にコピーし、同じ条件で取得を続けます。nextPageToken が空になるまで繰り返します。

  6. 1:56

    注文、約定、ポジション。

    注文は取引の指示で、約定はその実行記録です。AllHistoryOrders では注文記録を取得します。DealsHistory の order は注文チケットに対応し、positionId は同じポジションの約定を結び付けます。ここでは、〇・〇二ロットの新規約定に対して、〇・〇一ロットの決済が二回あります。

  7. 2:25

    符号をそのまま使う。

    各約定の profit、commission、swap、fee を、返された値のまま足します。符号を保ち、既に負の値になっている手数料を再び引かないでください。この決済の利益は二セントで、費用はゼロです。新規約定時に手数料が発生する場合があるので、新規の記録も含めます。

  8. 2:52

    入出金を分ける。

    最初の記録は十万ドルのデモ入金です。種類は BALANCE で、注文やポジションはありません。これは取引利益ではありません。レポートでは Buy と Sell の約定を他の種類から分けます。単独の費用、クレジット、調整額は other-deals ファイルで確認します。

  9. 3:18

    集計範囲を確認。

    全十三件を取得できました。十二件の取引約定を合計すると、四セントの損失です。この例では commission、swap、fee はすべてゼロで、入金は別扱いです。これは指定期間に計上された金額で、含み損益ではありません。期間より前に建てたポジションでは、以前の費用がこの集計に含まれない場合があります。

  10. 3:48

    Python で同じデータを出力。

    付属スクリプトは同じ DealsHistory を呼び出し、カーソルで全ページを取得して、最後に件数を確認します。十進数で計算し、positionId ごとに金額を集計します。API キーと端末 id は環境変数に設定し、公開しないでください。このスクリプトは新規注文も決済も行いません。

  11. 4:16

    三つのファイルを開く。

    固定した UTC 日時を指定して実行します。trade-deals.csv、other-deals.csv、summary.json が作成されます。サンプル出力は今回取得した履歴と照合済みです。API エラーが発生したり、ページが欠けていたりすると、スクリプトは不完全な合計を表示せず停止します。

  12. 4:43

    最後に接続を解除。

    最後にコンソールで Disconnect を呼び出し、端末を解放します。このセッションは切断済みです。これで履歴の取得、入出金と取引損益の分離、確認や再利用ができるレポートの出力ができました。