시스템트레이딩 게시글

MQL5 위자드를 활용한 이동 평균 교차 기반 트레이드 신호 생성하기

첨부파일
248.zip (3.15 KB, 다운로드 0회)

MQL5 위자드는 전문가 고문(EA)의 코드를 자동으로 생성할 수 있는 도구입니다. 자세한 내용은 MQL5 위자드에서 준비된 전문가 고문 만들기를 참조하세요.

이번 포스트에서는 이동 평균(MA) 지표를 활용한 가격 교차 기반의 트레이딩 전략을 소개할게요. 이 전략은 "MA를 통한 가격 교차 기반의 신호"라고 불리며, MQL5 위자드에서 EA를 자동으로 생성할 때 사용됩니다.

트레이드 신호

  • 매수: 가격이 이동 평균을 상향으로 교차할 때
  • 매도: 가격이 이동 평균을 하향으로 교차할 때
  • MA의 상승/하락 체크로 잘못된 신호를 필터링합니다.

이 전략은 CSignalMA 클래스에서 구현되어 있으며, MQL5 표준 라이브러리의 트레이딩 전략 클래스에 포함되어 있습니다 (MQL5\Include\Expert\Signal\SignalMA.mqh 위치에 있음).

이동 평균을 통한 가격 교차 기반의 트레이드 신호

이동 평균을 통한 가격 교차 기반의 트레이드 신호

트레이딩 전략의 구현

이 트레이딩 전략은 CSignalMA 클래스에 구현되어 있으며, 지표와 가격 값에 접근하는 데 도움을 주는 여러 보호된 메소드가 있습니다:

double  MA(int ind)          // 바의 이동 평균 값 반환
double  Open(int ind)        // 바의 시가 반환
double  Close(int ind)        // 바의 종가 반환
double  StateMA(int ind)     // 평균이 상승하면 양수, 하락하면 음수 반환
double  StateOpen(int ind)   // 시가와 이동 평균의 차이 반환
double  StateClose(int ind)   // 종가와 이동 평균의 차이 반환
0번(미완성) 바의 가격 및 지표 값은 변경될 수 있으므로, 거래 조건 체크는 완료된(형성된) 바 데이터를 사용해야 합니다.

1. 롱 포지션 오픈

롱 포지션을 열기 위한 조건(가격이 MA를 교차하고 MA 상승 확인):

  • Open(1)<MA(1): 시가가 이동 평균보다 낮음;
  • Close(1)>MA(1): 종가가 이동 평균보다 높음;
  • MA(1)>MA(2): 이동 평균의 상승을 확인하여 잘못된 신호 필터링.
//+------------------------------------------------------------------+
//| 롱 포지션 오픈 조건 체크                    |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- 가격이 MA를 상향 교차하고 MA가 상승함
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }

2. 롱 포지션 종료

롱 포지션을 종료하기 위한 조건(가격이 MA를 교차하고 MA 하락 확인):

  • Open(1)>MA(1): 시가가 이동 평균보다 높음;
  • Close(1)<MA(1): 종가가 이동 평균보다 낮음;
  • MA(1)<MA(2): 이동 평균의 하락을 확인하여 잘못된 신호 필터링.
//+------------------------------------------------------------------+
//| 롱 포지션 종료 조건 체크                         |
//+------------------------------------------------------------------+
bool CSignalMA::CheckCloseLong(double& price)
  {
   price=0.0;
//--- 가격이 이동 평균을 하향 교차하고 이동 평균이 하락함
  return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


3. 숏 포지션 오픈

숏 포지션을 열기 위한 조건은 롱 포지션 종료 조건과 동일합니다.

//+------------------------------------------------------------------+
//| 숏 포지션 오픈 조건 체크 (판매)                  |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- 가격이 이동 평균을 상향 교차하고 이동 평균이 하락함 
   return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


4. 숏 포지션 종료

숏 포지션을 종료하기 위한 조건은 롱 포지션 오픈 조건과 동일합니다.

//+------------------------------------------------------------------+
//| 숏 포지션 종료 조건 체크                        |
//+------------------------------------------------------------------+
bool CSignalMA::CheckCloseShort(double& price)
  {
   price=0.0;
//--- 가격이 이동 평균을 상향 교차하고 이동 평균이 상승함
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }
//+------------------------------------------------------------------+

MQL5 위자드를 활용한 전문가 고문 만들기

이 전략 기반의 트레이딩 로봇을 만들기 위해서는 "MA를 통한 가격 교차 기반의 신호"를 신호 속성으로 선택한 후 MQL5 위자드의 "준비된 전문가 고문 만들기" 옵션에서 진행하면 됩니다:

MQL5 위자드에서 신호 선택하기

MQL5 위자드에서 신호 선택하기

그 다음 필요한 트레일링 스톱 알고리즘과 자금 및 리스크 관리 시스템을 설정하면, EA의 코드가 자동으로 생성됩니다. 이후 이를 컴파일하고 전략 테스터에서 테스트할 수 있습니다.


테스트 결과

이제 이 전문가 고문을 과거 데이터(EURUSD H1, 사용자 정의 기간: 2010.01.01-2011.05.01, MA_period=12, MA_Shift=0)를 이용해 백테스트해보겠습니다.

전문가 고문 제작 시 고정 볼륨(고정 로트 거래, 0.1)을 사용하였으며, 트레일링 스톱 알고리즘은 사용하지 않았습니다 (트레일링 미사용).

이동 평균 교차 백테스트 결과

이동 평균 교차 백테스트 결과

첨부 파일: SignalMA.mqh 파일과 CSignalMA 클래스를 포함한 파일은 MQL5\Include\Expert\Signal 폴더에 위치해 있습니다. crossoverma.mq5 파일은 MQL5 위자드를 사용하여 생성된 전문가 고문의 코드가 포함되어 있습니다.

연관 포스트

댓글 (0)