개요
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 부터 모두 저장한이후 포지션 청산수행하는것.
상위 정리글.
첫글등록 : 2018년 8월 27일.
최종수정 : 2019년 4월 19일
본글단축주소 : https://igotit.tistory.com/1832
'트레이딩 > 메타트레이더 코딩' 카테고리의 다른 글
MQL5. PositionsTotal (0) | 2019.04.19 |
---|---|
MQL5. NormalizeDouble (0) | 2019.04.19 |
메타트레이더 5. MQL5. 이벤트 및 핸들러. (0) | 2019.04.17 |
MQL5 (MetaTrader 5) 에서 Visual C++ DLL 로딩하기 (0) | 2019.04.16 |
메타트레이더 5. MQL5. 주문함수 오류 및 해결방법. (1) | 2018.08.28 |
댓글