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가 계산하는 방식과 같습니다.
딜로부터 재구성되는 포지션
- 헤징 계좌와 네팅 계좌.
- 부분 청산, 추가 진입한 포지션, 반대 포지션으로 청산(Close By, 두 포지션 모두 "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의 차트가 아니라 여분의 차트에 부착하십시오.
- 틱 기록은 브로커의 데이터입니다: 스프레드, 시장가 주문의 슬리피지, 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건으로 이루어진 합성 내역으로 테스트했습니다.
- 먼저 무료 전략 테스터 데모로, 데모 계좌에서 사용해 보십시오.
