SMC Ultimate
- 지표
-
Ahmed Hamed Hamed Eadwan
KOREAN TRANSLATION — 한국어
==============================
TITLE:
MQL5 개발자 & 트레이더 | R protocols 창립자
ABOUT:
안녕하세요, 저는 Ahmed입니다. 아랍에미리트에 기반을 둔
트레이더이자 MQL5 개발자이며, R protocols의 창립자입니다.
1984년부터 코드를 작성해 왔고, 2006년부터 시장에서 거래를
해왔습니다. 수년 동안 실제 시장 경험을 통해 개선하며 - 버전: 1.0
- 활성화: 5
SMC Ultimate
MetaTrader 5용 기관급 Smart Money Concepts (SMC) / ICT 의사결정 엔진입니다. 시장 구조, 유동성, Order Block, Fair Value Gap을 분석하여 점수, 인코딩된 상태, 확정 Buy/Sell 신호로 변환합니다.
대시보드, 차트 객체, 알림과 함께 단독으로 완전히 동작합니다. 또한 안정적인 4버퍼 계약과 고정된 88개 입력으로 신뢰할 수 있는 iCustom 연동을 통해 EA에 바로 사용할 수 있습니다.
첫 공개 릴리스(버전 1.0) 런치 가격입니다. 초기 업데이트와 리뷰 이후 가격이 인상될 수 있습니다.
주요 기능
- HTF 및 LTF 시장 구조: 스윙, BOS, CHoCH
- 유동성 맵: equal high/low 및 스윕 감지
- 터치/무효화 상태가 포함된 Order Block 및 Fair Value Gap
- Premium / Discount 컨텍스트 점수
- 히스테리시스 잠금이 있는 가중 다요인 의사결정 점수
- Anti-Repaint: 확정 신호는 종가 봉(shift 1)에 고정
- 차트 대시보드: 추세, 존, 점수, 신호, 버퍼 표시
- 알림: 팝업, 사운드, 푸시(쿨다운 및 봉당 1회)
- EA Mode: 드로잉 비활성화 후 호환 EA에 데이터 공급
- ChartID 기반 안전 객체 접두사(다중 인스턴스)
- EQH/EQL 및 FVG용 선택적 ATR 적응 허용치
- 스프레드 필터, 세션/요일 필터, 센트 계좌 모드
신호 작동 방식
구조 및 유동성 엔진은 종가 봉 로직으로 갱신됩니다. 컨텍스트는 가격을 Premium, Discount 또는 Neutral로 분류합니다. 의사결정 엔진은 설정 가능한 가중치로 상한이 있는 점수를 만듭니다. 선택적 Strict-SMC 스윕 규칙은 저품질 진입을 걸러냅니다. Anti-Repaint가 켜진 경우(기본값) 확정 Buy/Sell은 shift 1에 고정되며 봉 마감 후 다시 쓰이지 않습니다. 화살표는 확정된 종가 봉에만 표시되며, 형성 중인 봉에는 표시되지 않습니다.
Anti-Repaint 및 Two-Pass
Anti-Repaint는 핵심 무결성 기능이며 기본값이 ON입니다. 확정된 과거 신호는 봉 마감 후에도 고정됩니다.
Two-Pass Mitigation은 실험 기능이며 기본값이 OFF입니다. 과거 OB/FVG 무효화 정확도를 개선할 수 있습니다.
둘 다 켜져 있으면 Anti-Repaint가 자동으로 우선합니다:
- 현재 세션에서 Two-Pass 비활성화
- input 값은 절대 변경되지 않음(88슬롯 EA 계약 유지)
- Experts 로그에 경고 기록
- GUI가 허용되면 차트 Alert 표시
- 대시보드 표시: 2-Pass:OFF(AR-Override)
의도적으로 Two-Pass를 쓰려면 Anti-Repaint = false로 설정하세요. 완전한 이중 모드 병합은 향후 업데이트에서 계획되어 있습니다.
대시보드
- LTF 및 HTF 추세
- extreme 태그가 있는 Premium-Discount 존
- Swing, BOS, CHoCH, Sweep 카운터
- 활성 OB 및 FVG 개수
- 점수 및 신호: BUY, SELL 또는 No Signal
- 히스테리시스 잠금 상태
- Anti-Repaint 및 실제 Two-Pass 상태
- 스프레드, 객체 수, HTF 피드 상태
- 버퍼 읽기: Score, Signal, State
EA 버퍼
Expert Advisor 및 사용자 도구용 인디케이터 버퍼 4개:
- Buffer 0 - SMC_BUY: 확정 BUY 시 1.0 (shift 1만)
- Buffer 1 - SMC_SELL: 확정 SELL 시 1.0 (shift 1만)
- Buffer 2 - SMC_SCORE: 의사결정 강도, 소프트 캡 약 +/-200
- Buffer 3 - SMC_STATE: 인코딩된 HTF/LTF 추세 및 스윕; 스프레드 차단 시 +100000
확정 Buy/Sell은 shift 1에만 기록됩니다. shift 0의 Score/State는 bar-1 컨텍스트의 실시간 미리보기입니다. 시간 필터는 Buy/Sell을 억제하지만 State는 유지합니다. 88개 입력 배치는 고정되어 위치 기반 iCustom 읽기가 안정적으로 유지됩니다.
iCustom 연동 (EA 코드 스타일)
Market 설치 후 Navigator에 표시되는 정확한 인디케이터 이름을 사용하세요. 예: Market\SMC Ultimate. 확정 진입은 shift 1만 사용합니다. 버퍼 배치는 고정입니다:
- 0 = SMC_BUY
- 1 = SMC_SELL
- 2 = SMC_SCORE
- 3 = SMC_STATE
확정 신호는 항상 shift 1에서 읽으세요.
입력: 위치 슬롯 88개. 순서를 바꾸지 마세요. 41-46은 예약 슬롯입니다. 생략한 끝 입력은 기본값을 유지합니다.
MQL5 코드 (EA 스켈레톤)
#define SMC_BUF_BUY 0
#define SMC_BUF_SELL 1
#define SMC_BUF_SCORE 2
#define SMC_BUF_STATE 3
#define SMC_SHIFT_CONFIRMED 1
#define SMC_SPREAD_BLOCK_MARK 100000.0
int g_smc_handle = INVALID_HANDLE;
datetime g_smc_last_bar = 0;
int OnInit()
{
g_smc_handle = iCustom(_Symbol, PERIOD_CURRENT, "Market\\SMC Ultimate");
if(g_smc_handle == INVALID_HANDLE)
{
Print("SMC Ultimate: iCustom failed, error=", GetLastError());
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
// Optional: pass inputs by frozen 88-slot order only if needed
// g_smc_handle = iCustom(_Symbol, PERIOD_CURRENT, "Market\\SMC Ultimate", ...);
// Enable EA Mode in indicator inputs for chart-less EA use.
bool SMC_Read(const int buffer_index, const int shift, double &out_value)
{
out_value = EMPTY_VALUE;
if(g_smc_handle == INVALID_HANDLE) return false;
double tmp[];
ArraySetAsSeries(tmp, true);
if(CopyBuffer(g_smc_handle, buffer_index, shift, 1, tmp) != 1)
return false;
out_value = tmp[0];
return true;
}
bool SMC_IsValidNum(const double v)
{
return (v != EMPTY_VALUE && MathIsValidNumber(v));
}
bool SMC_DecodeState(double state_raw,
bool &spread_blocked,
int &htf_trend,
int <f_trend,
int &sweep_enc)
{
spread_blocked = false;
htf_trend = 0; ltf_trend = 0; sweep_enc = 0;
if(!SMC_IsValidNum(state_raw)) return false;
double s = state_raw;
if(s >= SMC_SPREAD_BLOCK_MARK)
{
spread_blocked = true;
s -= SMC_SPREAD_BLOCK_MARK;
}
int sv = (int)MathRound(s);
htf_trend = sv / 100 - 1; // -1 bear, 0 flat, +1 bull
ltf_trend = (sv % 100) / 10 - 1; // -1 bear, 0 flat, +1 bull
sweep_enc = sv % 10; // 0 none, 1 buy-side, 2 sell-side
return true;
}
void OnTick()
{
datetime t[];
ArraySetAsSeries(t, true);
if(CopyTime(_Symbol, PERIOD_CURRENT, 0, 2, t) != 2) return;
if(t[0] == g_smc_last_bar) return;
g_smc_last_bar = t[0];
double buy=0, sell=0, score=0, state=0;
if(!SMC_Read(SMC_BUF_BUY, SMC_SHIFT_CONFIRMED, buy)) return;
if(!SMC_Read(SMC_BUF_SELL, SMC_SHIFT_CONFIRMED, sell)) return;
if(!SMC_Read(SMC_BUF_SCORE,SMC_SHIFT_CONFIRMED, score)) return;
if(!SMC_Read(SMC_BUF_STATE,SMC_SHIFT_CONFIRMED, state)) return;
bool spread_blocked; int htf, ltf, sweep;
if(!SMC_DecodeState(state, spread_blocked, htf, ltf, sweep)) return;
if(spread_blocked) return;
const bool is_buy =
SMC_IsValidNum(buy) && buy > 0.5 && buy < 1.0e10;
const bool is_sell =
SMC_IsValidNum(sell) && sell > 0.5 && sell < 1.0e10;
if(is_buy)
{
PrintFormat("SMC BUY confirmed | score=%.0f htf=%d ltf=%d sweep=%d",
score, htf, ltf, sweep);
// --- risk + OrderSend / trade.Buy() ---
}
else if(is_sell)
{
PrintFormat("SMC SELL confirmed | score=%.0f htf=%d ltf=%d sweep=%d",
score, htf, ltf, sweep);
// --- risk + OrderSend / trade.Sell() ---
}
}
void OnDeinit(const int reason)
{
if(g_smc_handle != INVALID_HANDLE)
{
IndicatorRelease(g_smc_handle);
g_smc_handle = INVALID_HANDLE;
}
}
연동 규칙
- shift 1의 Buy/Sell만 거래하고, 절대 shift 0을 사용하지 마세요
- shift 0의 Score/State는 모니터링용 미리보기이며 최종 진입이 아닙니다
- EMPTY_VALUE / 잘못된 숫자 = 확정 신호 없음
- State >= 100000이면 100000을 빼고 신규 진입을 하지 마세요(스프레드 차단)
- State 인코딩: (htf+1)*100 + (ltf+1)*10 + sweepEnc
- EA가 패널/객체 없이 동작해야 하면 EA Mode를 켜세요
- CopyBuffer 반환값을 항상 확인하세요
- 로트, SL/TP, 자금 관리는 EA 내부에만 두세요
SMC Ultimate는 의사결정 버퍼를 제공합니다. 체결과 리스크는 사용자의 EA 책임입니다.
권장 시작 설정
- 작업 타임프레임에 부착 (흔히 M15-H1, 모든 TF 지원)
- Anti-Repaint = true 유지
- 의도적 필요가 없으면 Two-Pass = false 유지
- 심볼에 맞게 MaxSpread 설정
- 라이브 관찰 후에만 MinDecisionScore와 가중치 조정
- EA 사용: EA Mode를 켜고 iCustom으로 4개 버퍼 읽기
모범 사례
- 보장된 매매 프린터 가 아니라 의사결정 엔진으로 취급하세요
- 확신도 향상: HTF 정렬 + 지지 스윕 + 비극단 존
- 브로커 스프레드와 본인 리스크 한도를 항상 존중하세요
- Strategy Tester에서 객체/알림 확인 시 Visual 모드 사용
- 차트당 1개 인스턴스가 이상적입니다. 다중 인스턴스는 ChartID로 격리됩니다
입력 그룹 (총 88개, 순서 고정)
- 보안: 스프레드, Strict SMC, Anti-Repaint, EA Mode
- 거래 시간 및 요일 필터
- ATR 적응 허용치
- 의사결정 점수 가중치
- 핵심 구조: HTF, swing strength, lookback
- 의사결정 임계값 및 존 무효화(실험적 Two-Pass 포함)
- 고정 모드 상수
- EA 호환 예약 슬롯
- 차트 객체 한도
- 시각, 알림, 대시보드 레이아웃
- 색상 및 로깅
위치 기반 연동 시 예약 슬롯을 재정렬, 삭제 또는 전용 변경하지 마세요.
버전 1.0
MQL5 Market 첫 공개 릴리스입니다. 전체 SMC/ICT 스택, Anti-Repaint 스냅샷 엔진, AR 충돌을 능동적으로 해결하는 실험적 Two-Pass, 4버퍼 EA 계약, 고정 88 입력, ChartID 다중 인스턴스 접두사, ATR 적응, 기관급 대시보드, 스프레드/세션/히스테리시스 제어를 포함합니다.
지원
작성자 프로필의 MQL5.org 메시지 시스템을 이용하세요. 심볼, 타임프레임, 입력 스크린샷, Experts 탭 메시지를 함께 보내 주시고 합리적인 응답 시간을 기다려 주세요.
면책 조항
거래에는 손실 위험이 있습니다. 과거 구조 패턴이 미래 결과를 보장하지 않습니다. SMC Ultimate는 분석형 의사결정 지원 인디케이터이며 금융 자문이 아닙니다. 리스크 관리와 주문 체결 책임은 전적으로 사용자에게 있습니다.
