본문 바로가기
트레이딩/메타트레이더 코딩

메타트레이더 . 코딩 . 클래스 만들기

by i.got.it 2023. 3. 20.

 

개요 

- 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 실행가능. 

 

 

 

 

클래스 구현예. 

 

 

거래수수료 관련 처리 수행하는 클래스 

 

메타트레이더 . 코딩 . 거래 수수료 . 클래스 CCy_Commission

개요 메타트레이더에 연결된 계좌에 따라 수수료 계산 방식이 다르다. BYBIT 과 FXTM 의 거래 수수료 계산 방식 상세 . 에서 정리했듯이 BYBIT 의 경우 진입, 청산 각각 개별적으로 거래수수료가 계산

igotit.tistory.com

 

 

파일 출력하기. 

 

메타트레이더 . 코딩 . 파일 . 클래스 CCy_File

개요 - 메타트레이더에서 파일 출력하기 읽기 - 클래스 CCy_File 구현예. 파일 관련 함수 MT4 의 파일관련 함수 전체 - https://docs.mql4.com/files/ 파일 기본 경로 FileOpen() 에서 인자 file_name 에 경로 설정하

igotit.tistory.com

 

 

연관

 

 

 

 

메타트레이더 . 코딩 . 클래스 non-static 멤버함수를 콜백함수로 전달하기

개요 상황 : 2개의 클래스 A(예 CCyFinDevice), B(예 CCyFinOnNewBar) 가 있고, A에서 B 인스턴스 만들어 사용중이고, B에게 A측의 콜백함수를 전달해야함. 문제점 클래스의 멤버함수는 콜백으로 전달 불가하

igotit.tistory.com

 

 

 

메타트레이더 4. 체계정리. 활용법/지식.

MetaTrader 4 메타트레이더 4 활용정보 체계정리. - 글로벌 트레이딩 소프트웨어. - 지속 발전 가능한 안정된 시스템. - 직접 코딩 가능한 MQL4 언어. C 언어 유사 - - MQL4 에서도 클래스 사용가능하므로

igotit.tistory.com

 

 

 

메타트레이더 5. 체계정리. 활용법/지식

MetaTrader 5 메타트레이더 5 , 메타에디터, MQL5 활용정보 체계정리. 본 글에서 주요 정리대상 정보 1. 메타트레이더 5 사용법. 2. MQL5 언어 기반 "직접 코딩"하여 메타프레이더5에서 자동매매 달성하기

igotit.tistory.com

 

 

 

 

 

 

 


첫 등록 : 2023.03.20

최종 수정 : 

단축 주소 : https://igotit.tistory.com/4289


 

 

 

댓글



 

비트코인




암호화폐       외환/나스닥/골드       암호화폐/외환/나스닥/골드 암호화폐/외환/나스닥/골드   암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)     롤오버 이자 없는 스왑프리계좌
( 스왑프리 암호화폐도 거래 가능 )    
MT4, MT5 , cTrader 모두 지원     FTMO 계좌 매매운용. MT4,MT5