Tollgate Spread Atlas
- 유틸리티
- 버전: 1.0
- 활성화: 10
Tollgate Spread Atlas는 사용 중인 브로커에서 거래하는 데 실제로 드는 비용을 보여 줍니다. 차트 종목과 최대 8개의 관심 목록 종목의 실제 틱 기록을 읽어 요일과 시간별 스프레드 지도(월요일-금요일, 서버 시간 24시간)를 만들고, 실시간 스프레드를 현재 시간의 일반 스프레드와 비교하며, 스프레드, 수수료, 스왑을 왕복 비용과 6개 타임프레임의 ATR 대비 비율로 환산합니다. 읽기 전용이므로 주문을 열거나 수정하거나 닫지 않습니다.
빠른 시작
- 유틸리티를 아무 차트(예: XAUUSD 또는 EURUSD)에 적용합니다. 거래를 하지 않으므로 Algo Trading 권한이 필요 없습니다.
- 기록을 읽는 동안(Lookback Window, 기본 28일) 패널에 SCANNING TICK HISTORY와 SCAN 비율이 표시됩니다. 첫 스캔은 터미널이 틱을 내려받는 동안 1분 정도 걸릴 수 있습니다.
- 스캔이 끝나면 실시간 카드에 LIVE SPREAD, TYPICAL, RATIO와 상태(CHEAP, NORMAL, WIDE, SPIKE)가 표시됩니다.
- Cost Calculator Lot Size를 평소 랏으로 맞추고 Commission Source를 선택합니다.
- 확인하려면 지도 셀에 마우스를 올리거나(툴팁) CSV를 눌러 지도를 저장합니다.
지도를 만드는 방법
- 각 호가의 스프레드(ask - bid, 정수 포인트)는 다음 호가까지의 초 동안 계산되며 상한은 Max Seconds Credited Per Quote입니다. 공백과 휴장 시간은 더해지지 않습니다. 틱 수가 아니라 시간으로 가중합니다.
- 각 셀(요일 x 서버 시간)은 스프레드 분포를 저장하며, 여기서 MEDIAN, P90(90번째 백분위수), MEAN(시간 가중 평균)을 구합니다. 31포인트까지는 정확하고 그 이후는 두 배마다 16단계입니다(하한 표시).
- 일반 스프레드 = 현재 셀의 중앙값. 셀이 Minimum Coverage For A Cell보다 적으면 모든 요일의 같은 시간, 그다음 한 주 전체를 사용합니다. 출처는 [CELL], [HOUR], [WEEK]로 표시됩니다.
- Add Live Quotes To The Atlas가 켜져 있으면 호가가 최신인 동안 각 종목의 현재 스프레드를 1초마다 더합니다.
- 지도는 서버 하루에 한 번 Daily Rebuild Hour에 기록으로 다시 만들어지고(기간 이동), RESCAN을 누를 때도 다시 만들어집니다.
상태 규칙
RATIO = 실시간 스프레드 / max(일반, 1포인트). 초과분 = 실시간 - 일반.
- SPIKE: RATIO가 SPIKE From 이상이고 초과분이 Minimum Excess For WIDE / SPIKE 이상.
- WIDE: RATIO가 WIDE From 이상이고 같은 초과분 규칙.
- CHEAP: RATIO가 CHEAP Below 미만.
- NORMAL: 그 밖의 경우.
- NO DATA: 아직 호가가 없거나 일반 스프레드가 없음.
초과분 규칙은 raw 또는 ECN 계좌(일반 0-2포인트)가 작은 변화에 반응하지 않도록 합니다.
패널
헤더
- LED: 초록 또는 청록(NORMAL, CHEAP), 호박색(WIDE 또는 스캔 중), 빨강(SPIKE), 회색(NO DATA).
- TOLLGATE SPREAD ATLAS, 포커스 종목, SERVER TIME(모든 시간은 브로커 서버 시간).
- [-]는 패널을 TSA, 종목, 비율, 상태를 보여 주는 작은 막대로 최소화하고 [+]는 복원합니다.
실시간 카드
- LIVE SPREAD(포인트, 3/5자리 종목은 pips도 표시).
- TYPICAL과 출처 [CELL], [HOUR], [WEEK]; RATIO; 상태 배지.
- 일반 스프레드의 0-3배 게이지(METER 0-3x), CHEAP Below, WIDE From, SPIKE From 위치에 흰색 눈금.
- TODAY MAX: 서버 자정 이후 가장 넓은 스프레드, 읽은 호가 수, 기록 일수.
비용 카드(ROUND-TRIP COST, 계좌 통화)
- SPREAD: 해당 랏의 실시간 및 일반 스프레드 비용(포인트 x 틱 가치 x 포인트 / 틱 크기 x 랏).
- COMMISSION 랏당 편도와 출처: [HISTORY](사용자의 체결), [FIXED], [NONE].
- TOTAL: 실시간 및 일반 왕복 비용(스프레드 + 2 x 수수료 x 랏)과 실시간 합계의 포인트 환산.
- SWAP / NIGHT 매수(L)와 매도(S)의 랏당 금액, 3배 스왑 요일(3x WED). 포인트 또는 입금 통화 스왑은 환산하고, 다른 모드는 단위와 함께 원래 값(통화/LOT, %/YEAR, RAW)을 표시합니다. 비활성화 시 SWAP OFF.
- COST / ATR: 실시간 왕복 비용(가격)을 마지막 완성 봉의 ATR로 나눈 뒤 100을 곱한 값으로, M1, M5, M15, H1, H4, D1에 표시됩니다. 5% 미만 초록, 5-15% 호박색, 15% 이상 산호색이며 30%에서 막대가 가득 찹니다. 값이 높으면 비용이 해당 타임프레임의 일반적인 봉 하나의 큰 부분을 차지한다는 뜻입니다.
버튼
- METRIC: MEDIAN / METRIC: P90 / METRIC: MEAN은 지도 지표를 바꿉니다.
- RESCAN은 수수료를 다시 읽고 모든 지도를 기록에서 다시 만듭니다.
- CSV는 포커스 지도(스캔 후)를 MQL5\Files\Tollgate_<SYMBOL>.csv에 저장합니다.
- ALERTS ON / ALERTS OFF는 이번 세션의 SPIKE 알림을 켜고 끕니다.
- click cell = pin: 셀을 고정할 수 있다는 안내입니다.
버튼으로 바꾼 설정은 재초기화(타임프레임 변경, 다시 적용, 재시작) 시 입력값으로 돌아갑니다.
지도(HOUR-OF-WEEK ... SPREAD)
- 행은 MON-FRI, 열은 서버 시간 00-23. 색 = 셀 값 / 한 주 전체의 같은 지표(WEEK MEDIAN, WEEK P90, WEEK MEAN): 0.6x 이하 청록, 1.0x 초록, 1.6x 금색, 2.6x 이상 산호색. 어두운 셀 = 데이터 없음(커버리지가 최소값 미만).
- 금색 테두리 = 현재 시간(now). 흰색 테두리 = 고정한 셀.
- 툴팁: 셀의 중앙값, P90, 평균, 커버리지. 셀을 클릭하면 고정되고 다시 클릭하면 해제됩니다.
- 상세 줄: NOW(현재 셀) 또는 PINNED와 MEDIAN, P90, MEAN, COVERAGE.
- CHEAPEST HOURS와 DEAREST HOURS: 모든 요일 기준 시간 가중 평균 스프레드가 가장 낮은, 가장 높은 서버 시간 3개.
- 주말 호가는 HOUR와 WEEK 값에 포함되지만 그려지지 않습니다. 지도는 30초마다 갱신됩니다.
관심 목록
열은 WATCHLIST, LIVE, TYPICAL, RATIO, STATUS, COST/ATR H1(실시간 왕복 비용 대비 H1 ATR). 행을 클릭하면 그 종목이 패널 전체의 포커스가 됩니다(행 강조). NOT FOUND = 브로커에 해당 종목이 없음, SCANNING = 기록을 불러오는 중, 목록이 비면 no watchlist symbols.
알림
종목(차트 또는 목록)이 SPIKE Must Last초 동안 SPIKE 상태를 유지하면 종목마다 Alert Cooldown마다 한 번 알림을 보냅니다. 예: [Tollgate Atlas] XAUUSD spread SPIKE 51 pts = 5.1x typical 10 pts (THU 23:00 server) 전문가 로그에 기록되고 Terminal Pop-Up Alerts, Audible Alerts(alert.wav, 팝업에 자체 소리가 있으므로 팝업이 꺼져 있을 때만), Push Notifications To Mobile(도구, 옵션, 알림에서 MetaQuotes ID 설정)로 전송됩니다.
다른 EA용 플래그(터미널 전역 변수)
Publish Terminal Global Variables가 켜져 있으면 스캔 후 매초 종목마다:
- TSA_<SYMBOL>_RATIO: 실시간 / 일반.
- TSA_<SYMBOL>_TYPICAL: 일반 스프레드(포인트, -1 = 데이터 없음).
- TSA_<SYMBOL>_OK: 1 = CHEAP 또는 NORMAL, 0 = WIDE 또는 SPIKE, -1 = NO DATA.
유틸리티를 제거하면 삭제됩니다.
if(GlobalVariableCheck("TSA_EURUSD_OK") && GlobalVariableGet("TSA_EURUSD_OK") == 0)
return; // spread is WIDE or SPIKE: skip new entries 부수 효과
- 관심 목록 종목을 시장 감시 창에 추가합니다. Object Name Prefix로 이름 붙인 차트 객체를 만듭니다(유틸리티와 함께 삭제). 250ms 타이머를 사용합니다.
- CSV를 누를 때만 파일을 씁니다: day, hour, median_pts, p90_pts, mean_pts, coverage_min 168행(-1 = 데이터 없음).
입력값
- Lookback Window(28, 3-90 달력일): 종목별로 읽는 기록.
- Max Seconds Credited Per Quote(60, 5-600): 호가당 상한.
- Minimum Coverage For A Cell(15분): 이보다 적으면 셀은 데이터 없음이 되고 일반값은 대체 출처를 씁니다.
- Heatmap Metric(Median Spread): 시작 시 Median Spread, 90th Percentile Spread, Time-Weighted Mean Spread.
- Add Live Quotes To The Atlas(true): 실시간 학습.
- Daily Rebuild Hour(3, 서버 시간, -1 = 안 함): 롤오버 이후 일일 재구성.
- CHEAP Below(0.85), WIDE From(1.5), SPIKE From(2.5): 비율 기준값.
- Minimum Excess For WIDE / SPIKE(5포인트).
- Cost Calculator Lot Size(1.0).
- Commission Source(From Account History): From Account History, Fixed Per Lot Per Side, No Commission.
- Fixed Commission(랏당 편도 3.5): 기록에 체결이 없을 때의 대체값이기도 합니다.
- Commission History Window(90일).
- ATR Period For Cost Burden(14).
- Watchlist Symbols("EURUSD,GBPUSD,USDJPY,XAUUSD", 최대 8개, 접미사를 포함한 브로커의 정확한 이름).
- Alert On SPIKE(true), SPIKE Must Last(5초), Alert Cooldown(15분).
- Terminal Pop-Up Alerts(true), Push Notifications To Mobile(false), Audible Alerts(true).
- Publish Terminal Global Variables(true).
- Object Name Prefix("TSA_"): 한 차트에서 두 개를 실행하려면 변경합니다.
- HUD Chart Corner(Top Left; Top Right, Bottom Left, Bottom Right), HUD X Offset(16), HUD Y Offset(24) 픽셀.
- Panel Scale(1.0, 0.5-2.5): Windows 배율 위에 적용되는 크기 배수.
- Start Minimized(false).
대표 설정
- M1 스캘핑: Heatmap Metric 90th Percentile Spread, WIDE From 1.3, SPIKE From 2.0, Minimum Excess For WIDE / SPIKE 2. CHEAPEST HOURS에 거래하고 M1의 COST / ATR을 확인합니다.
- 금: Lookback Window 42, SPIKE From 3.0, Minimum Excess For WIDE / SPIKE 15, Alert Cooldown 30, Push Notifications To Mobile true.
- raw 또는 ECN 계좌: Heatmap Metric Time-Weighted Mean Spread, Commission Source From Account History, Minimum Excess For WIDE / SPIKE 5.
- EA 필터: Alert On SPIKE false, Publish Terminal Global Variables true, 위 코드를 EA에 추가.
참고 및 제한
- 기록 깊이는 브로커에 따라 다르며 몇 주 분량의 틱만 보관하는 곳도 있습니다.
- 전략 테스터에서는 테스터의 틱으로 지도를 만듭니다. 실제 스프레드를 보려면 "Every tick based on real ticks"를 사용하세요.
- 스프레드는 브로커와 계좌 유형마다 다르며 과거 스프레드가 미래 스프레드를 보장하지 않습니다. 이 유틸리티는 비용을 측정할 뿐 가격이나 결과를 예측하지 않습니다. 거래에는 손실 위험이 있습니다.
