시스템트레이딩 게시글

MQL5 위자드로 해머/행잉맨 패턴과 MFI 기반 트레이딩 신호 생성하기

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

안녕하세요, 트레이더 여러분! 오늘은 MQL5 위자드를 사용하여 해머 및 행잉맨 패턴을 기반으로 한 트레이딩 신호를 생성하는 방법에 대해 알아보겠습니다. 이 도구는 메타트레이더 5에서 전문가 어드바이저(EA)를 쉽게 만들 수 있도록 도와줍니다.

먼저, 거래 아이디어를 빠르게 확인하기 위해 자신만의 거래 신호 클래스를 작성해야 합니다. 이 클래스의 구조와 예제는 MQL5 위자드: 거래 신호 모듈 만들기에서 찾아볼 수 있습니다.

기본 아이디어는 거래 신호 클래스가 CExpertSignal에서 파생된다는 것입니다. 이후 LongCondition()ShortCondition() 메소드를 오버라이드하여 자신만의 메소드를 만들어야 합니다.

우리는 반전 캔들 패턴 중 해머와 행잉맨 패턴을 다룰 것입니다. 이 패턴은 MFI 지표로 확인됩니다.

1. 해머 및 행잉맨 캔들 패턴

1.1. 해머

해머는 작은 몸체와 긴 하단 심지를 가진 캔들로, 하락세에서 형성됩니다. 해머 패턴은 하락 추세의 끝을 나타냅니다. 캔들 몸체의 색상은 중요하지 않지만, 상승 해머는 더 큰 상승 잠재력을 나타냅니다.

해머 캔들 패턴

Fig. 1. 해머 캔들 패턴

해머 패턴 인식은 CheckPatternHammer() 메소드를 통해 이루어집니다. 아래는 그 코드입니다:

//+------------------------------------------------------------------+
//| 해머 캔들 패턴 형성 체크 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHammer()
  {
   //--- 해머 체크
   if((MidPoint(1)2)) && // 하락 추세
      (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1)/3.0)) && // 몸체가 상단 1/3에 위치
      (Close(1)2)) && (Open(1)2)))
   return(true);
   return(false);
  }

1.2. 행잉맨

행잉맨은 작은 몸체와 긴 하단 심지를 가진 캔들로, 상승세에서 형성됩니다. 이 패턴은 상승 추세의 끝을 나타냅니다. 행잉맨 패턴의 색상은 중요하지 않지만, 하락 캔들은 더 큰 하락 잠재력을 나타냅니다.

행잉맨 캔들 패턴

Fig. 2. 행잉맨 캔들 패턴

행잉맨 패턴 인식은 CheckPatternHangingMan() 메소드를 통해 이루어집니다:

//+------------------------------------------------------------------+
//| 행잉맨 캔들 패턴 형성 체크 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHangingMan()
  {
   //--- 행잉맨 체크
   if((MidPoint(1)>CloseAvg(2)) && // 상승 추세
      (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1)/3.0)) && // 몸체가 상단 1/3에 위치
      (Close(1)>Close(2)) && (Open(1)>Open(2)))
   return(true);
   return(false);
  }

2. MFI 지표로 확인되는 거래 신호

거래 신호를 열거나 닫기 위해서는 MFI 지표로 확인해야 합니다. MFI 값은 롱 포지션의 경우 40 미만, 숏 포지션의 경우 60 초과여야 합니다.

  • 롱 포지션을 열기 위한 조건: MFI(1) < 40
  • 숏 포지션을 닫기 위한 조건: MFI가 상향으로 70 또는 30의 임계 수준을 넘었을 경우

해머 패턴, MFI 지표로 확인

Fig. 3. 해머 패턴, MFI 지표로 확인

2.1. 롱 포지션 열기 / 숏 포지션 닫기

  1. 해머 패턴이 MFI 지표로 확인되어야 합니다: MFI(1) < 40.

  2. 숏 포지션은 MFI 지표가 70 또는 30의 임계 수준을 넘었을 때 닫아야 합니다.

//+------------------------------------------------------------------+
//| 시장 진입 및 퇴출 조건 체크 |
int CH_HM_MFI::LongCondition()
  {
   int result=0;
   if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (MFI(1)<40))
     result=80;
   return result;
  }

2.2. 숏 포지션 열기 / 롱 포지션 닫기

  1. 행잉맨 패턴이 MFI 지표로 확인되어야 합니다: MFI(1) > 60.

  2. 롱 포지션은 MFI 지표가 70 또는 30의 임계 수준을 넘었을 때 닫아야 합니다.

//+------------------------------------------------------------------+
//| 시장 진입 및 퇴출 조건 체크 |
int CH_HM_MFI::ShortCondition()
  {
   int result=0;
   if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (MFI(1)>60))
     result=80;
   return result;
  }

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

CH_HM_MFI 클래스는 표준 라이브러리에 포함되어 있지 않으므로, ah_hm_mfi.mqh 파일을 다운로드하여 terminal_data_folder\MQL5\Include\Expert\Signal\MySignals에 저장해야 합니다.

전문가 어드바이저를 생성하려면 MQL5 위자드를 실행합니다:

전문가 어드바이저 생성하기

Fig. 4. 전문가 어드바이저 생성하기

전문가 어드바이저의 이름을 지정합니다:

전문가 어드바이저 일반 속성

Fig. 5. 전문가 어드바이저 일반 속성

그 다음, 사용하려는 거래 신호 모듈을 선택합니다.

전문가 어드바이저 신호 속성

Fig. 6. 전문가 어드바이저 신호 속성

우리의 경우, 한 개의 거래 신호 모듈만 사용합니다.

"MFI로 확인된 해머/행잉맨 기반 신호" 모듈 추가:

전문가 어드바이저 신호 속성

Fig. 7. 전문가 어드바이저 신호 속성

거래 신호 모듈이 추가되었습니다:

전문가 어드바이저 신호 속성

Fig. 8. 전문가 어드바이저 신호 속성

원하는 트레일링 속성을 선택할 수 있지만, 우리는 "트레일링 스탑 사용 안 함"을 사용할 것입니다:

전문가 어드바이저 트레일링 속성

Fig. 9. 전문가 어드바이저 트레일링 속성

자금 관리 속성에 대해, "고정 거래량으로 거래하기"를 사용할 것입니다:

전문가 어드바이저 자금 관리 속성

Fig. 10. 전문가 어드바이저 자금 관리 속성

"완료" 버튼을 누르면 생성된 전문가 어드바이저의 코드가 Expert_AH_HM_MFI.mq5에 저장됩니다.

생성된 전문가 어드바이저의 기본 입력 파라미터:

//--- 주요 신호 입력
input int Signal_ThresholdOpen =10;// 포지션 오픈 신호 임계값 [0...100]
input int Signal_ThresholdClose =10;// 포지션 클로즈 신호 임계값 [0...100]

여기서 Signal_ThresholdOpen/Signal_ThresholdClose 입력 파라미터는 포지션 오픈 및 클로즈에 대한 임계값을 지정할 수 있습니다.

전문가 어드바이저의 거래 신호 클래스의 LongCondition()ShortCondition() 메소드의 코드에서 고정값의 임계값을 설정했습니다:

  • 포지션 오픈: 80;
  • 포지션 클로즈: 40.

MQL5 위자드로 생성된 전문가 어드바이저는 거래 신호 모듈의 "투표"를 사용하여 포지션을 열고 닫습니다. 주요 모듈의 투표 결과도 사용되며, 이 모듈의 LongCondition()ShortCondition() 메소드는 항상 0을 반환합니다.

2.4. 이력 백테스트 결과

이제 해머/행잉맨 + MFI 기반의 전문가 어드바이저에 대한 이력 백테스트 결과를 살펴보겠습니다. (유로/달러 H1, 테스트 기간: 2010.01.01-2011.03.16).

해머/행잉맨 + MFI 기반의 테스트 결과

Fig. 11. 해머/행잉맨 + MFI 기반의 테스트 결과

최고의 입력 파라미터 세트는 전략 테스터를 통해 찾을 수 있습니다.

MQL5 위자로 생성된 전문가 어드바이저의 코드는 expert_ah_hm_mfi.mq5에 첨부되어 있습니다.

연관 포스트

댓글 (0)