조건 스캐너 (Condition Scanner)
오늘은 MetaTrader 4에서 사용할 수 있는 조건 스캐너에 대해 소개해드릴게요. 이 도구는 여러분이 설정한 조건을 테스트하고, 이를 통해 여러 차트를 효율적으로 관리할 수 있도록 도와줍니다.
조건 스캐너의 기본 아이디어
- 여러분이 원하는 조건을 설정합니다.
- 해당 조건을 테스트하는 코드를 작성합니다.
- 이 코드를 제공된 코드 조각에 임베드합니다.
- 몇 가지 간단한 수정만으로 완성할 수 있습니다.
결과적으로 두 가지 지표를 얻게 됩니다. 하나는 현재 차트에서 여러분의 조건이 발생한 위치를 보여주고, 다른 하나는 관심 있는 모든 종목과 시간대에서 현재 조건이 발생했는지를 패널에 표시해줍니다. 이를 통해 여러 쌍과 시간대를 수동으로 스캔할 필요가 없어집니다.
설치 방법
먼저, 제공된 네 개의 폴더(Indicators, Include, Templates, Profiles)의 내용을 여러분의 MetaTrader 설치 폴더에 복사합니다. 이 폴더에는 위험한 요소가 없으니 안심하세요. 설치가 완료되면 MetaQuotes 프로그램을 종료하고 다시 실행합니다.
스캐너의 기능 시연
아래 예시는 Power Pro(설정 식별자 = "PP")를 기반으로 한 것입니다. 이 전략은 상단 밴드가 고점의 EMA, 하단 밴드가 저점의 EMA로 설정된 밴드 브레이크 아웃 전략입니다. 이 예시는 여러분이 개발할 수 있는 내용을 보여주는 것일 뿐, 저의 전략을 보증하는 것은 아닙니다.
시스템에서 프로필을 cspp로 변경하면 첫 번째 표시에는 몇 초가 걸릴 수 있지만, 이후에는 컴퓨터 자원을 많이 사용하지 않습니다.
아래와 같은 화면을 보게 될 것입니다:
위 예제는 다음으로 구성됩니다:
- 4개의 플롯이 있는 차트 내 지표
- RSI의 EMA를 보여주는 별도의 창 지표
- 과거에 롱 또는 숏 거래가 발생한 위치를 보여주는 별도의 창 지표
- 관심 있는 다양한 쌍과 시간대의 현재 상황을 보여주는 패널 지표
모든 스캔에서 공통된 코드
- Utils.mqh: 모든 지표 및 전문가 고문에서 사용할 수 있는 유틸리티 함수 포함
- cs_Chart.mqh: 현재 차트 지표의 거의 모든 코드를 포함
- cs_Panel.mqh: 패널 표시 지표의 거의 모든 코드를 포함
PP(파워 프로) 전략에 특화된 코드
- csPP_0.mq4: 관련 "차트 창" 지표 표시
- csPP_1.mq4: 관련 "별도의 창" 지표 표시
- csPP_Chart.mq4: 현재 차트에서 발생한 과거 데이터를 보여주는 지표
- csPP_Panel.mq4: 관심 있는 모든 쌍과 시간대의 현재 상황 표시
- csPP_GetBarFlag.mqh: 차트 및 패널 지표에서 사용되는 코드
또한, MAX(이동 평균 교차) 전략에 대한 간단한 예시도 포함했습니다.
MAX 전략에 특화된 코드
- csMAX_0.mq4: 두 개의 이동 평균을 표시하는 커스텀 지표
- csMAX_Chart.mq4, csMAX_Panel.mq4 및 csMAX_GetBarFlag.mqh: 위와 동일한 작업을 수행
새 조건을 위한 코딩 방법
새 전략 식별자를 결정한 후, 위의 "스캐너 기능 시연" 섹션을 참고하여 창을 설정합니다. 기존 지표는 삭제합니다.
차트 내 지표가 필요하다면, csXXXX_0.mq4를 패턴으로 사용하여 구축하고, csPB_0.mq4로 저장합니다. 커스텀 지표를 적용하여 차트를 왼쪽에 표시합니다.
별도의 창 지표도 필요하다면 csPB_1.mq4로 저장 후 왼쪽 차트에 적용합니다.
커스텀 지표를 사용하여 iCustom 함수를 통해 다른 곳에서도 참조할 수 있게 만들어야 합니다. 이렇게 하면 기본 매개변수를 변경할 때 커스텀 지표만 수정하면 됩니다.
이 과정이 완료되면 관련 지표를 차트에 적용하고, 템플릿을 csPB-CHART.tpl로 저장합니다. 이 템플릿은 모든 커스텀 지표와 결과를 포함합니다.
마지막으로 csPB를 프로필로 저장합니다.
소프트웨어의 몇 가지 측면
패널 지표가 표시될 때 특정 쌍과 시간대를 확인하고 싶다면, Market Watch 창에서 쌍을 선택하고 현재 차트 공간으로 드래그 앤 드롭 후 시간대를 변경합니다. 템플릿이 나머지를 처리합니다.
부하를 줄이기 위해, 시계열 배열을 처리할 때 대부분 200바까지만 검색하고, 패널 표시 소프트웨어는 매 틱마다 테스트를 수행하지 않고 타이머 메커니즘을 사용합니다. 이를 통해 시스템 자원을 효율적으로 관리할 수 있습니다.