Runaway Guard
- 유틸리티
- 버전: 1.0
- 활성화: 10
체결이 얼마나 빠르게 발생하는지를 주문 주체(매직넘버)별로 측정하고, 정해 둔 속도를 넘었을 때만 동작합니다. 매매의 금액 결과는 보지 않습니다.
■ 한눈에 보기
- 측정 기준은 체결 속도와 회전율이고, 상한 네 가지를 따로 켜고 끕니다.
- 넘어선 순간 CSV 파일이 하나 생성되고, 그 안에 든 실제 체결 티켓 번호를 거래 내역과 대조해 보실 수 있습니다.
- 기본 동작은 Alert 하나뿐이고, 계좌 전체가 아니라 주문 주체별로 집계합니다.
■ 속도 상한 네 가지
항상 최근 구간만 다시 집계합니다.
- 체결 속도 : 빠른 구간 5분에 20건
- 짧은 청산 : 진입 후 1분도 안 되어 청산된 건이 느린 구간 15분에 10건
- 재진입 : 청산 후 30초 안에 같은 종목, 같은 방향으로 다시 진입한 건이 느린 구간 15분에 5회
- 회전 비용 : 느린 구간의 수수료와 스왑과 청산으로 확정된 금액을 부호 그대로 합한 값이 잔고의 0.5%
합계가 마이너스일 때만 비용으로 집계하고, 상한에 0을 넣으면 그 지표는 꺼집니다.
■ 주문 주체별 집계
체결마다 그것을 발생시킨 프로그램의 매직넘버가 붙습니다. 행은 그 단위로 만들어지고, 동작도 행마다 따로 지정합니다. 사람이 직접 낸 주문은 Manual / no magic 행입니다. 계좌 전체 행 All sources는 체결 속도만 측정합니다. 제외한 주체는 계좌 합계에서도 빠지지만, 자기 행과 숫자는 그대로 남습니다. 폭주하는 것은 EA 하나이므로 나머지는 계속 운용하실 수 있습니다.
■ 상한 초과 시 동작
- Alert : 알리기만 합니다. 기본값입니다.
- Cancel pendings : 해당 주체의 대기 주문만 취소하고 포지션에는 손대지 않습니다.
- Stop the chart : 해당 주체가 실행 중인 차트를 닫습니다. 닫기 전에 템플릿을 저장합니다.
- Close the terminal : 말 그대로 MetaTrader를 종료합니다. 기본은 꺼져 있고 두 번째 스위치를 켜야 동작합니다.
상태는 평상시 WATCHING, 넘으면 TRIGGERED이고, DISABLED는 집계를 멈춘 것이 아니라 고른 동작을 지금 실행할 수 없다는 뜻입니다. 기록은 동작보다 먼저 쓰입니다.
■ 화면과 읽는 법
지금까지 집계한 결과는 차트 위 패널에 이렇게 표시됩니다.
Runaway Guard Watch Sources
Window 5 min / 15 min State: TRIGGERED
Source Deals RT Reentry Cost Action
All sources 48 -- -- -- Alert
Manual / no magic 4 2 1 -4.00 Alert
Magic 33020001 0 10 9 -250.00 Alert
Magic 40010001 36 18 17 -36.00 Cancel
Magic 70010001 8 4 3 -8.00 Alert
Magic 70010002 12 6 5 -12.00 Excluded
Last incident: 07:47:26 Magic 70010002 reentry
5 in 15 min (limit 2)
-> incident_2026-08-14_074726_magic70010002_2.csv
Close the terminal needs InpAllowTerminalClose = true
Window 줄이 두 구간의 길이입니다.
- 개별 행을 모두 더하면 4 + 0 + 36 + 8 + 12 = 60이고, 여기서 Excluded인 12를 빼면 All sources의 48이 됩니다.
- Deals는 빠른 구간, RT와 Reentry와 Cost는 느린 구간입니다. 몇 분 전에 멈춘 주체는 Deals가 0이어도 느린 구간에는 남습니다.
- RT는 느린 구간의 청산 전부이고, 상한이 집계하는 것은 그중 1분 미만에 청산된 건뿐입니다.
- All sources의 --가 세 개인 것은 계좌 전체로는 체결 속도만 측정하기 때문입니다.
- Excluded인 행이 Last incident에 남는 것은, 제외가 삭제가 아니라 알림만 끄는 설정이기 때문입니다.
- 이 화면은 상한을 낮춰 놓고 찍었습니다. 기본값은 20건, 10건, 5회입니다.
■ 기록 파일
MQL5/Files/RunawayGuard/ 아래에 한 건당 파일 하나씩 기록됩니다. 헤더 행은 실제로 다음과 같습니다.
time_broker,time_utc,time_local,trigger,measured,threshold,magic,symbol,deals,round_trips,commission,swap,realized,action,deal_tickets
시계가 세 개인 것은 브로커 시간과 UTC와 터미널 로컬을 함께 적기 때문입니다. 거래 내역과 대조할 수 있는 것은 브로커 시간뿐입니다. 이어서 어느 지표가 어떤 값으로 넘었는지, 주문 주체와 종목, 집계한 내역, 실행한 동작, 실제 체결 티켓 번호가 들어갑니다. 평가하는 열은 없고, 덮어쓰지도 자동으로 삭제하지도 않습니다.
■ 오탐 대책
시작 직후 첫 1분은 동작하지 않고, 장이 열린 직후 2분은 상한이 두 배가 됩니다. 매직넘버 단위로 제외할 수 있고, 한 번 발동한 지표는 10분 동안 다시 발동하지 않습니다.
■ 하지 않는 일
- 다른 EA를 끌 수는 없고, 그 EA가 실행 중인 차트를 닫는 것까지입니다.
- 다른 터미널에서 나간 주문은 멈출 수 없습니다. 감지는 됩니다.
- 이미 체결된 매매는 되돌릴 수 없습니다.
- 금액 결과로는 멈추지 않습니다. 멈추는 축은 속도입니다.
■ 무료 데모와 동작 환경
데모는 전략 테스터 안에서 동작합니다. 주문을 내지 않으므로, 합성한 체결 샘플을 실제 체결과 동일한 경로로 처리합니다.
TESTER DEMO - synthetic sample, no orders are placed
MetaTrader 5용이고, 어느 브로커, 어느 종목 차트에 올려도 됩니다. 헤징 계좌에서 만들고 검증했으며, 네팅 계좌는 구현했지만 검증하지 않았습니다. 포지션을 신규 진입하거나 청산하거나 변경하는 거래 요청, DLL, 외부 통신이 0건인 것은 자동 검사로 확인했습니다.
■ 입력 파라미터 19개
상한을 정하는 8개는 이름까지 적어 둡니다.
1. InpWindowFastMin : 빠른 구간 5분
2. InpMaxDealsPerWindow : 빠른 구간 체결 상한 20건
3. InpWindowSlowMin : 느린 구간 15분
4. InpShortHoldSec : 짧은 청산 기준 1분
5. InpMaxChurnPerWindow : 짧은 청산 상한 10건
6. InpReentrySec : 재진입 기준 30초
7. InpMaxReentryPerWindow : 재진입 상한 5회
8. InpMaxCostPercent : 회전 비용 상한 0.5%
나머지 11개는 동작, 시작 직후, 출력, 테스터로 묶여 있습니다. 전부 기본값 그대로 동작하니 set 파일(.set)이 필요 없고, 화면에서 바꾼 설정은 계좌별로 남습니다. 파라미터는 바꾸면 반드시 반영됩니다.
이 도구는 들어온 체결을 집계해 기록할 뿐, 앞으로 일어날 일은 말하지 않습니다.
