시스템트레이딩 게시글

MQL5 위자드를 활용한 EMA 교차 기반 거래 신호 생성하기

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

MQL5 위자드를 사용하면 자동으로 전문가 어드바이저(EA)의 코드를 생성할 수 있습니다. 자세한 내용은 MQL5 위자드에서 준비된 EA 만들기를 참고하세요.

이번 포스트에서는 두 개의 지수 이동 평균(빠른 EMA와 느린 EMA)의 교차를 기반으로 한 거래 전략을 살펴보겠습니다. 이 전략은 “두 EMA의 교차 기반 신호”라고 불리며, MQL5 위자드에서 EA를 자동으로 생성할 때 사용됩니다.

거래 신호:

  • 매수: 빠른 EMA가 느린 EMA를 위로 교차할 때
  • 매도: 빠른 EMA가 느린 EMA를 아래로 교차할 때

이 전략은 CSignalCrossEMA 클래스에 구현되어 있습니다.

두 개의 지수 이동 평균 교차 기반 거래 신호

그림 1. 두 개의 지수 이동 평균 교차 기반 거래 신호


거래 신호

거래 전략은 CSignalCrossEMA 클래스에 구현되어 있으며, 지표 값에 쉽게 접근할 수 있도록 몇 가지 보호된 메소드를 제공합니다:

double   FastEMA(int ind)      // 빠른 이동 평균의 바 값 반환
double   SlowEMA(int ind)      // 느린 이동 평균의 바 값 반환
double   StateEMA(int ind)     // 빠른 EMA와 느린 EMA의 차이 반환

1. 롱 포지션 열기

롱 포지션을 열기 위한 조건:

  • StateEMA(1) > 0 및 StateEMA(2) < 0: 마지막 완료된 바에서 빠른 EMA가 느린 EMA를 위로 교차했습니다.
//+------------------------------------------------------------------+
//| 롱 포지션 열기 조건 체크                    |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   return(true);
  }

2. 롱 포지션 닫기

롱 포지션을 닫기 위한 조건:

  • StateEMA(1) < 0 및 StateEMA(2) > 0: 마지막 완료된 바에서 빠른 EMA가 느린 EMA를 아래로 교차했습니다.
//+------------------------------------------------------------------+
//| 롱 포지션 닫기 조건 체크                         |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseLong(double& price)
  {
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }

3. 숏 포지션 열기

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

//+------------------------------------------------------------------+
//| 숏 포지션 열기 조건 체크                  |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   return(true);
  }

4. 숏 포지션 닫기

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

//+------------------------------------------------------------------+
//| 숏 포지션 닫기 조건 체크                        |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseShort(double& price)
  {
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }

MQL5 위자드를 사용한 전문가 어드바이저 생성하기

전략 기반의 거래 로봇을 만들기 위해서는 신호 속성을 “두 EMA의 교차 기반 신호”로 선택해야 합니다. MQL5 위자드의 준비된 전문가 어드바이저 만들기 옵션에서 선택하세요:

MQL5 위자드에서 두 EMA의 교차 기반 신호 선택하기

그림 2. MQL5 위자드에서 “두 EMA의 교차 기반 신호” 선택하기

다음으로 필요한 트레일링 스톱 알고리즘과 자금 및 리스크 관리 시스템을 지정해야 합니다. 전문가 어드바이저의 코드는 자동으로 생성되며, 이를 컴파일하고 메타트레이더 5 클라이언트 터미널의 전략 테스터에서 테스트할 수 있습니다.

추가로, 표준 라이브러리 클래스에는 CSignalCrossMA 클래스에서 구현된 “두 MA의 교차 기반 신호”가 포함되어 있습니다. 거래 아이디어는 유사하지만, 추가 기능이 많습니다(유형, 이동 평균 방법, 손익 수준 지정 등).

MQL5 위자드에서 두 MA의 교차 기반 신호 선택하기

그림 3. MQL5 위자드에서 “두 MA의 교차 기반 신호” 선택하기


테스트 결과

전문가 어드바이저의 히스토리 데이터(EURUSD H1, 테스트 기간: 2010년 1월 1일 ~ 2011년 5월 1일, FastPeriod=12, SlowPeriod=24)를 백테스트 해보겠습니다.

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

두 EMA 교차 기반 전문가 어드바이저의 히스토리 백테스트 결과

그림 4. 두 EMA 교차 기반 전문가 어드바이저의 히스토리 백테스트 결과


첨부파일: CSignalCrossEMA 클래스가 포함된 SignalCrossEMA.mqh 파일을 terminal_data_folder\MQL5\Include\Expert\Signal 폴더에 배치해야 합니다. crossover_2ema.mq5는 MQL5 위자드를 사용해 생성된 전문가 어드바이저의 코드입니다.

연관 포스트

댓글 (0)