Backtest Robustness Checker
- 지표
- 버전: 1.1
- 활성화: 5
Backtest Robustness Checker는 청산된 거래 목록을 읽어, 같은 거래의 순서가 바뀔 때, 일부 거래가 빠질 때, 가장 큰 수익 거래를 뺄 때 통계가 어떻게 달라지는지 보여 주는 MetaTrader 5 지표입니다. 거래는 계좌 내역, HTML로 저장한 전략 테스터 또는 계좌 보고서, 또는 간단한 CSV 파일에서 읽습니다. 결과는 차트 위의 패널에 표시되며 CSV로 저장할 수 있습니다.
과거 거래의 통계만 보여 줍니다. 미래의 결과를 예측하거나 보장하지 않으며, 전략이나 EA가 좋은지, 수익이 나는지, "견고한지"를 알려 주지 않고, 합격·불합격 판정도 내리지 않습니다. "최대 낙폭의 95번째 백분위수" 같은 몬테카를로 값은 과거 거래를 섞은 사본에 대한 수치이며, 미래 낙폭의 확률이 아닙니다. 숫자를 어떻게 사용할지는 본인이 결정합니다.
읽기 전용입니다. 주문을 내거나 수정하거나 청산하지 않으며, 매수·매도 신호도 주지 않습니다. 전략 테스터(마켓의 자동 검사 포함)에는 본인의 거래가 없으므로 내장된 샘플 데이터(SAMPLE DATA)를 표시하고, 주황색으로 "not real"(실제 아님)이라고 표시합니다.
기능
- 세 가지 데이터 소스: 계좌 내역(매직 넘버, 심볼, 청산 날짜로 필터), MQL5\Files 안의 파일(HTML로 저장한 MT5 보고서 또는 CSV), 또는 내장된 400건의 데모 거래 샘플.
- 원래 순서: 거래 수, 순손익, 프로핏 팩터, 승률, 거래당 평균 손익, 최대 낙폭(금액과 %), 최대 연속 손실, 최장 수면 아래 기간(거래 수).
- 거래 순서 섞기(몬테카를로): 같은 거래를 무작위 순서로 반복해서 배열합니다(기본 1,000회). 최대 낙폭, 최대 낙폭 %, 최대 연속 손실, 최장 수면 아래 기간의 최소·5%·25%·50%·75%·95%·최대; 원래보다 크거나 같은 낙폭이 나온 비율; 지정한 낙폭 %를 넘은 비율; 히스토그램.
- 거래 무작위 제외: 매 회 모든 거래를 지정한 확률(기본 10%)로 하나씩 제외하고 나머지는 원래 순서대로 집계합니다. 순손익, 프로핏 팩터, 최대 낙폭, 남은 거래 수의 백분위수, 순손익이 0 이하인 회차의 비율, 히스토그램.
- 가장 큰 수익 제외: 가장 큰 수익 거래 K건(기본 5)을 뺀 순손익, 프로핏 팩터, 최대 낙폭.
- 연도별 표(거래 수, 승률, 순손익, PF, 연내 최대 낙폭, 최대 연속 손실, 평균)와 월별 순손익 표, 청산 시각 기준. 긴 표는 페이지로 나눕니다.
- CSV 내보내기(버튼): 설정, 모든 통계, 백분위수, 연도별·월별 표, 거래 목록, 선택 시 시뮬레이션 1회당 1행. MQL5\Files에 저장.
- 고정된 난수 시드: 같은 데이터, 설정, 시드는 항상 같은 결과를 냅니다.
- 패널은 영어 또는 일본어(터미널 언어로 자동), 차트 배경에 따라 밝은·어두운 색, 네 모서리 어디든, 세 가지 크기, 접기 가능. 한 차트에 여러 개를 놓으면 차례로 쌓아 표시합니다.
주요 설정
- Trades to analyze: 데이터 소스; 계좌: 매직 넘버, 심볼, 청산 시작·종료일, 수수료·비용·스왑 포함; 파일: MQL5\Files 안의 이름, 공용 Files 폴더에서 읽기; 낙폭 %용 시작 잔고(0 = 자동).
- Simulation: 시뮬레이션 횟수(10-100000, 기본 1000), 난수 시드(기본 12345), 제외할 거래 비율(1-90 %, 기본 10), 제외할 큰 수익 건수(0-1000, 기본 5), 최대 낙폭이 이 %를 넘은 시뮬레이션 세기(기본 20, 0 = 끔).
- Panel: 처음 보여 줄 페이지, 페이지당 행 수, 언어, 모서리, 위치 오프셋, 크기, 색, 접힌 상태로 시작, CSV 버튼, CSV에 시뮬레이션별 행 넣기, 새 거래가 청산되면 다시 계산.
- 4개 그룹, 27개 설정.
계산 방법
- 거래의 손익 = 손익 + 수수료·비용 + 스왑(계좌 내역에서는 비용을 뺄 수 있음). 0에서 통화 최소 단위의 절반보다 멀면 수익 또는 손실, 그 외는 본전(파일과 샘플은 0.005). 프로핏 팩터 = 총수익 / 총손실.
- 잔고 곡선 = 시작 잔고 + 청산 순서대로 누적한 거래 손익. 최대 낙폭 = 이전 고점에서의 가장 큰 하락; 최대 낙폭 % = 그 하락 ÷ 고점 시점의 잔고. 보유 중인 포지션과 평가 손익은 포함하지 않습니다.
- 시작 잔고(자동): 계좌 내역 = 선택한 첫 거래가 청산되기 직전의 계좌 잔고; HTML = 첫 거래 이전의 balance 행; 샘플 = 10,000. 첫 거래 이후의 입금·출금은 곡선에 더하지 않으므로 낙폭 %의 분모에 들어가지 않습니다. 설정 "Starting balance for DD %"를 지정하면 자동 값 대신 사용합니다.
- 계좌 내역: 1건 = 1포지션(부분 청산은 같은 거래, 두 포지션의 Close By는 1건, 네팅의 반전은 앞뒤로 나눔).
- HTML 보고서: 1건 = Deals 표의 청산 체결(out, in/out, out by) 1건. 부분 청산은 각각 별도의 거래로 세므로, 같은 거래의 계좌 내역과 비교해 거래 수, 승률, PF가 조금 다를 수 있습니다. 보고서에는 포지션 ID가 없으므로 청산 체결을 규칙에 따라 보유 수량에 대응시킵니다(같은 심볼, 반대 방향; 남은 수량이 정확히 같은 가장 오래된 진입 체결, 없으면 선입선출). 수량이 다른 양방향 포지션이 있으면 이 대응은 추정이며, 거래마다 나누는 진입 수수료와 스왑도 추정입니다. 합계는 정확합니다.
- CSV: 한 줄에 한 거래, "시각,손익"(쉼표, 세미콜론 또는 탭; 시각은 YYYY.MM.DD HH:MM 또는 YYYY.MM.DD HH:MM:SS, "-"나 "/"도 가능), 또는 손익 1열만(이때는 연도별·월별 표 없음). 소수점은 "."만, 천 단위 구분 기호는 쓸 수 없습니다. 줄은 파일의 순서대로 사용합니다. 첫 번째 읽을 수 없는 줄은 머리글로 처리하고, 그 밖의 읽을 수 없는 줄은 건너뛴 행으로 세며, #으로 시작하는 줄은 무시합니다. CSV에는 잔고가 없으므로 낙폭 %를 보려면 설정에서 시작 잔고를 지정하십시오.
- 시작 잔고를 알 수 없으면 패널에 "unknown"(알 수 없음)이 표시되고 낙폭 % 값은 계산하지 않습니다. 금액은 그대로 표시합니다.
- 섞기: 매번 원래 순서에서 피셔-예이츠. 제외: 거래마다 난수 1회. 난수: 시드로부터 splitmix64(제외는 시드 + 1). 백분위수: 선형 보간.
- 계산량 상한: 시뮬레이션 종류마다 횟수 x 거래 수를 1억 이하로 유지합니다. 넘으면 횟수를 자동으로 줄이고(최소 10회) 패널에 그렇게 표시합니다. 예: 50,000건이면 2,000회. 큰 계산은 진행 상황을 표시하며 조금씩 진행하므로 차트가 멈추지 않습니다.
참고 및 한계
- 과거 거래의 통계일 뿐입니다. 예측, 보장, 전략의 합격·불합격 판정, 매매 신호, 조언이 아닙니다.
- 섞기와 제외는 각 거래를 다른 거래와 관계없는 고정 금액으로 다룹니다. 거래끼리 또는 잔고에 의존하는 방식(예: 그리드, 마틴게일, 물타기, 잔고에 따라 로트가 커지는 방식)에서는 시뮬레이션 결과가 그 방식에서 실제로 일어날 수 있는 일과 크게 다를 수 있습니다.
- 백테스트 결과는 테스트 설정(기간, 심볼, 스프레드, 수수료, 틱 모델)에 따라 달라집니다. 이 도구는 받은 결과를 읽을 뿐이며, 테스트를 어떻게 했는지는 확인하지 않습니다.
- .xlsx(Open XML / Excel) 보고서는 읽을 수 없습니다. 보고서를 HTML로 저장하거나 CSV를 사용하십시오. 64 MB를 넘는 파일은 읽지 않으며, 거래는 최대 2,000,000건까지 사용합니다.
- MQL5\Files(또는 공용 Files 폴더) 안의 파일만 읽을 수 있습니다. 파일 이름에 ".."나 ":"를 쓸 수 없습니다.
- MT5 보고서의 기본 파일 이름에는 계좌 번호가 들어갑니다(예: ReportTester-12345678.html). 패널과 내보낸 CSV에 파일 이름이 나오므로, 화면을 찍거나 CSV를 다른 사람에게 주기 전에 이름을 바꾸십시오.
- 연도별·월별 표는 데이터에 적힌 청산 시각을 사용합니다(MT5 보고서와 내역은 서버 시각).
- 전략 테스터에서는 "Account history" 소스에 본인의 거래가 없으므로 샘플 데이터를 표시하고 CSV 버튼은 숨깁니다. 본인의 데이터는 일반 차트에서 사용하십시오.
호환성 및 지원
- MetaTrader 5 전용. 헤징·네팅 계좌, 모든 심볼과 시간 프레임(차트의 심볼은 상관없음).
- DLL, 인터넷 접속을 사용하지 않습니다. 파일은 CSV 버튼을 누를 때만 씁니다.
- MQL5 메시지로 지원하며 3영업일 이내에 답장합니다: 설치, 설정, 파일 읽기, 버그 신고. 전략이나 EA가 좋은지 판단하거나, 결과를 조언으로 해석하거나, 시장 전망을 제시하거나, 매매 결정을 대신해 드릴 수는 없습니다.
- 거래 결과에 대해 어떠한 약속이나 암시도 하지 않습니다.
