터틀(Turtle) 스타일의 돈치안 채널 돌파를 식별하고, 각 돌파 시마다 ATR 트레일링 스톱, 터틀 익스이트 채널, 고정 목표가 등 세 가지 익스이트 전략을 동시에 실행합니다. 전용 패널을 통해 해당 종목에서 어떤 익스이트 전략이 가장 높은 수익을 냈는지(스프레드 포함, R 단위) 확인할 수 있습니다. 리페인팅이 발생하지 않으며, Expert Advisor용 버퍼가 포함되어 있습니다.
브레이크아웃 시스템의 성패는 청산 방식에 달려 있습니다. 진입 조건은 간단하며 누구나 동의합니다. 가격이 최근 20봉의 최고가 이상으로 마감되면 매수합니다. 문제는 그 이후부터 시작됩니다. ATR로 트레일링 스탑을 설정할까요? 터틀의 10봉 청산 채널을 사용할까요? 고정된 2R을 실현하고 포지션을 청산할까요?
제가 찾아본 모든 브레이크아웃 지표는 하나의 청산 방식을 선택해 표시합니다. 저는 선택하기 전에 제 종목에서 동일한 진입 시점에 세 가지 방식이 모두 어떻게 적용되는지 직접 확인하고 싶었습니다. 따라서 이 지표는 각 브레이크아웃을 세 가지 청산 방식에 동시에 적용한 후, 그 결과를 나란히 표시합니다.
각 결과는 R 단위로 측정되며, 여기서 1R은 진입점부터 초기 손절점까지의 거리입니다. 신호 바의 스프레드는 비용으로 차감됩니다. 가격이 갭을 형성하며 스탑을 돌파할 경우, 스탑 가격이 아닌 해당 바의 시가로 체결됩니다. 스탑과 목표가가 모두 하나의 바 내에 위치할 경우, 바만으로는 어느 쪽이 먼저 발생했는지 판단할 수 없으므로 스탑이 집계됩니다.
모든 돌파는 개별적으로 점수가 매겨지므로 거래가 중복될 수 있습니다. 이 패널은 동일한 진입 세트에 대한 청산 결과를 비교한 것입니다. 포지션 규모를 고려한 계좌 시뮬레이션은 아닙니다.
선택한 청산 시점은 차트에도 표시됩니다. 각 거래에는 진입선과 R 단위 결과가 표시되며, 가장 최근 거래의 스탑은 점선으로 표시됩니다.
XAUUSD, MetaQuotes 데모 데이터, 기본 입력값. 2025년 시뮬레이션은 2025년 12월 31일까지의 360일 동안의 성과를 기록합니다. 2026년 시뮬레이션은 2026년 9월 18일까지의 260일 동안의 성과를 기록합니다.
| XAUUSD | 거래 | 승률 | PF | 합계 |
|---|---|---|---|---|
| H4 2025, 청산 A (ATR 트레일) | 129 | 43.4% | 1.45 | +23.08R |
| H4 2025, B 출구 (10봉 채널) | 129 | 41.1% | 2.34 | +66.20R |
| H4 2025, 청산점 C (2R 목표치) | 129 | 45.7% | 1.68 | +47.83R |
| H4 2026, A 매도 | 76 | 35.5% | 1.10 | +3.46R |
| H4 2026, 출구 B | 76 | 35.5% | 1.70 | +22.35R |
| H4 2026, 출구 C | 75 | 38.7% | 1.26 | +11.99R |
| 2025년 상반기, 출구 A | 465 | 37.6% | 1.32 | +70.32R |
| 2025년 상반기, 출구 B | 465 | 37.8% | 1.23 | +51.18R |
| 2025년 상반기, 출구 C | 465 | 37.8% | 1.21 | +60.32R |
| 2026년 상반기, 출구 A | 270 | 39.6% | 1.21 | +25.14R |
| 2026년 상반기, 출구 B | 270 | 40.4% | 1.29 | +35.15R |
| 2026년 상반기, 출구 C | 269 | 38.3% | 1.23 | +39.06R |
12가지 모두 긍정적인 결과를 보였습니다. H4 차트에서는 두 해 모두 터틀 청산 채널이 가장 좋은 청산 전략이었고, ATR 추적 전략이 가장 저조했습니다. H1 차트에서는 명확한 우세 전략이 없었습니다. 2025년에는 추적 전략이, 2026년에는 고정 목표가 우세했습니다. 이것이 바로 이 패널이 존재하는 이유입니다. 단일 종목에서도 “최상의 청산 시점”은 시간대와 연도에 따라 달라졌습니다.
이제 모두가 흥분하기 전에 꼭 알아야 할 부분이 있습니다. 2025년에 금 가격이 크게 상승했으며, 이는 분할 결과에도 반영되어 있습니다. H4 차트에서 청산 전략 B를 적용했을 때, 99건의 매수 포지션은 +79.4R을 기록했고, 30건의 매도 포지션은 -13.2R의 손실을 기록했습니다. 2026년에는 금 가격이 양방향으로 등락했으나 양쪽 모두 수익을 냈습니다: 42건의 매수 포지션은 +14.9R을, 34건의 매도 포지션은 +7.5R을 기록했습니다.
이 중 얼마나 많은 부분이 금의 추세에 기인하는지 확인하기 위해, 동일한 2026년 기간 동안 H4 차트의 세 가지 외환 통화쌍에 대해 동일한 기본 설정을 적용해 분석했습니다:
| H4 2026 | 청산 A 합계 (PF) | 청산 B 합계 (PF) | 청산 C 합계 (PF) |
|---|---|---|---|
| EURUSD | -11.74R (0.68) | -3.86R (0.89) | -5.97R (0.88) |
| GBP/USD | -9.21R (0.77) | -3.15R (0.91) | +6.90R (1.13) |
| USDJPY | +1.30R (1.03) | +0.73R (1.02) | +3.03R (1.06) |
횡보에서 약세. 돌파가 이루어지려면 시장이 추세를 보여야 하는데, 이 기간 동안 금은 추세를 보였으나 이 통화쌍들은 대부분 그렇지 않았습니다. 따라서 저는 금의 수치를 "금이 추세를 보일 때 돌파가 성공했다"는 의미로 해석할 뿐, 항상 그럴 것이라는 증거로 보지는 않습니다.
그림 1. XAUUSD 4시간 차트,2026년7월 말~9월 중순: 돌파 화살표, 진입 채널 및 청산점 B 기준 각 거래 결과
그림 2. 2025년 및 2026년 XAUUSD H4 차트 패널 (출구 B 표시)
| 입력 | 기본값 | 기능 |
|---|---|---|
| InpEntryBars | 20 | 진입 채널의 바 수 |
| InpExitBars | 10 | 출구 B에 대한 출구 채널 길이 |
| InpATRPeriod | 20 | ATR 기간 |
| InpStopATR | 2.0 | 초기 손절, ATR 배수 |
| InpTrailATR | 3.0 | 청산: 추적 거리, ATR 배수 |
| InpTargetR | 2.0 | 출구 C: 익절, R 배수 |
| InpUseTrend | false | 추세 EMA 방향과 일치하는 브레이크아웃만 유지 |
| InpTrendEMA | 200 | 추세 EMA 주기, 차트 시간대 |
| InpDrawExit | A. ATR 트레일 | 차트에 출구 지점을 표시하고 버퍼 6~9로 전송 |
| InpDaysBack | 365 | 스코어카드의 과거 데이터 일수 |
| InpDrawDays | 60 | 거래선이 그려진 일수 |
| InpShowPanel | true | 패널 표시 |
| InpPanelCorner | 왼쪽 위 | 패널 모서리 |
| InpAlertPopup | true | 새로운 돌파 시 팝업 알림 |
| InpAlertPush | false | 새로운 돌파 발생 시 푸시 알림 |
클래식 터틀 시스템 2의 경우, InpEntryBars를 55로, InpExitBars를 20으로 설정하십시오.
브레이크아웃은 채널을 벗어나 마감된 봉에 기록되므로, 해당 봉이 마감되면 EA는 시프트 1에서 이를 읽습니다. 화살표는 점수가 매겨진 창 내부뿐만 아니라 로드된 전체 기록에 걸쳐 유지됩니다. 전략 테스터에서 확인한 결과, EA가 실시간으로 감지한 신호는 실행 종료 시점의 버퍼에 저장된 신호와 정확히 일치했습니다: 2025년 금 가격의 경우 H1에서 473개 중 473개, H4에서 131개 중 131개였습니다.
| 버퍼 | 내용 |
|---|---|
| 0 | 브레이크아웃 매수, 값은 계획된 진입가(다음 봉의 시가)이며, 그렇지 않은 경우 EMPTY_VALUE |
| 1 | 브레이크아웃 매도, 동일한 형식 |
| 2, 3 | 진입 채널의 고점과 저점 |
| 4 | 그려진 청산선 아래의 최근 거래 스탑 |
| 5 | 브레이크아웃 바에서의 초기 손절 |
| 6~9 | 마지막 마감 바에 표시된 청산 지점의 성과표: 마감된 거래, 승수, R의 합계, 손실 R의 합계 |
int handle; datetime lastBar = 0; int OnInit() { handle = iCustom(_Symbol, PERIOD_H4, "BreakoutExitLab"); return(handle == INVALID_HANDLE ? INIT_FAILED : INIT_SUCCEEDED); } void OnTick() { //--- 브레이크아웃은 종가 봉에서 확인되므로, 새로운 봉이 형성될 때마다 한 번씩 확인하세요 datetime bar = iTime(_Symbol, PERIOD_H4, 0); if(bar == lastBar) return; lastBar = bar; double buy[1], sell[1], stop[1]; if(CopyBuffer(handle, 0, 1, 1, buy) < 1 || CopyBuffer(handle, 1, 1, 1, sell) < 1 || CopyBuffer(handle, 5, 1, 1, stop) < 1) return; if(buy[0] != EMPTY_VALUE) Print("Breakout buy, initial stop ", stop[0]); if(sell[0] != EMPTY_VALUE) Print("Breakout sell, initial stop ", stop[0]); }
이 지표에는 의도적으로 입력 그룹이 없습니다. MQL5는 각 "입력 그룹"을 iCustom()의 매개변수로 간주하며, 그 뒤의 모든 값은 한 칸씩 밀리게 됩니다.
패널을 제작하면서 알게 된 사소한 사실 하나: 차트 레이블은 최대 63자까지 지원합니다. 처음에 패널 행의 길이가 이보다 길었더니 MetaTrader가 숫자 중간에서 잘라버리는 바람에, 지금은 행 길이를 짧게 유지하고 있습니다.
결과는 봉(bar) 데이터에서 도출되므로, 한 봉 내부의 이벤트 순서는 알 수 없습니다. 스프레드만 부과되며, 수수료는 없고 스탑을 통과하는 갭을 제외한 슬리피지는 발생하지 않습니다. 거래는 하나씩 점수가 매겨지며 중복될 수 있으므로, 합계는 순자산 곡선이 아닙니다. 위의 모든 수치는 금 가격이 강한 추세를 보였던 두 기간 동안 한 브로커의 데이터를 바탕으로 한 것입니다.
알리 라즈푸트
MetaQuotes Ltd에서 영어로 번역함.
원본 코드: https://www.mql5.com/en/code/77687
ATS Confirmed Swings - non-repainting swing highs and lows
마크는 N개의 마감된 봉이 이를 확인한 후에야 스윙 고점과 저점을 표시하므로, 그려진 스윙은 절대 이동하거나 사라지지 않습니다.
Basket Pair Closer
Position manager for MT5 that closes the best winner together with the worst loser when their combined result reaches your minimum. Basket take profit and stop loss in money, magic filter, simple panel. Works with grid, martingale and manual trades. Open source code.
DataSnooping: SPA test, Reality Check, StepM and model confidence set
Is the best of many strategies really better than the benchmark? Hansen's SPA test, White's Reality Check, Romano-Wolf StepM and the model confidence set.
Swap Markup Scanner
Shows the broker's hidden financing markup and the carry for every symbol, as annual % of notional.