백테스트 & 검증 intermediate 12분 소요

MT5 파라미터 최적화 — 조합 116개, 실행 252회, 채택한 설정 0개

MT5 파라미터 최적화를 우리 전략 템플릿 8개에 직접 돌렸고, 그중 하나도 채택하지 않았습니다. 쓸모 있는 부분은 각각이 어떻게 실패했는가입니다. 인샘플 최고 성적이 가장 크게 무너졌고, 한 설계는 아웃오브샘플 점검을 한 번 통과하고도 무너졌으며, 둘은 맞춰 넣은 바로 그 기간에서조차 1.0을 넘지 못했습니다. 절차, 그리고 표 첫 줄을 그대로 내보내지 않게 해 주는 읽는 법을 담았습니다.

게시일 · 검토일

MetaTrader 5에서 파라미터 최적화는 탐색입니다. 입력값마다 범위를 선언하면 전략 테스터가 모든 조합을 돌리고, 당신이 고른 지표를 기준으로 정렬한 표를 건네줍니다. 어려운 부분은 그것을 돌리는 일이 아닙니다. 어려운 부분은 그 표에 언제나 첫 줄이 있고, 그 첫 줄이 거의 언제나 틀렸다는 데 있습니다.

이 글에서 얻어 가는 것은 숫자가 아니라 결정을 만들어 내는 절차입니다. 변호할 수 있는 탐색, 두 번째 구간과 마주쳐도 살아남는 패스 그리드 읽는 법, 그리고 멈추는 기준입니다.

검증 조건
실험 IDEXP-PARAM-SEARCH-OUTCOMES-001
상위 실험EXP-BUILDER-TEMPLATE-BASELINE-001
출처ea-templates-manifest.jsbt.explored
모집단8 recorded searches of the 53 measured templates
심볼 / 시간 프레임USDJPYm, M5 and H1
모델M1 OHLC (Model=1), Exness MT5, measured 2026-06-18
변화시킨 파라미터stop loss and take profit only
최종 검증2026-08-25

설정: 그리드, 분할, 그리고 데이터

탐색을 돌릴 값어치가 있는지를 결정하는 설정이 셋 있습니다. 이것을 잘못 잡으면 패스 그리드는 대단히 비싼 난수 발생기가 됩니다.

항목위치어떻게 둘 것인가
OptimisationSettings 탭그리드가 작으면 Slow complete algorithm유전 알고리즘 모드는 공간을 표본으로만 훑습니다. 조합이 12–32개라면 전부 들여다볼 여유가 있습니다
Start / Step / StopInputs 탭, 입력값마다파라미터 둘, 성긴 스텝체크하는 입력값마다 그리드가 곱해집니다. 우리는 둘만 움직였습니다
ForwardSettings 탭1/2, 1/3 또는 1/4구간을 갈라 테스터가 뒷부분을 따로 채점하게 합니다. 애초에 이 탐색을 돌리는 이유가 되는 점검입니다
Optimisation criterionSettings 탭그리드를 보기 전에 정할 것테스터가 패스에 순위를 매기는 지표이므로, 어느 줄이 첫 줄이 되는지를 이것이 정합니다
ModellingSettings 탭훑을 때는 거친 모드, 살아남은 것은 실제 틱으로 다시훑는 모드는 후보에 순위를 매기는 용도이지, 공개할 수치를 내는 용도가 아닙니다
PeriodSettings 탭국면이 하나 이상 들어갈 만큼 길게추세 하나 안에서만 도는 탐색은 그 추세에 올라탄 설정을 찾아냅니다

이 기준은 기본값으로 둘 것이 아니라 결정해야 할 대상입니다. 순손익으로 순위를 매기면 가장 크게 위험을 진 패스가 상을 받고, 낙폭 기반 지표로 순위를 매기면 가장 적게 거래한 패스가 상을 받습니다. 리커버리 팩터라는 것이 존재하는 이유가 바로 그 두 답이 서로 어긋나기 때문입니다. 우리 탐색은 테스터의 순위로 판단하지 않았습니다. 살아남은 후보마다 서로 다른 세 구간에서 프로핏 팩터로 점수를 매겼고, 그중 어느 한 구간 안에서의 순위는 아무것도 결정하지 않았습니다.

데이터 품질이 먼저입니다. 나쁜 틱 위에서 도는 탐색은 그 빈 구멍을 최적화합니다. 짧게 말하면, 모델링 품질이 90% 아래면 당일 매매 패스 그리드는 쓸 수 없게 되고, 보간된 틱 데이터로 만든 실행은 봉 안쪽에 놓인 손절을 분해해 내지 못합니다.

  1. 먼저 기본값 그대로 백테스트를 한 번 돌리고 리포트를 남겨 두십시오. 기준선이 없으면 패스 그리드는 이길 대상이 없습니다. 백테스트 하는 법이 그 한 패스를 처음부터 끝까지 다룹니다.
  2. Settings 탭에서 Optimisation을 작은 그리드용 완전 탐색으로 두고, Forward1/3으로 설정해 테스터가 구간의 마지막 3분의 1을 남겨 두게 하십시오.
  3. Inputs 탭에서는 실제로 테스트할 파라미터만 체크하고, 각각에 Start, Step, Stop을 주십시오. 성긴 스텝의 입력값 둘이 촘촘한 스텝의 넷보다 낫습니다.
  4. Start를 누르고 끝날 때까지 두십시오. Optimisation Results 탭은 표로 읽고, Optimisation Graph는 모양으로 읽으십시오. 뾰족한 봉우리 하나는 경고이고, 평평한 고원은 발견입니다.
  5. 이긴 것이 아니라 살아남은 것들을 골라, 각각을 최적화 구간보다 앞선 기간에서 단일 백테스트로 다시 돌리십시오. 우리 집합의 모든 부정적 판정이 나온 단계가 이것이고, 사람들이 건너뛰는 단계도 이것입니다.

결과 읽기: 한 구간이 아니라 세 구간

기록으로 남은 우리 집합 전체를, 각 탐색이 도달한 최고 인샘플 프로핏 팩터 순으로 정렬해 싣습니다. IS는 설정을 맞춰 넣은 구간, OOS는 홀드아웃, prior는 탐색이 한 번도 보지 못한 앞선 구간입니다.

템플릿탐색한 그리드최고 ISOOS직전 구간판정
ichimoku조합 12개 × 구간 3개1.370.890.80no_robust_edge
ma_crossover조합 20개 + 12개, 시간 프레임 2개1.230.89–0.940.78no_robust_edge
cci_level조합 12개 × 구간 3개1.071.050.92no_robust_edge
adx_trend조합 12개 × 구간 3개1.040.910.80no_robust_edge
breakout조합 12개 × 구간 3개1.040.79–0.890.64–0.84no_robust_edge
macd_signal조합 12개 × 구간 3개1.14–1.150.74–0.77no_robust_edge
rsi_reversal조합 12개 × 구간 3개0.91no_robust_edge
bb_bounce조합 12개 × 구간 3개0.91no_robust_edge

첫 숫자 열을 위에서 아래로 읽고, 그다음 가로로 읽으십시오. 이 집합에서 인샘플 성적이 가장 컸던 것이 가장 크게 무너졌습니다. ichimoku의 1.37은 0.89로, 다시 0.80으로 떨어졌습니다. 이 순서는 우연이 아닙니다. 한 구간에 가장 잘 들어맞는 설정은 구조적으로 그 구간의 잡음을 가장 많이 빨아들인 설정이기 때문입니다.

이제 실제로 가장 가까웠던 설정을 보십시오. 위 표에는 없습니다. 어디에서도 첫 줄이었던 적이 없기 때문입니다. 같은 ichimoku 그리드에서 SL50/TP150인샘플 1.18, 아웃오브샘플 0.99, 직전 구간 1.00을 냈습니다. 세 구간 모두 대체로 평평합니다. 가장 가까운 후보로 기록되었고, 그러고도 채택되지 않았습니다. 세 구간에 걸친 본전은 우위가 아니기 때문입니다. 그것은 우위가 없다는 사실을 조심스럽게 측정한 결과일 뿐입니다.

그에 비해 이 탐색들이 이기려 했던 기준선은 0.92에서 1.03 사이에 놓여 있습니다. 어떤 탐색도 이미 출고된 기본값을 움직이지 못했습니다.

피해야 할 함정

다섯 가지 밑에 깔린 실패 방식은 전부 같은 하나입니다. 과최적화는 탐색 끝에서 저지르는 실수가 아니라 탐색을 돌리면 기본으로 나오는 결과이며, 세 구간 규율은 그것을 행동에 옮기기 전에 눈에 보이게 만들려고 존재합니다.

개선과 반복: 무엇을 바꾸고, 언제 멈출 것인가

하나만 바꾸고, 다시 돌리고, 남겨 둔 기준선과 비교하십시오. 시간을 가장 적게 버리는 순서는 이렇습니다.

  1. 그리드를 넓히기 전에 기간을 넓히십시오. 조합을 늘리는 것보다 국면을 늘리는 편이 낫습니다. 추세 하나만 덮는 탐색은 해상도가 어떻든 그 추세에 올라탄 설정을 찾아냅니다.
  2. 그다음에는 스텝을 잘게 다듬지 말고 성기게 만드십시오. 어떤 결과가 SL47에서만 존재한다면, 그것은 존재하지 않는 것입니다.
  3. 그런 뒤에야, 오직 그런 뒤에야 파라미터를 하나 더하십시오. 우리 탐색은 여기까지 간 적이 없습니다. 파라미터 둘이 이미 세 구간 기준을 넘지 못했기 때문입니다.

다음 중 하나가 참이 되면 멈추고, 어느 것이었는지 적어 두십시오.

  • 살아남은 후보가 세 구간을 모두 통과했다. 내보내되, 남긴 패스만이 아니라 탐색한 그리드 전체를 기록하십시오.
  • 인샘플 최고 성적이 1.0 아래다. 진짜 답을 얻은 것입니다. 우리 탐색 8건 중 둘이 여기서 끝났고, 평가 36회 만에 여기서 끝나는 것은 싼 값입니다.
  • 살아남은 후보가 한 구간은 통과하고 다른 구간은 계속 떨어진다. 그 규칙은 국면에 의존합니다. 더 탐색해 봐야 국면에 의존하는 설정이 더 나올 뿐입니다.
  • 직전 구간은 “쳐 주지 않아도 된다”고 설명하기 시작했다. 탐색이 테스트이기를 멈춘 순간이 바로 그때입니다.

탐색의 정직한 기록은 훑은 범위 판정을 함께 적은 것입니다. 우리 8건은 전부 그렇게 저장되어 있고, 그래서 애초에 이 글을 그 기록들로부터 쓸 수 있었습니다. 이긴 설정만 저장해 두었다면 아무것도 증명하지 못했을 것입니다.

다음 단계: 포워드 테스트, 그다음 결정

최적화는 네 단계 중 두 번째입니다. 순서는 백테스트 → 최적화 → 워크포워드 → 데모이며, 각 단계가 서로 다른 방식의 오류를 하나씩 걷어냅니다.

  • 당신이 통제하는 대상에서 이 반복을 연습하십시오. Builder에서 전략을 만들고 그 손절과 목표를 직접 탐색해 보십시오. 남에게서 물려받은 그리드보다 당신이 직접 선언한 그리드가 훨씬 정직하게 읽히기 때문입니다.
  • 세 구간 점검의 형식을 갖춘 판본이 워크포워드 분석이며, 분할 지점을 한자리에 고정하는 대신 앞으로 굴려 나갑니다.
  • 탐색이 무엇을 돌려주든, 그것이 담겨 오는 리포트는 여전히 읽어야 합니다. MT5 백테스트 리포트 읽는 법이 대표 수치 하나하나가 실제로 어느 모집단에 대한 주장인지를 다룹니다.
  • 숫자가 실제로 살아남았을 때 완성된 기록이 어떤 모습인지 보고 싶다면, 공개된 EA마다 완전한 청산 거래 목록과 실행 매니페스트가 붙어 있습니다.
  • 이 모든 것을 우리가 어떻게 테스트하고 채점하고 기록하는지는 검증 방법에 밝혀 두었습니다.

자주 묻는 질문

한 번에 파라미터를 몇 개나 최적화해야 하나요?
테스터가 허용하는 것보다는 적게 잡으십시오. 기록으로 남은 우리 탐색은 전부 정확히 두 개만 움직였습니다. 손절과 익절이며, 조합 수는 12개에서 32개 사이였습니다. 그리고 8건 중 어느 것도 우리가 내보낼 만한 설정을 내놓지 못했습니다. 세 번째, 네 번째 파라미터를 더한다고 이것이 해결되지는 않습니다. 그리드만 몇 배로 불어나고, 테스트 구간의 잡음에 들어맞는 조합을 찾기가 훨씬 쉬워질 뿐입니다. 파라미터 두 개로 세 구간을 살아남는 결과를 만들 수 없다면, 문제는 탐색의 해상도가 아니라 규칙 쪽에 있습니다.
최적화 패스에서 프로핏 팩터는 어느 정도를 봐야 하나요?
하나가 아니라 세 개의 숫자를 보십시오. 우리 집합에서 인샘플 프로핏 팩터의 최고치는 ichimoku 템플릿이 낸 1.37이었습니다. 그런데 같은 설정이 아웃오브샘플에서 0.89, 그보다 앞선 구간에서 0.80을 냈습니다. 쓸 만한 것에 가장 가까웠던 설정은 인샘플 성적이 훨씬 초라했습니다. 1.18이었고, 나머지 두 구간에서 0.99와 1.00을 지켰습니다. 그래도 채택하지 않았습니다. 세 구간 중 두 구간이 본전이라는 것은 우위가 아니기 때문입니다. 화면에서 정보량이 가장 적은 수치가 바로 높은 인샘플 숫자입니다.
최적화한 설정을 검증하는 데 아웃오브샘플 테스트 한 번이면 충분한가요?
충분하지 않으며, 그 이유를 보여 주는 사례가 우리에게 있습니다. macd_signal 템플릿은 아웃오브샘플에서 1.14에서 1.15에 이르는 설정을 냈습니다. 홀드아웃 한 번을 깨끗하게 통과한 것입니다. 그런데 테스트 구간보다 앞선 구간에서는 0.74에서 0.77을 냈습니다. 또 다른 설계인 cci_level은 한 걸음 더 나아갔습니다. 인샘플 1.07, 아웃오브샘플 1.05, 직전 구간 0.92였습니다. 두 구간으로도 충분하지 않았던 것입니다. 흔히 쓰는 홀드아웃 한 번 규칙이었다면 둘 다 그대로 출고되었을 것입니다.
최적화가 수익이 나는 설정을 아예 찾지 못한다면 무슨 뜻인가요?
답을 일찍, 그리고 싸게 얻었다는 뜻이고, 이것이 좋은 결말입니다. 우리 탐색 8건 중 둘, 곧 rsi_reversal과 bb_bounce는 맞춰 넣은 바로 그 기간에서조차 프로핏 팩터가 1.0을 넘긴 적이 없습니다. 인샘플 최고 성적이 0.91이었습니다. 튜닝에 쓴 바로 그 데이터에서도 작동시킬 수 없는 규칙은 그리드를 넓히거나 더 오래 돌린다고 구제되지 않습니다. 탐색한 범위와 판정을 기록해 두고 다음 아이디어로 넘어가십시오.