개요
- MT4, MT5 모두 클래스 지원되며, 본 글에서는 MT4 에서 클래스 만들기 방법 정리.
- 메타트레이더의 클래스 는 C++ 과 거의 동일하므로 C++ 클래스 관련 기본 지식 요구됨.
클래스 파일 생성.
메타에디터의 왼쪽 Navigator 에서 클래스 만들 폴더 선택하고 우마우스 클릭 하여 New File 클릭
여러 종류의 파일 형식 보인다. 이 중에서 New Class 선택하고 다음 클릭.
클래스 이름 지정 (아래그림 붉은 박스) 하면 자동으로 파일명(파란박스) 만들어진다.
- 자동으로 만들어지는 파일명에는 클래스 이름에 CC 처럼 C 가 중복되면 첫 C 는 빼고 파일명 만들어지는데, 나의 경우에는 파일이 클래스 파일임을 의미하는 C 를 수동 추가 함.
- 클래스 이름 마지막에 _1 은 유사 기능의 다른 클래스 만들경우 _2, _3 식으로 번호 증가시키면서 만들고 있음. 사유 : 기존 만들어진 클래스를 다른 EA 에서 사용 중인 것을 기능 변경하면 안되는 경우 다른 번호를 할당하여 신규 클래스 만들려는 의도.
상기 화면에서 마침 버튼 누르면 자동으로 클래스 기본 생성자와 소멸자 코드 자동으로 추가된 상태로 클래스 파일 만들어진다(아래그림).
인자 있는 생성자 만들기 예
메타에서 자동으로 만들어진 생성자는 무인자 생성자인데, 본 클래스 활용시 인자로 거래 종목 심볼 문자열을 전달하고 싶다면 아래처럼 인자 있는 생성자 만든다.
- 라인 16 에 심볼 이름 받을 클래스 멤버 변수 m_Symbol 추가하고, 라인 19 에 인자 있는 생성자 선언하고,
- 라인 24 ~ 28 생성자 정의 하고 ,
- 멤버 변수 초기화 하는 라인 25에서 생성자 인자로 전달받은 _symbol 을 m_Symbol 에 대입하고 있다.
클래스 멤버 함수 추가하기 예.
- 이제 클래스에서 달성하고자 하는 기능 구현 코드 추가한다.
- 본 예에서는 EA 파일의 OnTick 에서 호출되어야 하는 함수로 Proc_OnTick(double _ask, double _bid) , EA 의 OnInit 에서 호출되어야 함수는 Proc_OnInit() 추가해본다.
- 라인 22,23 멤버 함수 선언 추가. 라인 36,41 멤버 함수 구현.
클래스 활용 코드 예.
메타의 EA 파일에서 상기 클래스를 활용하는 방법.
- 라인 23 클래스 정의 파일 포함.
- 라인 24 클래스 변수 Cy_AskBid 만들면서 생성자 인자 Symbol() 전달.
- 라인 29 클래스 멤버 함수 Proc_OnInit() 호출.
- 라인 42 클래스 멤버 함수 Proc_OnTick() 호출.
클래스 생성자 소멸자 실행되는 시점.
클래스 생성자 실행되는 시점 : EA를 챠트에 배치하여 EA 로딩되는 첫 시점에만 상기 코드 라인 25 의 생성자 실행.
클래스 소멸자 실행되는 시점 : EA 를 챠트에서 제거하는 시점에만 클래스 개체의 소멸자 실행.
클래스 생성자, 소멸자 내에서도 문자열 출력구문 Print 실행가능.
클래스 구현예.
거래수수료 관련 처리 수행하는 클래스
파일 출력하기.
연관
첫 등록 : 2023.03.20
최종 수정 :
단축 주소 : https://igotit.tistory.com/4289
'트레이딩 > 메타트레이더 코딩' 카테고리의 다른 글
메타트레이더 . 코딩 . 거래 수수료 . 클래스 CCy_Commission (0) | 2023.03.22 |
---|---|
메타트레이더 . 코딩 . input 입력 변수 . (0) | 2023.03.21 |
메타트레이더 4 . 챠트 . 오류 SL, TP 가격 차이 표현 단위 Pips (0) | 2023.03.14 |
메타 트레이더4 . MQL4 . 주문 (포지션) 검색 코드 (0) | 2023.03.06 |
메타 트레이더 . 주문 가격 규격화 Digits 으로는 불완전. 해결책. (0) | 2023.03.05 |
댓글