Ironframe SMC Gold Order Blocks Liquidity MT5
- 지표
- 버전: 1.37
Range-Bound Edition · v1.31
기관이 실제로 사용하는 시장 구조로 골드를 거래하세요
대부분의 리테일 Smart Money Concept(SMC) 도구는 한 가지 작업만 수행합니다. 차트에 오더 블록과 유동성 스윕을 표시한 뒤, 그것을 신뢰할지 여부는 트레이더에게 맡깁니다. Ironframe SMC Gold MT5: Order Blocks, Liquidity는 여기서 멈추지 않습니다.
이 시스템이 생성하는 모든 신호는 확인된 가격 행동 구조이며, 신호가 차트에 표시되기 전에 최대 3개의 추가적인 기관급 컨텍스트 레이어와 교차 검증됩니다. 여기에는 실제 옵션시장 포지셔닝, 거시경제 펀더멘털, 시장 심리가 포함됩니다. 이들을 하나의 명확한 신호로 통합하여, 서로 다른 3개의 인디케이터가 차트 위에서 서로 상충하는 상황을 피합니다.
이 시스템은 이미 오더 블록, 유동성 스윕, 공급/수요 구역을 이해하고 있으며, 단순히 구조를 그리는 것이 아니라 시장 구조를 검증하는 시스템을 원하는 트레이더를 위해 설계되었습니다.
무엇이 다른가
-
완전한 SMC 구조 엔진 — 오더 블록, 유동성 스윕, 공급/수요 구역을 모두 확인된 종가 기준 가격 행동으로 구축합니다. 캔들이 마감되는 순간 신호가 확정되며 이후 리페인트되지 않습니다.
-
단순한 구조가 아닌 다층 확인. 모든 구조적 신호는 차트에 표시되기 전에 다이버전스, 익조스천(Exhaustion), 흡수(Absorption) 탐지 결과와 교차 검증됩니다. 따라서 단순한 패턴 일치가 아니라 가격 구조와 오더플로우 행동이 서로 일치하는지를 확인합니다.
-
실제 옵션시장 컨플루언스. COMEX Gold 선물 옵션 데이터에서 실제 Open Interest, Max Pain 및 유동성 레벨을 직접 가져옵니다. 합성 데이터가 아니라 실제 골드 옵션시장에서 대규모 포지션이 어디에 위치하는지를 확인할 수 있습니다.
-
거시환경 인식 설계. 내장된 파이프라인이 연준(Fed) 대차대조표, CPI/PPI 및 고용 데이터를 읽어 더 넓은 거시 레짐과 신호가 정렬되도록 합니다.
-
시장 심리 반영. CFTC Commitment of Traders(COT) 포지셔닝과 시장 Fear & Greed를 통해 실질적인 역추세 필터를 제공합니다. 극단적인 심리 수치는 진입 허가가 아니라 반대 방향의 기회로 취급됩니다.
-
목적에 맞게 설계된 2가지 모드. 추세 환경을 위한 점수 기반 Conservative Mode와 횡보/박스권 시장을 위한 Range-Bound Mode가 있습니다. 본 빌드에서는 Range-Bound Mode가 기본값이며, 구조와 평균회귀가 모멘텀보다 중요한 시장을 대상으로 전략 테스트를 통해 조정되었습니다.
-
즉시 사용 가능하며 확장 가능. 위의 모든 고급 레이어는 선택 사항입니다. 별도의 설정 없이 적용하면 첫 번째 바부터 검증된 구조만으로 작동합니다. 필요할 때 옵션 데이터, 거시 데이터 또는 심리 데이터를 추가할 수 있습니다. 코어 엔진 외의 어떤 기능도 신호 생성에 필수적이지 않습니다.
이 매뉴얼은 최초 실행을 위한 무설정 시작부터 모든 선택적 데이터 소스를 단계적으로 추가하는 방법까지 필요한 모든 설정을 다룹니다.
1. 빠른 시작
-
.mq5 파일을 MT5의 MQL5\Indicators 폴더에 복사합니다. (MT5에서 File → Open Data Folder 선택) 이후 MetaEditor에서 컴파일합니다.
-
골드 차트에 적용합니다. 다른 종목에서도 작동하지만, 이 파일의 모든 기본값과 설명은 XAU를 기준으로 합니다.
-
모든 입력값을 기본값으로 유지합니다. 본 빌드는 Range-Bound Mode로 제공되며, 이 모드에 맞춰 조정되었습니다. 다이버전스 탐지는 활성화되어 있지만 차트상의 마커는 숨겨져 있습니다. 그 이유는 Section 2를 참고하십시오.
-
적용 후 Experts 로그를 확인합니다. 자동 펀더멘털/심리 데이터 가져오기에 실패하면 명확하게 표시되며, 차트의 정보 패널에서는 현재 모드, 레짐, 신호 점수 상태를 한눈에 확인할 수 있습니다.
-
옵션시장 컨플루언스를 사용하려면 Section 11에서 하나의 경로를 선택합니다. 사용하지 않는다면 완전히 건너뛰어도 됩니다. 옵션 데이터가 없어도 인디케이터는 정상적으로 작동합니다.
2. 신호 모드
enum ENUM_SIGNAL_MODE { MODE_CONSERVATIVE, MODE_RANGEBOUND };
-
Conservative Mode(보수 모드) — 포인트 기반 점수 시스템입니다. 오더 블록, 스윕, 다이버전스, 익조스천, 흡수, 클러스터 컨플루언스 및 옵션 컨플루언스가 각각 점수에 추가됩니다. 총점이 MinSignalScore (기본값 4)를 넘을 때만 신호가 발생합니다. 이 모드에서는 레짐 필터(Section 12의 펀더멘털/심리 판단)가 현재의 시장 방향성과 반대되는 신호를 차단합니다.
-
Range-Bound Mode(레인지 모드) (본 빌드의 기본 모드) — 하나의 구조 조건(오더 블록 또는 유효한 수요/공급 구역), 하나의 확인 조건(다이버전스, 익조스천 또는 흡수), 그리고 RangeBoundMinScore (기본값 2)의 최소 점수를 요구합니다. 이 값은 기존의 항상 활성화된 게이트를 정확히 재현하는 값입니다. Cluster/Options 컨플루언스가 더 큰 영향을 주기를 원하는 경우에만 값을 높이십시오. 이 모드에서는 레짐 필터가 방향을 차단하지 않습니다. 즉, 펀더멘털/심리 방향성과 관계없이 매수와 매도 양방향이 활성 상태로 유지됩니다.
중요 — RequireDivergence , RequireOrderBlock , RequireSweep 를 변경하기 전에 반드시 읽으십시오.
이 3개의 설정은 Conservative Mode에서만 적용됩니다. 기본값인 Range-Bound Mode에서는 이 입력값들이 전혀 작동하지 않습니다. 따라서 Range-Bound Mode에서는 이들을 조정하는 데 시간을 사용할 필요가 없습니다. RequireDivergence 는 향후 Conservative Mode로 다시 전환하더라도 일관된 동작을 유지하도록 기본값이 false 로 설정되어 있습니다.
3. 핵심 구조 탐지
| 입력값 | 기본값 | 제어 내용 |
|---|---|---|
| SwingWing | 3 | 스윙 고점/저점을 확인하기 위해 캔들 양쪽에 필요한 바 수. 낮을수록 더 많은 스윙이 생성되고 노이즈가 증가하며, 높을수록 스윙 수는 줄지만 더 중요한 스윙만 남습니다. |
| SwingLookback | 100 | 다이버전스 또는 스윕 구조를 확인할 때 과거 스윙 포인트를 검색하는 범위. |
| ATRPeriod | 14 | 인디케이터의 거의 모든 거리 기반 임계값을 조정하는 ATR 기간. 디스플레이스먼트, 익조스천, 흡수, 다이버전스 스윙 필터 등에 사용됩니다. |
| OBDisplacementMult | 1.0 | 캔들이 오더 블록의 디스플레이스먼트 캔들로 인정되기 위해 필요한 최소 실체 크기/ATR 비율. |
| OBMaxWickRatio | 0.3 | 해당 디스플레이스먼트 캔들의 전체 레인지에서 허용되는 최대 윗/아랫꼬리 비율(0–1). 레인지는 크지만 대부분이 꼬리인 캔들을 실제 디스플레이스먼트로 인식하지 않도록 필터링합니다. |
| SDMoveMultiple | 3.0 | 이후의 폭발적인 움직임이 기준 캔들 레인지의 몇 배에 도달해야 공급/수요 구역으로 인정되는지 결정합니다. |
| EquilibriumBandPct | 0.05 | 감지된 레인지의 50% 레벨 주변에 설정되는 Equilibrium(균형) 밴드의 폭. |
4. 확인 탐지기
| 입력값 | 기본값 | 제어 내용 |
|---|---|---|
| EnableExhaustion | true | 익조스천 탐지기의 메인 스위치. |
| ExhaustionWickMult | 0.6 | 캔들이 익조스천으로 인정되기 위해 필요한 최소 꼬리/레인지 비율. |
| ExhaustionBodyMult | 0.3 | 해당 꼬리 조건과 함께 허용되는 최대 실체/레인지 비율. |
| EnableAbsorption | true | 흡수 탐지기의 메인 스위치. |
| AbsorptionVolFactor | 1.5 | 캔들이 흡수로 인정되기 위해 필요한 최소 거래량/평균거래량 배수. |
| AbsorptionRangeFactor | 0.8 | ATR 대비 허용되는 최대 레인지 비율. 흡수 = 높은 거래량 + 작은 가격 범위. |
| AbsorptionRejectPct | 0.2 | 필요한 최소 꼬리 거부 비율. |
| EnableDivergence | true | 다이버전스 탐지기의 메인 스위치. DrawDivergenceMarks 를 꺼도 그대로 활성화해야 합니다. |
| DrawDivergenceMarks | false(본 빌드) | 시각적 표시 전용입니다. 차트의 DIV_ 마커를 표시하거나 숨길 뿐이며 신호 생성에는 영향을 주지 않습니다. |
| DivergenceMinSwingATR | 1.0 | 두 스윙을 다이버전스로 비교하기 전에 요구되는 최소 가격 차이(ATR 기준). 노이즈 수준의 스윙을 제거합니다. |
| MaxTickBars | 50 | 다이버전스 계산에 실제 매수/매도 Tick Delta를 사용할 수 있는 최근 바 수. 이보다 오래된 바는 자동으로 Raw Tick Volume으로 전환됩니다. |
5. Cluster 컨플루언스
| 입력값 | 기본값 | 제어 내용 |
|---|---|---|
| UseClusterScoring | true | 하나의 바에서 여러 확인 조건이 동시에 발생할 경우 추가 점수를 부여할지 여부. |
| MinClusterSignals | 3 | 보너스를 발생시키기 위해 동시에 일치해야 하는 확인 조건 수. |
| ClusterBonusScore | 2 | 신호 점수에 추가되는 보너스 점수. |
6. Supply & Demand Zones
| 입력값 | 기본값 | 제어 내용 |
|---|---|---|
| DrawSupplyDemandZones | true | 구역 표시 엔진의 메인 스위치. |
| SDLookback | 100 | 조건을 충족하는 “베이스 + 폭발적 움직임” 패턴을 찾기 위해 과거로 검색하는 바 수. |
| SDMaxBaseCandles | 4 | 폭발적 움직임 이전에 허용되는 베이스(통합/횡보) 캔들의 최대 수. |
| SDDisplacementMult | 0.5 | 구역에서 이탈하는 폭발적 움직임에 필요한 최소 실체/ATR 비율. OBDisplacementMult 와 별개이며 더 완화된 조건입니다. 구역과 오더 블록은 독립적으로 탐지됩니다. |
| SDMaxZonesShown | 3 | 차트에 동시에 표시할 수 있는 최대 구역 수. |
| SupplyZoneColor / DemandZoneColor | Red / Blue | 차트 표시 색상. |
7. 상위 시간 프레임 필터
| 입력값 | 기본값 | 제어 내용 |
|---|---|---|
| UseHTFFilter | true | 신호 발생 전에 상위 시간 프레임 방향성과의 일치를 요구할지 여부. |
| HTFTimeframe | H4 | 확인할 상위 시간 프레임. |
| HTFLookbackBars | 20 | 추세 방향을 판단할 때 과거의 확정 H4 바를 몇 개까지 확인할지 결정합니다. |
| HTFNeutralPct | 0.05 | HTF 추세가 거의 평평한 것으로 간주되어 롱과 숏 어느 쪽도 차단하지 않는 범위. |
8. 세션 필터
| 입력값 | 기본값 | 제어 내용 |
|---|---|---|
| AllowedSession | SESSION_ALL | 신호를 특정 세션으로 제한합니다: SESSION_ALL , SESSION_LONDON , SESSION_NEWYORK , SESSION_LONDON_NY . |
| UTCOffsetHours | 0 | 브로커 서버 시간이 UTC가 아닌 경우 조정합니다. |
9. 신호 쿨다운 & 오래된 구역의 감쇠
| 입력값 | 기본값 | 그룹 | 제어 내용 |
|---|---|---|---|
| SignalCooldownBars | 5 | Signal Cooldown | 동일 구역에서 두 신호 사이에 필요한 최소 바 수. 가격이 충분히 이동하지 않은 경우 최소 가격 거리 조건도 사용하여 동일 레벨이 반복적으로 신호를 내는 것을 방지합니다. |
| MaxBarAgeForSignal | 25 | Stale Zone Decay | 오더 블록이 새로운 신호의 유효한 구조로 인정될 수 있는 최대 경과 바 수. 이 값은 화살표가 표시되는지 여부를 결정하며, Section 13의 알림 타이밍 설정과는 다릅니다. |
10. 리스크 관리 프로토콜
강세 또는 약세 오더 블록이 탐지되면 차트에 TP1 / TP2 / TP3와 BE 기준선이 표시됩니다. 기본 Fibonacci 확장값은 1.618 / 2.618 / 4.236입니다.
차트에 표시된 규칙은 정확히 다음과 같습니다: TP1이 발생하면 손절을 브레이크이븐으로 이동하십시오. 오더 블록 신호가 발생하는 즉시 이동하는 것이 아닙니다.
BE 라인은 오더 블록의 끝부분에 고정된 참고 레벨입니다. 실제로 손절을 이동해야 하는 트리거는 TP1 도달입니다. 이 작업은 트레이더가 직접 수동으로 수행해야 하며, 인디케이터가 손절을 자동으로 변경하지는 않습니다.
| 입력값 | 기본값 |
|---|---|
| EnableFibTargets | true |
| FibTP1 / FibTP2 / FibTP3 | 1.618 / 2.618 / 4.236 |
| FibTP1Color / FibTP2Color / FibTP3Color | Yellow / Orange / Red |
| TrailBEColor | White |
11. 옵션 컨플루언스 — 2가지 데이터 소스
“Options Liquidity Confluence” 스코어 보너스에 실제 옵션시장 데이터를 제공하는 방법은 2가지입니다. 둘 중 하나만 사용하면 됩니다. 두 가지 모두 사용하지 않아도 인디케이터는 정상적으로 작동합니다.
Option A — FlashAlpha Live API(편리하지만 프록시)
-
lab.flashalpha.com 에서 무료 API 키를 발급받습니다.
-
UseLiveAPI = true 로 설정하고 키를 FlashAlpha_API_Key 에 입력합니다.
-
FlashAlpha_Expiration 에 원하는 만기일을 yyyy-MM-dd 형식으로 입력합니다. 무료 요금제에서는 “모든 만기”를 한 번에 조회할 수 없으므로 필수 설정입니다.
-
특별한 이유가 없다면 FlashAlpha_Symbol 은 기본값인 NEM 을 그대로 유지합니다.
실제로 어떤 데이터를 얻는지 반드시 이해해야 합니다.
FlashAlpha 무료 요금제는 실제 COMEX Gold 옵션을 제공하지 않습니다. 따라서 유동성이 있고 골드와 상관관계가 있는 **NEM(Newmont, 금광업 주식)**을 프록시로 사용합니다.
인디케이터는 프록시 주식의 Strike 가격을 골드 차트에 직접 표시하지 않습니다. 대신 프록시의 Net Gamma/GEX 값을 사용합니다.
따라서 Live API 모드의 “Options Confluence”는 관련 자산에서 얻는 시장심리 프록시이며, 실제 골드 옵션 포지셔닝 자체는 아닙니다.
Option B — Barchart.com 월간 CSV(실제 골드 옵션, 수동 업데이트)
이는 프록시가 아닌 실제 COMEX Gold(GC) 선물 옵션 데이터입니다.
-
Barchart의 Gold futures options chain( barchart.com/futures/quotes/GC*0/options )으로 이동하여 계약월을 선택한 다음 체인을 CSV로 다운로드합니다.
-
각 행에는 최소 13개의 쉼표로 구분된 열이 필요합니다.
-
1열 = Strike
-
9열 = Volume
-
10열 = Open Interest
-
13열 = Option Type ( C 또는 P 로 시작해야 함; 헤더 행은 자동으로 건너뜁니다)
-
-
파일을 MT5의 전용 데이터 폴더에 저장합니다: File → Open Data Folder → MQL5 → Files
-
CSV_File_Name 을 실제 파일명과 정확히 일치하도록 설정합니다. 기본값은 gcv26-options-monthly.csv 입니다.
-
UseLiveAPI = false 로 설정합니다.
위의 열 위치(1, 9, 10, 13)는 코드가 정확히 요구하는 위치입니다. 다만 Barchart 사이트에서 각 “View” 설정을 사용할 때의 정확한 웹 내보내기 열 순서는 여기서 독립적으로 검증되지 않았습니다. 다운로드한 파일의 열 순서가 맞지 않으면 Excel에서 열을 재정렬한 뒤 저장하십시오.
Options 표시 설정
| 입력값 | 기본값 | 제어 내용 |
|---|---|---|
| Min_OI_Threshold | 100 | BSL/SSL에 포함되기 위해 필요한 최소 Open Interest. |
| Min_Volume_Threshold | 200 | 옵션 기반 레벨에 적용되는 최소 Volume 필터. |
| Max_Pain_Buffer | 5 | 계산된 Max Pain 레벨 주변의 허용 오차 범위(Strike 기준). |
| Max_Strikes_Processed | 100 | 처리할 수 있는 최대 Strike 수. 현재 가격과 가까운 순서로 처리합니다. |
| Max_Battle_Zones_Shown | 5 | 고 OI “Battle Zone” 레벨을 차트에 동시에 표시할 수 있는 최대 수. |
| Refresh_Hotkey | R | 차트에서 이 키를 누르면 옵션 데이터를 즉시 새로고침합니다. |
| Auto_Refresh_Seconds | 60 | 업데이트가 필요한지 확인하는 주기(초). RefreshIntervalHours 와는 다른 설정입니다. |
| UseOptionsConfluence | true | 옵션 컨플루언스 점수 보너스의 메인 스위치(두 모드 모두 적용). |
| OptionsConfluenceATRMult | 0.5 | 가격이 핵심 옵션 레벨과 ATR 몇 배 이내에 있을 때 보너스를 적용할지 결정합니다. |
| OptionsConfluenceBonus | 1 | 옵션 컨플루언스에 의해 추가되는 점수. |
12. 자동 펀더멘털 & 시장심리
두 점수 모두 0–100 범위입니다.
-
Fundamental Score: 0 = 골드에 약세, 100 = 골드에 강세.
-
Sentiment Score: 0 = 극도의 공포(Fear), 100 = 극도의 탐욕(Greed).
-
기본/중립값은 모두 50입니다.
레짐 판정에는 역추세 오버라이드가 내장되어 있습니다.
-
Sentiment ≥85이고 Fundamentals <80 → 약세로 전환(극단적인 탐욕을 역추세)
-
Sentiment ≤15이고 Fundamentals >20 → 강세로 전환(극단적인 공포를 역추세)
-
그 외:
-
어느 한 점수라도 70 초과 → 강세 바이어스
-
어느 한 점수라도 35 미만 → 약세 바이어스
-
이 레짐 피드는 Conservative Mode에서만 방향을 제한합니다. Range-Bound Mode에서는 정보 제공용으로만 사용됩니다.
이 점수들은 완전 자동 점수가 아니라 하이브리드 점수입니다.
UseAutoFundamentals = true 로 설정하더라도 무료 공개 데이터 피드가 없는 일부 구성요소는 항상 수동 입력해야 합니다.
| 수동 입력 | 내용 | 출처 |
|---|---|---|
| ManualFedStance | 0 = 매우 매파적 … 100 = 매우 비둘기파적 | 직접 판단 — 깔끔한 수치 데이터가 존재하지 않음 |
| ManualCmeCutProb | 다음 회의 금리인하 확률(0–100) | cmegroup.com CME FedWatch Tool |
| ManualNFPActual / ManualNFPExpected | 비농업고용지표, 실제값 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 Balance Sheet(FRED)
-
CPI/PPI/실업률(BLS)
-
브로커의 Oil 심볼 가격
UseAutoSentiment = true 일 때 자동으로 가져오는 구성요소:
-
CFTC Commitment of Traders(Disaggregated, Managed Money)
-
JM Bullion Fear & Greed 게이지
가장 간단한 방법: UseAutoFundamentals = false 및 UseAutoSentiment = false 로 설정하고 FundamentalScore / SentimentScore (0–100)를 직접 입력하십시오. 이렇게 하면 외부 종속성이 전혀 필요하지 않습니다.
FRED API 키 받기
-
fred.stlouisfed.org/docs/api/api_key.html 에서 무료 등록합니다.
-
FRED_API_Key 에 키를 입력합니다. 이는 Balance Sheet 구성요소에만 필요합니다.
필요한 URL을 화이트리스트에 추가
MT5에서: Tools → Options → Expert Advisors → “Allow WebRequest for listed URL:” 체크 → 실제 사용하는 각 도메인을 추가합니다.
13. 알림
| 입력값 | 기본값 | 제어 내용 |
|---|---|---|
| AlertOnSignal | true | 새로운 신호가 발생하면 터미널 팝업 알림을 표시합니다. |
| SendPushNotification | false | MetaTrader 앱을 통해 푸시 알림을 전송합니다. |
| SuppressAlertsOnBackfill | true | 차트를 적용하거나 재컴파일할 때 과거 바를 재계산하는 동안에는 과거 신호에 대한 알림을 절대 보내지 않습니다. |
| MaxSignalAgeBarsForLog | 25 | 신호가 발생한 바의 종가가 이 값보다 많은 바 이전이라면 알림을 보내지 않습니다. 이는 백필 체크와 독립적인 설정이며, 데이터 공백이나 일시적인 연결 끊김으로 신호가 늦게 도착하더라도 지정된 바 수 이내라면 알림이 발생합니다. |

