당사 팬 페이지에 가입하십시오
- 조회수:
- 262
- 평가:
- 게시됨:
- 업데이트됨:
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
주의! 이 지표는 ‘Просто ZZ(지그재그) ’ 코드의 한 버전을 기반으로 제작되었으며, 저자 PPC의 허락을 받아 여기에 게시됩니다(저는 테스트에 직접 참여하고 알고리즘의 오류를 지적했습니다). 이 코드는 MetaTrader 4 플랫폼용으로 일대일로 재작성된 지표 버전입니다.
주의! "AlexSTAL_OutsideBar.mqh" 라이브러리는 터미널의 ..\MQL5\Include\폴더에 배치해야 합니다.
지그재그란 무엇인가요?
제 관점에서 지그재그는 일종의 가격 차트 압축 형태입니다. 지그재그의 구성은 하나의 바 가격(예: 종가만)을 기반으로 할 수도 있고, 고가/저가(가장 일반적인 구성 유형)를 기반으로 할 수도 있습니다.
표준 지그재그(ZigZag) 지표를 연구하고 활용하면서 MetaQuotes의 기본 솔루션에 몇 가지 오류와 미비점이 드러났습니다. 가장 큰 문제는 기본 지그재그가 아웃사이드 바(outside bar) 상황을 처리하지 못한다는 점입니다.
2007년에 Rosh는 아웃사이드 바 처리 알고리즘을 적용한 Zigzag2 R 지표 버전을 공개했습니다. (DRAW_SECTION 대신 DRAW_ZIGZAG 그리기 스타일을 사용하여 ZigZag의 극값을 하나의 바에 배치할 수 있도록 하는)을 사용해야 했지만, 그조차도 알 수 없는 이유로 사이트에 게시된 버전에는 필요한 코드가 포함되어 있지 않습니다.
논의를 이어가기 위해, 전형적인 ZigZag의 구성 정확성에 대한 저만의 정의를 다음과 같이 제시하고자 합니다:
- High 및 Low 극값은 엄격하게 번갈아 나타나야 합니다;
- High 극값은 다음 (반대 방향의) Low 극값까지 오른쪽에 위치한 모든 바 중에서 최대값(또는 그와 동일한 값)을 가져야 합니다;
- Low 극값은 다음 (반대 방향의) High 극값까지 오른쪽에 위치한 모든 바 중에서 최소값(또는 그와 동일한 값)을 가져야 합니다.
매우 직관적인 예시(2006년 12월 8일~13일 EURUSD H1)를 살펴보겠습니다. 이 예시에서는 외부 바와 관련된 두 가지 상황이 동시에 발생하는데, 일반적인 지표로는 이를 올바르게 처리하지 못합니다.
![그림 1. 매개변수가 [12;5;3] 및 [12;0;0]인 전형적인 ZigZag 그림 1. 매개변수가 [12;5;3] 및 [12;0;0]인 전형적인 ZigZag](https://c.mql5.com/18/459/zz_01s__2.png)
그림 1. 매개변수 [12;5;3] 및 [12;0;0]을 가진 일반적인 ZigZag
![그림 2. 매개변수 [12;5;3]을 가진 Zigzag2 R 그림 2. 매개변수 [12;5;3]을 가진 Zigzag2 R](https://c.mql5.com/18/459/zz_03s__2.png)
그림 2. 매개변수 [12;5;3]을 가진 Zigzag2 R
![그림 3. 매개변수가 [12;0;0]인 Zigzag2 R 그림 3. 매개변수가 [12;0;0]인 Zigzag2 R](https://c.mql5.com/18/459/zz_02s__4.png)
그림 3. 매개변수 [12;0;0]을 가진 Zigzag2 R
언뜻 보면 그림 3 이 모두 정확해 보이지만, 다음과 같은 점이 있습니다:
- 이 그림은 특정 매개변수를 적용한 것이며, 어떤 매개변수를 사용하더라도 그래프의 올바른 형태가 유지되어야 합니다.
- 왼쪽의 외부 막대는 High/Low 막대의 형성 순서가 중요하기 때문에 올바르게 처리되지 않습니다:

이에 따라 지그재그(ZigZag) 선분의 순서도 달라집니다.
연구 과정에서 다음과 같은 ZigZag 지표들이 테스트되었습니다(공개된 기간에만 국한되지 않음): ZigZag MT3, ZigZag, Zigzag R, Zigzag2 R, ZigZag_NK, ZigZag_ZUP89_nen, ZigZag_new_nen4, CZigZag, Swing_ZZ_1, DT_ZZ_nen, ZigZag_Talex, Reverse_ZZ, Points_ZZ_1, i_MF_Fractal_ZZ_3in1, ang_Amp_ZZ, ZigzagFr_v1, NonLagZigZag_v2, ZZ_FF_v3, ZigZag Ensign, ZigZag tauber, SQZZ Товаровед, ZZ_2L_nen wellx, Channel ZZ, Azzx_larryzz_3_0, RPoint, RPoint-m v2, ZigZagTF. 이 중 어느 것도 주어진 과제를 완전히 해결하지 못했습니다.
연구 대상 구간에서 이 지표가 나타낸 차트:
![그림 4. [12;0] 매개변수 그림 4. [12;0] 매개변수](https://c.mql5.com/18/459/zz_05s__2.png)
그림 4. [12;0] 매개변수
![그림 5. [23;0] 매개변수 그림 5. [23;0] 매개변수](https://c.mql5.com/18/459/zz_06s__2.png)
그림 5. [23;0] 매개변수
공개된 ZigZag의 특성 및 특징:
- 단일 통과 방식;
- 마지막 구간만 재계산 및 재그리기됨 (히스토리 추가 시를 제외하고는 구간을 취소할 수 없음);
- 바 내부에서 계산 최적화 메커니즘이 적용됩니다(0 바 내에서 가격이 변동했거나, 변동이 MinMotion 변수에 설정된 최소 임계값을 초과하지 않은 경우, 틱 단위로 재계산되지 않습니다);
- High/Low 바 형성 순서를 구하는 두 가지 알고리즘: 바 유형별(빠르지만 정확도는 낮음) 및 더 짧은 기간의 데이터 기반(역사 데이터 필요: 데이터의 존재 및 적절성을 직접 확인하거나 OutsideBar 라이브러리를 수정해야 함).
MetaTrader 5에서 호가의 정확성 문제가 아직 충분히 연구되지 않았기 때문에 ProExtra 버전은 공개되지 않습니다.
다른 ZigZag 지표의 비정상적인 작동에 대한 추가 사례
![그림 6. 2010년 11월 29일~12월 7일 EURUSD H1 차트. 매개변수 [7;0;0]을 가진 빨간색 ZigZag 선. 매개변수 [7;0;0]을 가진 파란색 Zigzag2 R 선. 그림 6. 2010년 11월 29일~12월 7일 EURUSD H1 차트. 매개변수 [7;0;0]을 가진 빨간색 ZigZag 선. 매개변수 [7;0;0]을 가진 파란색 Zigzag2 R 선.](https://c.mql5.com/18/459/zz_07__3.gif)
그림 6. 2010년 11월 29일~12월 7일 EURUSD H1 차트. 매개변수 [7;0;0]을 가진 빨간색 ZigZag 선. 매개변수 [7;0;0]을 가진 파란색 Zigzag2 R 선

그림 7. EURUSD H1, 2010년 11월 29일~12월 7일. 올바른 그리기
결론
아쉽게도 이 버전에도 몇 가지 단점이 있습니다. 하지만 저는 이를 개선하기 위해 노력하고 있습니다.
그리고 이 인디케이터는 (일반적인 ZigZag과 마찬가지로) iHighest/iLowest라는 동일한 채널 원리에 따라 작동하기 때문에, 때때로 고점을 놓치는 경우가 있습니다.
이 지표에서 발견된 모든 버그와 기능에 대해 꼭 알려주시기 바랍니다.MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/263
Show Positions on Custom Chart (or standard chart) for MT5
이 인디케이터는 모든 차트에 레이블이 지정된 거래 수준을 표시하는 유틸리티입니다. 기본 차트에서 기본 거래 수준을 대체하려면 F8 차트 속성에서 "거래 수준 표시"를 끄고 이 인디케이터를 첨부하세요. 기본 거래 수준을 표시할 수 없는 사용자 지정 차트에 거래 수준을 표시하려면 이 인디케이터를 첨부하면 됩니다. BaseSymbol - 거래 수준 데이터를 가져올 심볼을 지정합니다(고유한 사용자 지정 심볼에 유용). TextBarsBack - 현재 바에서 레벨 라벨이 그려질 과거 바의 수를 지정합니다. 참고: 코드에서 매직 넘버가 참조되지만 현재 거래 라인에 포함되지 않습니다. 동일한 심볼에서 여러 EA를 실행하는 경우 매직넘버를 표시하도록 코드를 편집한 다음 하나의 차트에서 지표의 여러 인스턴스를 실행할 수 있습니다. 또한 필요에 따라 개체 속성에서 글꼴 크기와 텍스트 간격을 다른 표시 해상도에 맞게 편집할 수 있습니다.
Baseline: iMA + ATR Bands
이동 평균과 ATR 기반 상위 및 하위 밴드를 결합하여 추세 필터 및 변동성 채널로 작동합니다.
Export Indicator's Values
이 스크립트는 지표의 값을 CSV 파일로 내보냅니다.
해시 함수 및 다른 산술 체계로의 변환을 위한 라이브러리
이 라이브러리에는 adler32, CRC-32, MaHash8v64와 같은 범용 해시 함수 알고리즘이 포함되어 있습니다. 또한 십진수 계산을 Base 계산을 사용하는 문자열 형식으로 변환하고, 그 반대로 변환하는 함수도 포함되어 있습니다.