Institutional Framework Trading System MT5
- 지표
- 버전: 1.586
- 업데이트됨: 19 10월 2026
Range-Bound Edition · v1.58
기관이 실제로 사용하는 것과 동일한 구조로 금융상품을 거래하십시오
대부분의 소매용 Smart Money Concept(SMC) 도구는 한 가지 작업만 수행합니다. 차트에 Order Block과 Liquidity Sweep을 표시하고, 그것을 신뢰할지 여부는 트레이더가 직접 판단하도록 합니다. Institutional Framework Trading System MT5는 여기서 멈추지 않습니다.
이 시스템이 생성하는 모든 신호는 이미 확인된 가격 행동 구조이며, 최대 3개의 추가적인 기관급 시장 컨텍스트 계층 — 실제 옵션 시장 포지셔닝, 거시경제 펀더멘털, 시장 심리 — 을 통해 교차 검증됩니다.
이 모든 요소를 하나의 명확한 신호로 통합하므로, 화면에 서로 다른 내용을 보여주는 3개의 지표가 서로 충돌하는 상황을 줄입니다.
본 시스템은 Order Block, Liquidity Sweep, Supply/Demand Zone을 이미 이해하고 있으며 단순히 구조를 그리는 것이 아니라 시장 구조를 검증하는 시스템을 원하는 트레이더를 위해 설계되었습니다.
무엇이 다른가
-
완전한 SMC 구조 엔진 — Order Block, Liquidity Sweep, Supply/Demand Zone을 모두 확정된 캔들의 가격 행동만을 기반으로 구축합니다. 캔들이 마감되는 순간 신호가 고정되며 그 이후에는 절대 리페인트되지 않습니다.
-
구조만이 아닌 다층 확인. 모든 구조적 신호는 차트에 표시되기 전에 Divergence, Exhaustion, Absorption 탐지기를 통해 교차 검증됩니다. 따라서 단순한 패턴 일치가 아니라 가격 구조와 주문 흐름 행동의 일치 여부를 확인할 수 있습니다.
-
실제 옵션 시장과의 컨플루언스. COMEX Gold Futures Options 데이터에서 직접 가져옵니다. 실제 Open Interest, Max Pain, 실제 금 옵션 시장의 유동성 레벨을 사용하며 합성 대체 데이터를 사용하지 않습니다. 이를 통해 가격이 도달하기 전에 실제로 큰 포지션이 어디에 집중되어 있는지를 확인할 수 있습니다.
-
거시경제를 고려하도록 설계됨. 내장 파이프라인이 Fed 대차대조표, CPI/PPI 및 고용 데이터를 읽어 신호가 더 넓은 거시경제 레짐과 정렬되도록 합니다.
-
시장 심리 반영. CFTC Commitment of Traders 포지셔닝과 시장 Fear & Greed가 실제 역추세 필터로 사용됩니다. 극단적인 심리 수치는 진입의 청신호가 아니라 반대 방향으로 거래할 수 있는 기회로 취급됩니다.
-
목적별 2가지 모드. 추세 시장을 위한 점수 기반 Conservative Mode와, 본 버전의 기본 모드인 Range-Bound Mode가 있습니다. 후자는 전략 테스트를 통해 조정되었으며 모멘텀보다 구조와 평균회귀가 더 중요한 횡보/통합 시장을 위해 설계되었습니다.
-
즉시 작동하며 함께 확장됨. 위의 고급 계층은 모두 선택 사항입니다. 아무런 설정 없이 지표를 적용해도 첫 번째 캔들부터 검증된 구조만을 기반으로 작동합니다. 필요할 때 옵션 데이터, 거시경제 데이터 또는 심리 데이터를 추가할 수 있습니다. 코어 엔진 외의 기능은 신호 생성에 필수적이지 않습니다.
-
.mq5 파일을 터미널의 MQL5\Indicators 폴더에 복사합니다. (MT5에서 File → Open Data Folder로 이동) 그 후 MetaEditor에서 컴파일합니다.
-
지표를 금 차트에 적용합니다. 다른 심볼에서도 작동하지만 이 파일의 모든 기본값과 설명은 XAU를 기준으로 합니다.
-
모든 입력값을 기본값으로 그대로 둡니다. 이 버전은 Range-Bound Mode로 실행되며, 본 빌드에 맞게 조정된 모드입니다. Divergence 탐지는 활성화되어 있지만 차트상의 마커는 숨겨져 있습니다(이유는 2절 참조).
-
적용한 후 Experts 로그를 확인합니다. 자동 펀더멘털/심리 데이터 가져오기에 실패한 경우 그 내용을 명확하게 표시하며, 차트 정보 패널에서는 현재 모드, 레짐 및 신호 스코어링 상태를 한눈에 확인할 수 있습니다.
-
옵션 시장 컨플루언스를 사용하려면 11절에서 하나의 경로를 선택하십시오. 그렇지 않으면 해당 부분을 완전히 건너뛸 수 있습니다. 지표는 옵션 데이터 없이도 정상적으로 작동합니다.
enum ENUM_SIGNAL_MODE { MODE_CONSERVATIVE, MODE_RANGEBOUND };
-
Conservative Mode — 포인트 스코어링 시스템입니다. Order Block, Sweep, Divergence, Exhaustion, Absorption, Cluster Confluence 및 Options Confluence가 각각 점수를 추가합니다. 점수가 MinSignalScore (기본값 4)를 초과할 때만 신호가 발생합니다. 이 모드에서는 레짐 필터(12절의 펀더멘털/심리 판독)가 현재의 우세한 바이어스와 반대되는 신호를 적극적으로 차단합니다.
-
Range-Bound Mode (본 빌드의 기본 모드) — 하나의 구조 조건(Order Block 또는 활성 Demand/Supply Zone), 하나의 확인 조건(Divergence, Exhaustion 또는 Absorption), 그리고 RangeBoundMinScore 를 통한 최소 점수를 요구합니다. 기본값은 2이며 원래 항상 활성화되어 있던 게이트를 정확하게 재현하는 값입니다. Cluster/Options Confluence가 더 큰 영향을 주기를 원할 때만 값을 높이십시오. 이 모드에서는 레짐 필터가 방향을 차단하지 않습니다. 펀더멘털/심리 바이어스와 관계없이 Long과 Short 양방향이 활성 상태로 유지됩니다.
중요 — RequireDivergence , RequireOrderBlock , RequireSweep 를 변경하기 전에 반드시 읽으십시오:
이 세 가지 파라미터는 Conservative Mode에만 적용됩니다. 기본값인 Range-Bound Mode에서는 이 입력값들이 전혀 작동하지 않습니다. 조정하는 데 시간을 사용할 필요가 없습니다.
RequireDivergence 는 이후 Conservative Mode로 다시 전환하더라도 일관된 동작을 유지하도록 기본값이 false 로 설정되어 있습니다.
DrawDivergenceMarks 역시 본 빌드에서는 기본값이 false 입니다. 이는 순수한 시각적 설정이며 차트의 DIV_ 마커를 숨기는 역할만 합니다.
내부 Divergence 탐지기( EnableDivergence , 여전히 true )는 계속 작동하며 Range-Bound Mode의 hasConfirmation 에도 계속 포함됩니다.
차트에 Divergence를 시각적으로 표시하려면 DrawDivergenceMarks 를 다시 활성화하십시오.
3. 핵심 구조 탐지그룹: === SMC / Structure Detection ===
| 파라미터 | 기본값 | 제어 내용 |
|---|---|---|
| SwingWing | 3 | 캔들을 swing high/low로 확정하기 위해 캔들 양쪽에 필요한 바 수. 낮을수록 더 많은 Swing이 발생하고 노이즈가 증가하며, 높을수록 Swing은 적지만 더 중요해집니다. |
| SwingLookback | 100 | Divergence 또는 Sweep 구조를 검사할 때 이전 Swing 포인트를 찾기 위해 과거로 얼마나 많은 바를 검색할지 결정합니다. |
| ATRPeriod | 14 | displacement, exhaustion, absorption, divergence-swing 필터 등 지표에서 거리 기반 임계값 대부분을 조정하는 데 사용되는 ATR 기간입니다. |
| OBDisplacementMult | 1.0 | 캔들이 Order Block의 displacement candle로 인정되기 위해 필요한 최소한의 몸통 크기/ATR 비율입니다. |
| OBMaxWickRatio | 0.3 | displacement candle의 전체 레인지 중 그림자가 차지할 수 있는 최대 비율(0–1)입니다. 레인지가 크지만 대부분 그림자로 구성된 캔들을 필터링합니다. |
| SDMoveMultiple | 3.0 | 이후의 폭발적인 움직임이 “기준” 캔들의 레인지의 몇 배에 도달해야 Supply/Demand Zone으로 인정되는지를 결정합니다(6절 참조). |
| EquilibriumBandPct | 0.05 | 탐지된 레인지의 50% 수준 주변에 설정되는 equilibrium 밴드의 폭입니다. |
그룹: === Exhaustion Detection === , === Absorption Detection === , === Delta Divergence === , === Delta (Native Tick) ===
| 파라미터 | 기본값 | 제어 내용 |
|---|---|---|
| EnableExhaustion | true | Exhaustion 탐지기의 메인 스위치입니다. |
| ExhaustionWickMult | 0.6 | 캔들이 Exhaustion으로 인정되기 위해 필요한 최소한의 그림자/레인지 비율입니다. |
| ExhaustionBodyMult | 0.3 | 해당 그림자와 함께 허용되는 최대 몸통/레인지 비율입니다. |
| EnableAbsorption | true | Absorption 탐지기의 메인 스위치입니다. |
| AbsorptionVolFactor | 1.5 | 캔들이 Absorption으로 인정되기 위해 필요한 최소 거래량/평균 거래량 배수입니다. |
| AbsorptionRangeFactor | 0.8 | 허용되는 최대 레인지/ATR 비율입니다. Absorption = 높은 거래량 + 작은 레인지입니다. |
| AbsorptionRejectPct | 0.2 | 필요한 최소 그림자 거부 비율입니다. |
| EnableDivergence | true | Divergence 탐지기의 메인 스위치입니다. DrawDivergenceMarks 가 꺼져 있어도 반드시 켜두십시오. |
| DrawDivergenceMarks | false (본 버전) | 순수한 시각적 설정으로 DIV_ 차트 마커를 표시하거나 숨깁니다. 신호 생성에는 영향을 주지 않습니다. |
| DivergenceMinSwingATR | 1.0 | 두 Swing을 Divergence 비교하기 전에 필요한 최소 Swing 간 가격 차이(ATR 단위)입니다. 노이즈 수준의 Swing을 필터링합니다. |
| MaxTickBars | 50 | 실제 buy/sell tick-delta를 Divergence에 사용할 수 있는 최근 바의 수입니다. 더 오래된 바는 자동으로 raw tick-volume을 사용합니다. |
그룹: === Cluster Confluence (both modes) ===
| 파라미터 | 기본값 | 제어 내용 |
|---|---|---|
| UseClusterScoring | true | 하나의 바에서 여러 확인 조건이 동시에 발생했을 때 스코어 보너스를 부여할지 여부를 결정합니다. |
| MinClusterSignals | 3 | 보너스를 발생시키기 위해 동시에 일치해야 하는 확인 조건의 수입니다. |
| ClusterBonusScore | 2 | 신호 점수에 추가되는 보너스 값입니다. |
이 기능은 두 모드 모두에 적용됩니다. Range-Bound Mode에서는 2절에서 설명한 RangeBoundMinScore 게이트에 반영됩니다.
6. Supply & Demand Zones그룹: === Supply & Demand Zones ===
| 파라미터 | 기본값 | 제어 내용 |
|---|---|---|
| DrawSupplyDemandZones | true | Zone 드로잉 엔진의 메인 스위치입니다. |
| SDLookback | 100 | 유효한 base + 폭발적 움직임 패턴을 찾기 위해 과거로 검색하는 바의 수입니다. |
| SDMaxBaseCandles | 4 | 폭발적인 움직임 전에 허용되는 “base”(통합/콘솔리데이션) 캔들의 최대 수입니다. |
| SDDisplacementMult | 0.5 | Zone에서 벗어나는 폭발적인 움직임에 필요한 최소 몸통/ATR 비율입니다. OBDisplacementMult 와 독립적이며 더 완화된 조건입니다. Zone과 Order Block은 별도로 탐지됩니다. |
| SDMaxZonesShown | 3 | 차트에 동시에 표시되는 Zone의 최대 개수입니다. |
| SupplyZoneColor / DemandZoneColor | Red / Blue | 차트상의 Zone 색상입니다. |
활성 상태이며 아직 mitigation되지 않은 Demand 또는 Supply Zone은 Order Block과 동일하게 Range-Bound Mode 게이트의 “구조적” 조건을 충족합니다.
7. Higher Timeframe 필터그룹: === Higher-Timeframe Confirmation ===
| 파라미터 | 기본값 | 제어 내용 |
|---|---|---|
| UseHTFFilter | true | 신호가 발생하기 전에 상위 시간 프레임의 방향성 판단이 일치해야 하는지 여부를 결정합니다. |
| HTFTimeframe | H4 | 확인에 사용할 상위 시간 프레임입니다. |
| HTFLookbackBars | 20 | 추세 판단을 위해 과거로 확인하는 확정 H4 바의 수입니다. |
| HTFNeutralPct | 0.05 | HTF 추세가 얼마나 평평해야 “neutral”로 간주되는지를 결정합니다. Neutral이면 Long과 Short 어느 쪽도 차단하지 않습니다. |
이 필터는 항상 가장 최근의 확정된 상위 시간 프레임 바를 읽으며 현재 형성 중인 바는 읽지 않습니다. 따라서 리페인트되지 않습니다.
8. 세션 필터그룹: === Session Filter (approximate UTC windows, NOT DST-adjusted) ===
| 파라미터 | 기본값 | 제어 내용 |
|---|---|---|
| AllowedSession | SESSION_ALL | 신호를 특정 세션으로 제한합니다: SESSION_ALL , SESSION_LONDON , SESSION_NEWYORK , SESSION_LONDON_NY . |
| UTCOffsetHours | 0 | 브로커 서버 시간이 UTC가 아닌 경우 조정합니다. |
내부적으로 확인되는 실제 시간 구간:
London = 08:00–16:00 UTC
New York = 13:00–21:00 UTC
| 파라미터 | 기본값 | 그룹 | 제어 내용 |
|---|---|---|---|
| SignalCooldownBars | 5 | Signal Cooldown | 동일한 Zone에서 두 신호 사이에 필요한 최소 바 수입니다. 가격이 충분히 이동하지 않았다면 최소 가격 거리도 적용하여 동일한 레벨이 반복적으로 신호를 발생시키는 것을 방지합니다. |
| MaxBarAgeForSignal | 25 | Stale Zone Decay | Order Block이 새로운 신호를 위한 유효한 구조로 계속 인정될 수 있는 최대 경과 바 수입니다. 이 값은 화살표 자체가 표시될 수 있는지를 결정하며 13절의 알림 타이밍 설정과는 다릅니다. |
그룹: === Fibonacci Extension Auto-Targets ===
Bullish 또는 Bearish Order Block이 탐지되면 차트에 TP1 / TP2 / TP3 (Fibonacci 확장, 기본값 1.618 / 2.618 / 4.236)와 BE 기준선이 표시됩니다.
차트에 명시된 규칙: Stop-Loss를 Break-Even으로 이동하십시오.
| 파라미터 | 기본값 |
|---|---|
| EnableFibTargets | true |
| FibTP1 / FibTP2 / FibTP3 | 1.618 / 2.618 / 4.236 |
| FibTP1Color / FibTP2Color / FibTP3Color | Yellow / Orange / Red |
| TrailBEColor | White |
Options Liquidity Confluence 스코어링 보너스에 실제 옵션 시장 데이터를 입력하는 방법은 두 가지가 있습니다.
둘 중 하나만 사용하면 충분합니다. 둘 다 사용하지 않아도 지표는 정상적으로 작동합니다.
옵션 A — FlashAlpha Live API (편리하지만 Proxy)
-
lab.flashalpha.com 에서 무료 API Key를 발급받습니다.
-
UseLiveAPI = true 로 설정하고 키를 FlashAlpha_API_Key 에 입력합니다.
-
FlashAlpha_Expiration 을 원하는 만기일로 설정합니다. 형식은 yyyy-MM-dd 입니다. 무료 요금제에서는 한 번에 “모든 만기”를 조회할 수 없으므로 필수입니다.
-
특별한 이유가 없다면 FlashAlpha_Symbol 은 기본값( NEM ) 그대로 유지합니다.
무엇을 얻고 있는지 이해해야 합니다: FlashAlpha 무료 요금제는 실제 COMEX Gold Options를 제공하지 않습니다. 대신 유동성이 높고 금 가격과 상관관계가 있는 Proxy로 NEM (Newmont, 금광회사)이 사용됩니다.
지표는 Proxy 주식의 Strike Price를 골드 차트에 직접 표시하지 않습니다. Proxy의 net-gamma/GEX 값만 사용합니다.
따라서 Live API 모드의 Options Confluence는 관련 상품을 기반으로 하는 심리/포지셔닝 Proxy이며, 실제 골드 옵션 포지셔닝 자체가 아니라는 점을 이해하십시오.
무료 요금제 제한:
MaxDailyAPICalls = 5 / 하루
(FlashAlpha 자체의 쿼터와 별개로 지표가 자체적으로 적용하는 하드 제한)
RefreshIntervalHours = 4
(API 호출 사이의 최소 간격 4시간)
옵션 B — Barchart.com 월간 CSV (실제 골드 옵션, 수동 업데이트)
이는 Proxy가 아니라 실제 COMEX Gold(GC) 선물 옵션 데이터입니다.
-
Barchart의 Gold Futures Options Chain ( barchart.com/futures/quotes/GC*0/options )으로 이동하여 계약 월을 선택하고 Chain을 CSV로 다운로드합니다.
-
각 행에는 최소 13개의 쉼표로 구분된 열이 필요하며 다음과 같아야 합니다:
-
열 1 = strike
-
열 9 = volume
-
열 10 = open interest
-
열 13 = option type ( C 또는 P 로 시작해야 함)
-
헤더 행은 존재해도 되며 자동으로 건너뜁니다.
-
-
파일을 터미널의 데이터 폴더에 넣습니다: File → Open Data Folder → MQL5 → Files
-
CSV_File_Name 을 파일명과 정확히 일치하도록 설정합니다. 기본값: gcv26-options-monthly.csv
-
UseLiveAPI = false 로 설정합니다.
Weekly Strikes (선택적 추가 기능)
Weekly_Call_Strikes / Weekly_Put_Strikes 형식:
strike,openInterest,volume;strike,openInterest,volume;...
예:
4350,251,45;4400,36,12
사용하지 않는 경우 빈칸(기본값)으로 두십시오. 시스템은 안전하게 처리하며 오류를 발생시키지 않습니다.
Weekly_Weight (기본값 1.0)는 지표가 표시하는 모든 레벨에 대해 Weekly OI가 Monthly OI에 비해 어느 정도의 비중을 갖는지를 결정합니다:
Max Pain, Support, Resistance, BSL, SSL
옵션 표시 설정
| 파라미터 | 기본값 | 기능 |
|---|---|---|
| Min_OI_Threshold | 100 | Strike가 BSL/SSL 계산에 포함되기 위해 필요한 최소 Open Interest입니다. |
| Min_Volume_Threshold | 200 | 옵션 기반 레벨에 적용되는 최소 Volume 필터입니다. |
| Max_Pain_Buffer | 5 | 계산된 Max Pain 레벨 주변에서 허용되는 Strike 단위의 오차 범위입니다. |
| Max_Strikes_Processed | 100 | 처리되는 Strike의 최대 개수입니다. 현재 가격에 가장 가까운 Strike부터 로드합니다. |
| Max_Battle_Zones_Shown | 5 | 높은 OI의 “Battle Zone” 레벨에 대한 최대 표시 개수입니다. |
| Refresh_Hotkey | R | 차트에서 이 키를 누르면 옵션 데이터를 즉시 강제 새로고침합니다. |
| Auto_Refresh_Seconds | 60 | 새로고침이 필요한지 다시 확인하는 주기입니다. RefreshIntervalHours 와는 다릅니다. |
| UseOptionsConfluence | true | Options Confluence 스코어링 보너스의 메인 스위치입니다(두 모드 모두). |
| OptionsConfluenceATRMult | 0.5 | 보너스가 적용되기 위해 필요한 주요 옵션 레벨과의 근접 허용 범위(ATR 단위)입니다. |
| OptionsConfluenceBonus | 1 | 해당 보너스의 크기입니다. |
두 지표 모두 0–100으로 점수화됩니다.
-
Fundamental score: 0 = 금에 대해 Bearish, 100 = 금에 대해 Bullish
-
Sentiment score: 0 = 극단적 Fear, 100 = 극단적 Greed
-
기본값/중립값은 둘 다 50입니다.
이는 완전 자동이 아닌 하이브리드 점수 시스템입니다.
UseAutoFundamentals = true 라 하더라도 일부 구성 요소에는 무료 공개 데이터 피드가 없기 때문에 다음 값들은 항상 수동으로 입력해야 합니다.
| 수동 입력 | 내용 | 출처 |
|---|---|---|
| ManualFedStance | 0 = 매우 Hawkish … 100 = 매우 Dovish | 자체 판단 — 명확한 숫자형 피드는 존재하지 않음 |
| ManualCmeCutProb | 다음 회의 금리 인하 확률(CME FedWatch, 0–100) | cmegroup.com의 CME FedWatch Tool |
| ManualNFPActual / ManualNFPExpected | Non-Farm Payrolls, 실제값 vs 컨센서스(천 명) | 실제값은 BLS 제공; 컨센서스는 정부 데이터가 아님 |
| ManualADPActual / ManualADPExpected | ADP 고용, 실제값 vs 컨센서스(천 명) | NFP와 동일한 방식 |
| ManualGeoScore | 지정학적 긴장도, 0–100 | 자체 판단 |
| BPR_USBanksLong / BPR_USBanksShort | CFTC Bank Participation Report, COMEX Gold | cftc.gov의 월간 Bank Participation Reports |
UseAutoFundamentals = true 일 때 자동으로 가져오는 구성 요소:
-
Fed 대차대조표 (FRED)
-
CPI/PPI/실업률 (BLS)
-
브로커의 Oil Symbol 가격
감정 데이터의 경우 UseAutoSentiment = true 로 설정하면 다음을 가져옵니다:
-
CFTC Commitment of Traders (Disaggregated, Managed Money)
-
JM Bullion Fear & Greed Gauge
가장 간단한 방법:
UseAutoFundamentals = false UseAutoSentiment = false
그리고 다음 값을 직접 입력합니다:
FundamentalScore SentimentScore
두 값 모두 0–100 범위입니다.
이렇게 하면 외부 의존성을 완전히 제거할 수 있습니다.
FRED API Key 발급
-
fred.stlouisfed.org/docs/api/api_key.html 에서 무료로 등록합니다.
-
키를 FRED_API_Key 에 입력합니다.
이 키는 Fed 대차대조표 구성 요소에만 필요합니다.
필요한 URL을 화이트리스트에 추가
MT5에서:
Tools → Options → Expert Advisors → "Allow WebRequest for listed URL:" 체크 → 실제로 사용하는 각 도메인을 추가합니다.
https://publicreporting.cftc.gov https://www.jmbullion.com https://api.stlouisfed.org https://api.bls.gov https://lab.flashalpha.com
차단된 도메인이 있으면 추가해야 할 정확한 URL이 로그에 기록됩니다(오류 4014).
항상 먼저 Experts 로그를 확인하십시오.
FundamentalsRefreshHours / SentimentRefreshHours (각각 기본값 24)는 업데이트 주기를 제어합니다.
기초 데이터 자체가 주간 또는 월간으로만 업데이트되므로 하루에 한 번 업데이트하면 충분합니다.
