TriZone Semafor
- 지표
-
Ahmed Hamed Hamed Eadwan
KOREAN TRANSLATION — 한국어
==============================
TITLE:
MQL5 개발자 & 트레이더 | R protocols 창립자
ABOUT:
안녕하세요, 저는 Ahmed입니다. 아랍에미리트에 기반을 둔
트레이더이자 MQL5 개발자이며, R protocols의 창립자입니다.
1984년부터 코드를 작성해 왔고, 2006년부터 시장에서 거래를
해왔습니다. 수년 동안 실제 시장 경험을 통해 개선하며 - 버전: 1.0
ZigZag 화살표로 뒤덮인 차트를 바라보며 "과연 어떤 것이真正 중요한지" 궁금해한 적이 있다면 — 이 지표는 바로 그 고민을 해결하기 위해 만들어졌습니다.
TriZone Semafor는 세 개의 독립적인 ZigZag 알고리즘을 동시에 실행합니다: 빠름 (Period 5), 중간 (Period 13), 느림 (Period 34). 같은 캔들에서 피봇을 감지했을 때, 가장 의미 있는 신호만 살아남습니다. 레벨 3은 항상 레벨 2를 덮어씁니다. 레벨 2는 항상 레벨 1을 덮어씁니다. 방향당 캔들당 하나의 깔끔한 화살표 — 중복 없음, 이중 카운팅 없음.
왜 하나가 아니라 세 개의 레벨인가
단일 ZigZag는 모든 변동을 동등하게 취급합니다. 같은 지표가 2캔들의 눌림목과 큰 추세 전환을 동일한 화살표로 표시합니다. TriZone은 각 피봇을 중요도에 따라 분류하여 차트의 계층 구조를 한눈에 파악할 수 있게 합니다.
- 레벨 1 — 빠름: 작은 눌림목과_MINOR 피봇. 구조 안의 구조.
- 레벨 2 — 중간: 일중 변동과 의미 있는 반응. 트레이딩 일지에 기록하는 피봇.
- 레벨 3 — 느림: 주요 구조적 전환점. 추세 지속이真正 의심되는 지점.
각 레벨은 고유한 화살표 모양과 색상을 가져 범례를 확인하지 않고도 계층을 즉시 구분할 수 있습니다.
배타적 신호 시스템
모든 캔들은 하나의 규칙을 거칩니다: 상위 레벨이 해당 캔들에서 피봇을 주장하면, 모든 하위 레벨의 주장이 제거됩니다 — 숨겨지는 것이 아니라 제거됩니다. 이는 차트에 도달하기 전에 지표 버퍼 내부에서 발생합니다. 차트는 실제 상태를 반영하며, 겹겹이 쌓은 오버레이가 아닙니다.
안티 리페인트 모드
AntiRepaint = ON일 때, 신호는 설정된 확인 캔들 수가 지난 후에만 그려집니다. 보이는 화살표는 이미 안정성 창문을 통과했으며 이동하지 않습니다. 지표는 차트 제목 표시줄에 현재 모드와 확인 깊이를 표시하여 읽고 있는 내용에 대한 완전한 투명성을 제공합니다.
AntiRepaint = OFF일 때, 신호는 형성 중인 캔들에 즉시 나타납니다. 시각적 참고용으로 유용합니다. 자동화 로직에는 권장되지 않습니다.
알림 시스템
알림은 계산 중에 대기열에 넣어지고, 배타성 필터가 신호의 생존을 확인한 후에만 전달됩니다. 잠시 후 레벨 3에 의해 덮어씌워진 레벨 1 신호에 대한 팝업을 받는 일은 결코 없습니다. 확인된 피봇 하나 — 알림 하나. 레벨별로 독립적으로 설정 가능합니다.
포함 내용
- 완전히 독립적인 매개변수를 가진 세 개의 ZigZag 감지 레벨
- 버퍼 수준의 배타적 신호 우선순위 — 가장 높은 레벨이 캔들마다 승리
- 확인된 피봇에만 팝업 알림 — 유령 신호 없음
- 레벨별 설정 가능한 확인 캔들이 있는 안티 리페인트 모드
- 어떤 심볼이든, 어떤 시간대든 — MetaTrader 5
- 단일 파일 — 외부 의존성 제로, DLL 없음, 사용자 정의 include 없음
권장 시작점
기본 매개변수로 H1 또는 H4를 열어 보세요. 기본 깊이 5 / 13 / 34는 표준 피보나치 수열을 따릅니다 — 대부분의 instruments와 시간대에 자연스러운 선택입니다.
레벨 3의 피봇은 구조적 참조입니다. 레벨 2는 일중 참조점입니다. 레벨 1은 그 사이의_MINOR 구조를 보여줍니다. 자신의 스타일에 맞게 깊이(Period)와 확인 캔들(ConfirmBars)을 조정하세요.
호환성
MetaTrader 5 — 어떤 브로커든, 어떤 심볼이든, 어떤 시간대든. 외부 라이브러리 없음. DLL 가져오기 없음. 단일 .ex5 파일, 완전 독립 실행.
iCustom 참조 — TriZone_Semafor
출력 버퍼
캔들마다 가장 높은 활성 레벨만 비어 있지 않습니다.
EMPTY_VALUE = 해당 바/레벨에 피봇 없음.
AntiRepaint ON일 때, shift >= max(ConfirmBars1, ConfirmBars2, ConfirmBars3) 에서 읽으세요 — 기본값: shift >= 4.
| 버퍼 | 인덱스 | 신호 | 내용 |
|---|---|---|---|
| BufLow1 | 0 | BUY | 레벨 1 저점 피봇 가격 — 빠른 ZigZag |
| BufHigh1 | 1 | SELL | 레벨 1 고점 피봇 가격 — 빠른 ZigZag |
| BufLow2 | 2 | BUY | 레벨 2 저점 피봇 가격 — 중간 ZigZag |
| BufHigh2 | 3 | SELL | 레벨 2 고점 피봇 가격 — 중간 ZigZag |
| BufLow3 | 4 | BUY | 레벨 3 저점 피봇 가격 — 느린 ZigZag |
| BufHigh3 | 5 | SELL | 레벨 3 고점 피봇 가격 — 느린 ZigZag |
입력 매개변수
# = iCustom() 호출에서의 위치 (0부터 시작, Symbol / Period / FileName 이후)
| # | 이름 | 타입 | 기본값 | 범위 | 설명 |
|---|---|---|---|---|---|
| 레벨 1 — 빠른 ZigZag | |||||
| 0 | Period1 | int | 5 | 2-500 | 피봇 탐색 깊이 (바 수) |
| 1 | Deviation1 | int | 1 | 1-100 | 최소 편차 (포인트) |
| 2 | Backstep1 | int | 3 | 1-(P-1) | 연속 피봇 사이 최소 바 수 |
| 3 | HighSymbol1 | int | 159 | Wingdings | 고점 화살표 (159=점, 108=원, 116=다이아몬드) |
| 4 | LowSymbol1 | int | 159 | Wingdings | 저점 화살표 |
| 5 | ConfirmBars1 | int | 2 | 1-50 | 신호 확정 전 확인 바 수 |
| 레벨 2 — 중간 ZigZag | |||||
| 6 | Period2 | int | 13 | 2-500 | 피봇 탐색 깊이 |
| 7 | Deviation2 | int | 8 | 1-100 | 최소 편차 (포인트) |
| 8 | Backstep2 | int | 5 | 1-(P-1) | 연속 피봇 사이 최소 바 수 |
| 9 | HighSymbol2 | int | 108 | Wingdings | 고점 화살표 |
| 10 | LowSymbol2 | int | 108 | Wingdings | 저점 화살표 |
| 11 | ConfirmBars2 | int | 3 | 1-50 | 확인 바 수 |
| 레벨 3 — 느린 ZigZag | |||||
| 12 | Period3 | int | 34 | 2-500 | 피봇 탐색 깊이 |
| 13 | Deviation3 | int | 21 | 1-100 | 최소 편차 (포인트) |
| 14 | Backstep3 | int | 12 | 1-(P-1) | 연속 피봇 사이 최소 바 수 |
| 15 | HighSymbol3 | int | 108 | Wingdings | 고점 화살표 |
| 16 | LowSymbol3 | int | 108 | Wingdings | 저점 화살표 |
| 17 | ConfirmBars3 | int | 4 | 1-50 | 확인 바 수 |
| 인스턴스 관리 | |||||
| 18 | InstanceID | string | "A" | 임의 | 고유 태그 — 차트의 다른 복사본과 달라야 합니다 |
| 19 | DebugMode | ENUM_ONOFF | OFF (0) | 0 / 1 | 진단 정보를 저널에 출력 |
| 20 | HeadlessMode | ENUM_ONOFF | OFF (0) | 0 / 1 | iCustom을 통해 사용할 때 1(ON)로 설정 — 모든 UI와 알림을 억제합니다 |
| 안티 리페인트 | |||||
| 21 | AntiRepaint | ENUM_ONOFF | ON (1) | 0 / 1 | ON = 확인된 신호만 — 안정적인 EA 로직에 필수 |
| 22 | SafeArrows | ENUM_ONOFF | OFF (0) | 0 / 1 | ON = 화살표가 완전한 소급 안전 시프트를 사용 (더 엄격) |
| 알림 시스템 | |||||
| 23 | AlertMode | ENUM_ALERT_MODE | 1 (팝업) | 0-3 | 0=없음 1=팝업 2=푸시 3=모두 — EA 내부에서 0으로 설정 |
| 24 | AlertLevel1 | ENUM_ONOFF | OFF (0) | 0 / 1 | 레벨 1 피봇 시 알림 |
| 25 | AlertLevel2 | ENUM_ONOFF | ON (1) | 0 / 1 | 레벨 2 피봇 시 알림 |
| 26 | AlertLevel3 | ENUM_ONOFF | ON (1) | 0 / 1 | 레벨 3 피봇 시 알림 |
총 27개 매개변수 (인덱스 0-26)
iCustom 코드 예제
int g_tzsHandle = INVALID_HANDLE; int OnInit() { g_tzsHandle = iCustom( _Symbol, PERIOD_CURRENT, "TriZone_Semafor", 5, 1, 3, 159, 159, 2, // 레벨 1 13, 8, 5, 108, 108, 3, // 레벨 2 34, 21, 12, 108, 108, 4, // 레벨 3 "EA1", false, true, // 인스턴스 + Headless true, false, // AntiRepaint + SafeArrows 0, false, false, false // 알림 OFF ); if(g_tzsHandle == INVALID_HANDLE) { PrintFormat("[EA] handle failed: err=%d", GetLastError()); return INIT_FAILED; } return INIT_SUCCEEDED; }
흔한 실수
| 실수 | 증상 | 수정 |
|---|---|---|
| 차트 복사본과 동일한 InstanceID | INIT_PARAMETERS_INCORRECT | 고유 ID: "EA1" , "EA2" … |
| EA에서 HeadlessMode = false | 지표가 각 EA 인스턴스마다 객체 + 알림을 그림 | 매개변수 #20을 true 로 설정 |
| AntiRepaint ON 상태에서 shift = 0 읽기 | 항상 EMPTY_VALUE — 캔들이 아직 확인되지 않음 | shift >= 4 에서 읽기 |
| EA 내부에서 AlertMode != 0 | Alert() 팝업이 테스터 실행을 차단 | 매개변수 #23을 0 으로 설정 |
| iCustom에서 잘못된 파일 이름 | INVALID_HANDLE | 정확한 이름 사용: "TriZone_Semafor" |
| OnDeinit에 IndicatorRelease 없음 | EA 재로드 시 메모리 누수 | IndicatorRelease(g_tzsHandle) 호출 |
