EA Ledger True Costs MT5
- ユーティリティ
-
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself. - バージョン: 1.0
- アクティベーション: 10
MetaTrader 5用の口座台帳です。成績をマジックナンバー、銘柄、曜日、時間帯別に分け、価格損益、手数料、スワップ、諸費用を別々の列に表示し、各約定で支払ったスプレッドと、指定した価格に対するスリッページを測定します。合計は更新のたびに口座残高と照合されます。チャート上で取引を行うことは決してありません。
機能
チャート一つに適用します。口座の約定履歴を読み込み、すべてのポジションをその約定から再構築して、結果をパネルに表示します:
- 純損益、価格損益、手数料、スワップ、諸費用(それぞれ別の列に表示)
- 各約定のスプレッドコストとスリッページコスト(ターミナル自身のティック履歴から測定)
- 決済済みの各トレードのMFEとMAE:保有中に価格が有利な方向と不利な方向へそれぞれどこまで動いたか
- トレード数、勝率、プロフィットファクター、ロット数、ロットあたりの総コスト
- 入金、出金、クレジット、ボーナス、修正、その他の非取引項目(取引成績とは分けて表示)
約定が追加されると自動で更新されます。計算処理は50,000件と200,000件の約定からなる合成履歴でテストしました。ライブテストに使った口座の約定数は最大1,249件です。
残高と一致する合計
履歴が変わるたびに、パネルは口座の全約定を合計し、その合計をブローカーが報告する残高と比較します。サマリー下のバーには両方の数値と差額が表示され、セント単位まで一致すれば緑の「OK」、一致しなければ赤の「MISMATCH」となります。選択した期間については、残高の変化が取引成績と非取引項目の合計に等しいことも表示します。
クレジットは表示されますが、MetaTraderと同じく残高には含めません。
約定から再構築されるポジション
- ヘッジング口座とネッティング口座。
- 部分決済、追加建てされたポジション、反対ポジションによる決済(両方のポジションに「CB」と表示)、ネッティング口座でのドテン(一つの約定でポジションを決済し、反対方向のポジションを建てるもの)。ドテン約定の手数料は、決済されたトレードと新しいトレードにボリューム比で配分されます。
- 別の約定として計上された手数料や、日次・月次の手数料は、ブローカーがポジションに紐付けている場合、そのポジションに割り当てられます。紐付けがない場合は「Commission not linked to a position」という独立した行に表示されます。
- ストップロス、テイクプロフィット、ストップアウトによる決済には印が付きます。
グループ化とフィルター
表示:マジックナンバー別(EAのコメントがあればそれをラベルとし、マジック0は「Manual」)、銘柄別、マジックナンバーと銘柄別、エントリーの曜日別、エントリーのブローカー時刻別、トレード一覧。
期間:今日、今週、今月、全履歴、またはサーバー時間で指定するカスタム範囲。
マジックナンバーの行をクリックするとその銘柄が、銘柄の行をクリックするとそのマジックナンバーが、マジックナンバーと銘柄の行をクリックするとそのトレードが表示されます。パネル上のチップは適用中のフィルターを示し、そこからフィルターを解除できます。
Resultsページには金額が表示されます。Costsページには、グループごとのスプレッド、スリッページ、手数料、諸費用、ロットあたりのコスト、MFEとMAEの平均、各測定値の取得元が表示されます。
コストの測定方法
- 約定時のスプレッド:約定時刻に有効だったBid/Ask(ターミナルのティック履歴から取得)。ティックがない場合はM1バーのスプレッドを使い、そのトレードに「M1」と表示します。
- スリッページ:要求された価格に対する約定価格の差。要求された価格は次のとおりです:
- 未決注文:その注文価格
- ストップロスまたはテイクプロフィット:そのストップ水準
- 成行注文:ブローカーは通常その要求価格を保存しないため、注文を出した時点の気配値をティック履歴から取得します(買いはAsk、売りはBid)
スリッページはプラスなら不利、マイナスなら有利な方向です。
- ポイントあたりの金額:トレード自体の損益から算出するため、口座通貨(セント口座やEUR口座を含む)と契約サイズ(ロットあたり1、10または100 ozのゴールド、1、10または100単位の指数CFD)に従います。測定に使える価格変動がないトレードには、その銘柄の平均値を使い、次にブローカー自身の損益計算を使います。
- MFE / MAE:エントリーから決済までの間にポジションが評価された最高値と最安値(買いはBid、売りはAskで評価)。ティックから算出します。3日(入力パラメータ)を超えるトレードはM1バーを使い、「M1」と表示されます。
スプレッドコストとスリッページコストは約定価格の一部なので、すでに価格損益に含まれています。成績のうちどれだけをそれらが占めたかを確認できるように表示しているもので、改めて差し引かれることはありません。
結果は小さなキャッシュファイルに保存されるため、測定は約定ごとに一度だけ行われます。テスト口座では、1,246件の約定と557件のトレードの初回測定に7秒かかりました。測定はバックグラウンドで少しずつ実行され、その間もパネルを使用できます。
CSVエクスポート
「Export CSV」ボタンを押すと、MQL5\Files\EALedger\<account>\ に四つのファイルが書き出されます:
- <time>_summary.csv:期間の合計、非取引項目、残高チェック
- <time>_groups.csv:現在の表示のグループごとに一行
- <time>_trades.csv:トレードごとに一行。エントリーと決済、コスト、エントリー時と決済時のスプレッドとスリッページ、ポイントと金額で表したMFEとMAE、各測定値の取得元、注記を含みます
- <time>_deals.csv:約定ごとに一行。その約定が属するトレード、要求価格、注文時の気配値、スリッページ、スプレッドを含みます
入力パラメータ「Write the CSV files again after every history change」を有効にすると、同じファイルが接頭辞 auto_ 付きで常に最新の状態に保たれます。
入力パラメータ
| 入力パラメータ | 初期値 | 説明 |
|---|---|---|
| Period shown at start | All history | Today, This week, This month, All history, Custom |
| Custom period: from / to | 2026.01.01 / 0 | サーバー時間。0 = 現在 |
| View shown at start | By magic number | By magic number, By symbol, By magic number and symbol, By weekday of entry, By broker hour of entry, Trade list |
| Show only this magic number | -1 | -1ですべて表示 |
| Measure spread and slippage at every fill | true | |
| Measure MFE / MAE of closed trades | true | |
| Trades up to this many days long use ticks | 3 | それより長いトレードはM1バーを使用 |
| Write the CSV files again after every history change | false | |
| Panel distance from the left / top edge | 8 / 22 | ピクセル |
| Panel scale in % | 0 | 0の場合、画面のDPIに合わせます |
| Hide the chart's own trade arrows while the panel is open | true | MetaTraderは取引の矢印をパネルより上に描画します。パネルを折りたたむか、EAを削除すると、チャートの設定は元に戻ります |
| Tester only: open sample positions | true | 下記参照 |
ストラテジーテスター
テスターには、開始時点で表示する約定履歴がありません。そのため、ストラテジーテスター内でのみ、EAが自ら短い一連のサンプルポジションを建てます:
- 最小ボリューム(証拠金に余裕があれば最小の二倍)、三つのマジックナンバー(「Sample A」「Sample B」「Sample C」)
- 各ポジションを建て、その半分を決済し、次に残りを決済します。最大60ポジション
- 新しいポジションを建てる前に毎回余剰証拠金を確認し、資金が不足していればメモを書き出すだけで、何も送信しません
ビジュアルモードで実行すると、パネルにデータが入っていく様子を確認できます。サンプルポジションは売買戦略ではなく、その結果は利益について何も示しません。テスターには成行注文の要求価格がなく、ティック履歴もない場合があるため、テスターではスプレッドとMFE/MAEはM1バーから算出され、スリッページはトレード一覧で「n/a」、サマリーで0.00と表示されます。
ライブ口座またはデモ口座のチャート上では、EAが注文を送信、変更、決済することは決してありません。
制限事項(購入前にお読みください)
- チャートのEA枠を一つ使用:エキスパートアドバイザーなので、適用したチャートのEA枠を使用します。取引用EAのチャートではなく、空いているチャートに適用してください。
- ティック履歴はブローカーのもの:スプレッド、成行注文のスリッページ、MFE/MAEには、トレード時刻のブローカーのティック履歴が必要です。ブローカーがティック履歴を保持する期間は限られており、銘柄によってはまったく保持していません(テストでは株式CFDの一つに履歴がありませんでした)。その場合はM1バーを使って「M1」と表示し、データがなければ「n/a」と表示します。初回の測定時には、ブローカーのサーバーからティック履歴をダウンロードします。
- 成行注文のスリッページは、注文を出した時点の気配値と比較して測定します。執行中の価格変動も含まれ、それが実際に支払う分です。
- 反対ポジションによる決済:MetaTraderは、反対ポジションによる決済の損益全体を二つのポジションのうち一方に計上します。台帳はブローカーが計上したとおりに表示します。合計は正しく、二つのポジション間の配分はMetaTraderによるものです。
- ネッティング口座:一つのポジションが複数のEAによって変更されることがあります。トレードはそれを建てたマジックナンバーに属し、そのポジションに対する他のマジックナンバーの約定には「Mix」と表示されます。
- 金額は口座通貨で表示されます(ブローカーが報告するとおりの値)。セント口座ではセント単位で表示されます。
- スワップは専用の列に表示され、ロットあたりの総コスト(スプレッド、スリッページ、手数料、諸費用を対象)には算入されません。
- 曜日と時間帯はエントリー時のもので、サーバー時間です。
- テスト環境:
- 四つのデモ口座でライブ稼働:MetaQuotes-Demo USDヘッジング(1,249約定)、EURヘッジング(900約定)、USDネッティング(262約定)、および別のブローカーのデモ口座 USDヘッジング(337約定。5,000 ozの銀、10単位と100単位の指数契約、株式CFDを含む)。四口座すべてで合計はセント単位まで残高と一致し、すべてのトレードが、テスト用に別途作成した履歴の再構築結果と一致しました。
- セント口座と1 ozのゴールドは、合成約定を使ったユニットテストで確認したもので、ライブ口座では確認していません。どちらのブローカーもデモではこれらを提供していませんでした。
- 速度は50,000件と200,000件の約定からなる合成履歴でテストしました。
- まずはデモ口座で、無料のストラテジーテスター用デモ版をお試しください。
