Single Arrow MTF
- 지표
-
Ahmed Hamed Hamed Eadwan
KOREAN TRANSLATION — 한국어
==============================
TITLE:
MQL5 개발자 & 트레이더 | R protocols 창립자
ABOUT:
안녕하세요, 저는 Ahmed입니다. 아랍에미리트에 기반을 둔
트레이더이자 MQL5 개발자이며, R protocols의 창립자입니다.
1984년부터 코드를 작성해 왔고, 2006년부터 시장에서 거래를
해왔습니다. 수년 동안 실제 시장 경험을 통해 개선하며 - 버전: 1.0
- 활성화: 5
파일 하나. 화살표 하나. 의사결정 하나.
SingleArrow MTF는 MetaTrader 5용 전문가급 자체 완결형 다이버전스 신호 지표입니다. 전용 선형 시간 ZigZag 엔진, 레그 분리를 갖춘 Williams %R 다이버전스 필터, 선택적 피벗 보호 레이어, 멀티 타임프레임 합의 대시보드, 자동 지지/저지를 하나로 결합——모두 단일 파일로 컴파일되며 외부 지표, 라이브러리, DLL이 필요 없습니다.
이런 분께
- 날것의 오실레이터 대신 깔끔하고 규칙 기반인 다이버전스 화살표를 원하는 재량 트레이더.
- 기계 판독 가능하고 리페인트에 투명한 신호 소스(버퍼 + GlobalVariable 채널)가 필요한 EA 개발자.
- 확인되고 히스토리에서 안정적인 신호 스트림(Confirm 모드)이 필요한 백테스터·전략가.
아키텍처 한눈에
- 구조 레이어: 내장 ZigZag 엔진이 가격에서 피벗을 추출.
- 분석 레이어: Williams %R 다이버전스 필터가 레그 분리 상태로 각 피벗 쌍을 검증.
- 표현 레이어: 화살표, MTF 대시보드, S/R 레벨, 알림, 투명성 카운터.
1) 내장 ZigZag 엔진(왜 플랫폼 기본이 아닌가?)
- 선형 시간 O(n): 로드된 히스토리 전체를 단일 패스로 처리. 새 tick마다 O(1) 작업만 소요되어 빠른 tick과 깊은 히스토리에서도 가볍습니다.
- 고전의 3파라미터, 현대적 코어: Deviation / Depth / Backstep은 익숙한 의미를 유지하고, 내부 피벗 관리(유한 Backstep 억제, 피벗 앞쪽 삽입 안전화)는 처음부터 구현되어 엣지 케이스에 대해 강화되었습니다.
- iCustom 없음, 누락 버퍼 없음: 엔진이 내장되어 신호 파이프라인은 차트나 터미널 폴더의 다른 지표 존재에 절대 의존하지 않습니다. 컴파일된 EX5는 Market 대여를 포함해 어디서나 동작합니다.
- 결정론적: 동일한 파라미터는 모든 차트, 종목, 터미널 빌드에서 동일한 피벗을 생성합니다.
2) 레그 분리를 갖춘 Williams %R 다이버전스
오실레이터의 수준 교차만으로는 여기서 신호가 아닙니다. 지표는 같은 구간에서 가격 레그(피벗 간 이동)와 오실레이터 레그를 비교합니다:
- 베어리시 다이버전스: 가격이 더 높은 고점을 만들 때 Williams %R 레그가 더 낮은 고점을 만들면 → 확인된 고점에 매도 화살표.
- 불리시 다이버전스: 가격이 더 낮은 저점을 만들 때 Williams %R 레그가 더 높은 저점을 만들면 → 확인된 저점에 매수 화살표.
- 레그 분리: 레그 내부의 스윙은 비교에서 제외되므로, 레그 중간 노이즈 스파이크가 다이버전스를 위조하거나 숨길 수 없습니다.
- ZigZag 구조 규칙과 WPR 다이버전스 테스트를 모두 통과한 피벗만 화살표를 생성합니다. 모든 화살표는 완성된 의사결정이며 날것의 힌트가 아닙니다.
3) 신호 모드: Confirm vs Live(꼭 읽어 주세요)
Confirm(기본) — 히스토리 안정 스트림. 후보 다이버전스는 원인 피벗이 이후 가격 행동으로 확인될 때까지 보류됩니다. 커밋된 화살표는 동결됩니다: 움직이지 않고, 사라지지 않고, 방향이 바뀌지 않습니다*.
Live — 가능한 가장 빠른 판독. 화살표는 형성 중인 바 안에 표시됩니다. 설계상 바가 미완성인 동안 이동하거나 사라질 수 있으며, 내장 투명성 카운터가 그러한 모든 이벤트를 보고합니다(7절).
*비리페인트 보증 매트릭스(Confirm 모드):
- Deviation/Depth/Backstep = 수동 → 무조건 보증.
- ATR 적응형 Depth/Backstep + 피벗 잠금 ON → 보증.
- 적응형 + 피벗 잠금 OFF → 지표가 잠금을 자동 활성화하고 사용자에게 알립니다. 바로 그 보증을 지키기 위해서입니다.
이 조건부 보증은 제품 메타데이터에 정직하게 명시되며 시작 시 입력 검증으로 강제됩니다.
4) 피벗 잠금
확인된 피벗은 내부 레지스트리에서 동결됩니다. 이후 재계산, 변동성 스파이크, 파라미터 편집으로도 이동시킬 수 없습니다. 적응형 모드 보증을 가능하게 하는 메커니즘이며, Live 실행 시 항상 권장됩니다.
5) ATR 적응형 ZigZag 파라미터
변동성은 세션과 종목에 따라 달라집니다. Deviation/Depth/Backstep을 손으로 재조정하는 대신, 적응형 모드는 현재 ATR에 따라 설정 가능한 범위 안에서 이를 스케일링합니다(예: DepthMax는 적응형 Depth 상한). 금, 코인, 지수, FX 전반에서 종목별 수동 관리 없이 구조가 유효하게 유지됩니다.
6) 멀티 타임프레임 대시보드
동일 엔진이 설정 가능한 상위 타임프레임 집합(전용 MTF Lookback 창 포함)에서 실행됩니다. 차트 위 대시보드가 타임프레임별 다이버전스 상태를 집계해, 내 타임프레임이 큰 그림과 일치할 때만 트레이딩할 수 있게 합니다 — 예: H1/H4가 불리시 다이버전스 맥락을 보일 때 M15 매수 화살표 채택.
7) 투명성 도구(EA 개발자용)
- SA_RepaintBars: 바별 리페인트 이벤트(Live에서의 이동/소멸) 카운터.
- SA_PostCommitBars: 바별 커밋 후 조정 카운터.
- GlobalVariable 채널: 동일 값이 터미널 전역 변수에 미러링되어 EA가 지표 버퍼 바인딩 없이 읽을 수 있습니다.
- 0번 바에서 카운터를 읽으면 현재 바의 라이브 상태를 알 수 있습니다. 보증 조건을 충족한 Confirm 모드에서는 커밋된 히스토리에서 두 카운터가 침묵합니다.
8) 자동 지지/저지
확인된 피벗은 수평 레벨로 투영됩니다(토글·스타일 설정 가능). 레벨은 즉각적인 맥락을 제공합니다: 확인된 지지대에서 형성되는 불리시 다이버전스 화살표는 허공의 화살표보다 더 많은 정보를 담습니다.
9) 알림
새로 확인된 신호에 대해 플랫폼의 alert/push/mail 훅으로 선택적 알림이 발생합니다. 알림 문구는 설계상 영어 전용이며 Market 규정과 정합합니다.
10) 전체 설정 레퍼런스(그룹별)
- 신호 엔진: 모드(Confirm/Live), 피벗 잠금, 자동 잠금 알림.
- ZigZag: Deviation / Depth / Backstep, 수동 vs ATR 적응형, 적응형 상한(예: DepthMax).
- 다이버전스: Williams %R 기간, Lookback — 적응형이며 엔진 내부 하한에 대해 검증됨. 유효하지 않은 값은 시작 시 명확한 영어 메시지와 함께 거부되며, 묵묵히 무신호 상태가 되지 않습니다.
- MTF 대시보드: 타임프레임 집합, MTF Lookback, 표시 여부.
- S/R: 그리기 토글, 스타일.
- 알림: 유형별 토글.
11) 설치 및 첫 실행
- 터미널의 Market 탭에서 설치(대여 및 평생 라이선스는 MetaTrader 5가 관리).
- 아무 차트, 아무 타임프레임에 부착.
- Confirm 모드 기본값으로 시작해 대시보드를 관찰한 뒤, ZigZag 3파라미터를 조정하거나 ATR 적응형 모드를 켜세요.
12) 실전 플레이북
- 단타: H1 대시보드 합의로 필터한 M15 화살표. 투영된 S/R로의 되돌림에서 Confirm 진입.
- 스윙: H4 피벗을 맥락으로, H1 화살표를 트리거로.
- EA: 커밋된 화살표는 1번 바의 신호 버퍼에서. Live 활동은 0번 바의 투명성 카운터로 모니터링.
13) 성능 및 요구사항
- MetaTrader 5, 모든 종목, 모든 타임프레임. DLL 없음, 외부 파일 없음, 추가 지표 없음.
- 증분 tick 처리를 갖춘 선형 시간 코어 — 빠른 tick 흐름에도 차트가 굳지 않습니다.
- 깨끗한 초기화 해제: 분리/TF 변경 시 차트 객체 제거.
14) 이 제품은 무엇이 아닌가
매매를 집행하지 않고, 자금을 관리하지 않으며, 수익을 보장하지 않습니다. 다이버전스는 확률적·맥락적 판독입니다. Live 모드에서 리페인트는 설계상 의도된 것이며 항상 카운터가 보고합니다.
15) 변경 이력
- v1.03: Lookback 검증을 엔진 내부 하한과 통일(묵묵한 무신호 엣지 케이스 제거). 피벗 앞쪽 삽입 강화. S/R 재구축 강화.
- v1.01: 최초 Market 공개판.
16) FAQ
- 리페인트하나요? 보증 조건(3절) 하의 Confirm 모드에서는 아닙니다. Live 모드의 변화는 설계상 의도된 것이며 투명하게 계수됩니다.
- 모든 종목에서 되나요? 네. ATR 적응형 모드는 바로 종목 간 구조 유효성을 위해 설계되었습니다.
- 제 EA가 사용할 수 있나요? 네 — 신호 버퍼, GlobalVariable 채널, 리페인트 카운터 덕분에 EA 친화적입니다.
- 왜 수많은 힌트가 아니라 화살표 하나인가요? 모든 화살표는 구조 + 다이버전스 검증을 통과했습니다. 의도적으로 적지만 고품질입니다.
- 차트에 플랫폼 ZigZag이 필요한가요? 아니오. 엔진은 내장입니다.
17) iCustom 통합 및 EA 연동(바로 쓰는 코드)
이 지표는 EA가 소비하도록 설계되었습니다. 완전한 최소 연동 스켈레톤:
#define SA_BUF_BUY 0 // bullish arrow buffer (EMPTY_VALUE = no signal) #define SA_BUF_SELL 1 // bearish arrow buffer (EMPTY_VALUE = no signal) #define SA_BUF_REP 2 // SA_RepaintBars counter #define SA_BUF_POST 3 // SA_PostCommitBars counter int g_sa = INVALID_HANDLE; int OnInit() { g_sa = iCustom(_Symbol, _Period, "SingleArrow_MTF"); if(g_sa == INVALID_HANDLE) // Market installs live in the Market folder g_sa = iCustom(_Symbol, _Period, "Market\\SingleArrow_MTF"); if(g_sa == INVALID_HANDLE) { Print("SingleArrow MTF: iCustom handle failed"); return(INIT_FAILED); } return(INIT_SUCCEEDED); } void OnTick() { double buy[1], sell[1], rep[1], post[1]; // committed arrows: read at shift 1 (closed bar), never the forming bar if(CopyBuffer(g_sa, SA_BUF_BUY, 1, 1, buy) <= 0) return; if(CopyBuffer(g_sa, SA_BUF_SELL, 1, 1, sell) <= 0) return; // transparency counters of the forming bar CopyBuffer(g_sa, SA_BUF_REP, 0, 1, rep); CopyBuffer(g_sa, SA_BUF_POST, 0, 1, post); if(buy[0] != EMPTY_VALUE) OnSingleArrow(+1); // your logic here if(sell[0] != EMPTY_VALUE) OnSingleArrow(-1); // your logic here } void OnDeinit(const int reason) { if(g_sa != INVALID_HANDLE) IndicatorRelease(g_sa); }
- 핸들: OnInit에서 한 번 생성하고 OnDeinit에서 해제 — tick마다 iCustom 호출 없음.
- 커밋된 신호는 1번 바에서: Confirm 모드에서 마감 바의 화살표는 동결 상태. 1번 바를 읽으면 EA는 백테스트와 일관된 안정 스트림을 얻습니다.
- 0번 바 라이브 모니터링: SA_RepaintBars / SA_PostCommitBars가 형성 중 바가 후보를 아직 수정 중인지 EA에게 알립니다.
- GlobalVariable 채널: 같은 카운터가 터미널 전역 변수에 미러링되어 다른 프로그램이 지표 핸들 없이 관찰 가능합니다.
- 버퍼 맵: 위 인덱스는 터미널의 지표 버퍼 순서(데이터 창/지표 속성)를 따릅니다.
