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

메타트레이더 5. MetaEditor. MQL5 Script. CyClosePositionAll

by 리치굿맨 2019. 4. 19.

 

 

 

 

개요

 
 
MQL5 에서의 Script 는 챠트에 배치되면 1회 실행 되며 코드 내에서 OnStart 라는 이벤트 핸들러가 있다. 
 
1. MetaEditor 에서 Script 파일 생성하는법. 
 
2. 스크립트 코드 구현예로 스크립트 실행시 보유한 포지션 모두 청산시키는 기능 구현 코딩 과정 보임. 
 
기타. 
용어 "스크립트" 때문에 "스크립트 언어" 와 유사한 형식의 것인가? 라고 생각할 수 도 있는데, C++ (MQL5) 로 작성되며 컴파일하여 실행바이너리 생성된다.  
 

 

 

 

 

 

 

MetaEditor 에서 신규 스크립트 생성하기.

- 본 예에서는 Scripts 하위에 폴더 igotit 를 만들고 이곳에 스크립트 파일(이름 예 : CyClosePositionAll ) 생성한다.

 

 

 

 

 

코드 

 

- 아래 소스 코드 처럼 작성하자. 기본 생성된 것에서 라인 10, 12, 18 추가된것이 전부임. 

- 아래 소스코드에서 1번째 OnStart 함수내부구현 코드는 1개의 포지션만 청산시키는 것. 

- 아래 소스코드에서 2번째 OnStart 함수내부구현 코드는 모든 포지션 청산시키는 것. 

 

 

 

 

1번 OnStart 코드에서의 작동. 

- 스크립트 1회 실행에 1개의 포지션만 청산하는 중. Trade 리스트중에서 가장 작은 Ticket 번호부터 청산시킨다.

 

 

2번 OnStart 코드에서의 작동  

- 의도했던 스크립트 1회 실행에 보유한 모든 포지션 청산된다. 

 

상기 코드 예에서는 PositionClose 함수 호출시 인자로 Symbol() 을 입력하고 있기 때문에 스크립트를 배치한 챠트의 1개 종목에 대해서만 보유한 모든 포지션 청산이 이뤄지고 있다.  챠트의 종목이 무엇이든 모든 종목의 포지션 정리하는 함수는 아래와 같이 구현가능하다. 

void OnStart()
{
 maxnum_position = PositionsTotal(); // total number of position

 while(maxnum_position>0)
 {
    if(trade.PositionClose(PositionGetSymbol(maxnum_position-1))) maxnum_position--; 
 } 
}

 

코드예 

- 챠트의 symbol 의 모든포지션,  매수포지션, 매도 포지션 시장가 청산하는 코드예. 

- 무결성, 무오류 확인된것.

- 코드의 주요처리부분 : 매수포지션, 매도 포지션 청산주문 처리시 CArrayLong 형식으로 선언된 컬렉션 변수 m_CArrayLong_TicketPosi 에서 먼저 ticket 부터 모두 저장한이후 포지션 청산수행하는것.

 

 

 

 

 

 

 

 

상위 정리글.

 

 

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

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

igotit.tistory.com

 

 


첫글등록 : 2018년 8월 27일.

최종수정 : 2019년 4월 19일 

 

본글단축주소 : https://igotit.tistory.com/1832

 


 

 

태그

댓글0


   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT