MQL5 위자드로 Bullish Harami 및 Bearish Harami 기반 거래 신호 생성하기

Mike 2011.03.17 02:40 54 0 0
첨부파일

안녕하세요, 트레이더 여러분! 오늘은 MQL5 위자드를 활용하여 Bullish Harami와 Bearish Harami 패턴을 기반으로 하는 거래 신호를 생성하는 방법에 대해 알아보겠습니다. 이 과정은 메타트레이더 5에서 자동 거래를 구현하는 데 큰 도움이 될 것입니다.

MQL5 위자드는 클라이언트 터미널과 함께 제공되는 표준 라이브러리 클래스를 기반으로 준비된 전문가 고문(EA)을 생성할 수 있게 해줍니다. 여러분의 거래 아이디어를 신속하게 확인하는 데 필요한 것은 자신만의 거래 신호 클래스를 만드는 것입니다. 이 클래스의 구조와 예시는 MQL5 위자드: 거래 신호 모듈 생성 방법에서 확인할 수 있습니다.

1. Bullish Harami와 Bearish Harami 패턴

1.1. Bullish Harami

Bullish Harami 패턴은 하락 추세에서 큰 캔들이 작은 캔들로 이어질 때 형성됩니다. 이 작은 캔들의 몸체는 큰 캔들의 몸체 내에 위치하게 됩니다. 이 패턴은 하락 추세가 반전될 가능성이 있음을 나타내며, 롱 포지션 진입의 좋은 시점임을 알려줍니다. 두 번째 캔들은 갭 업으로 열립니다. 두 번째(흰색) 캔들이 작을수록 반전 가능성이 높아집니다.

Bullish Harami 패턴

Fig. 1. Bullish Harami 캔들 패턴

Bullish Harami 패턴의 인식은 CheckPatternBullishHarami() 메소드에서 구현됩니다.

//+------------------------------------------------------------------+
//| Bullish Harami 캔들 패턴 형성 확인 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami() {
  //--- Bullish Harami
   if((Close(1)>Open(1)) && ... )
      return(true);
  return(false);
}

1.2. Bearish Harami

Bearish Harami 패턴은 상승 추세에서 큰 캔들이 작은 캔들로 이어질 때 형성됩니다. 이 패턴은 상승 추세가 반전될 가능성이 있음을 나타내며, 숏 포지션 진입의 좋은 시점임을 알려줍니다. 두 번째 캔들은 갭 다운으로 열립니다. 두 번째(검은색) 캔들이 작을수록 반전 가능성이 높아집니다.

Bearish Harami 패턴

Fig. 2. Bearish Harami 캔들 패턴

Bearish Harami 패턴의 인식은 CheckPatternBearishHarami() 메소드에서 구현됩니다.

//+------------------------------------------------------------------+
//| Bearish Harami 캔들 패턴 형성 확인 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami() {
  //--- Bearish Harami
   if((Close(1)<Open(1)) && ... )
      return(true);
  return(false);
}

2. CCI 지표로 확인된 거래 신호

거래 신호는 CCI 지표로 확인되어야 합니다. CCI 값이 -50(롱 포지션) 또는 50(숏 포지션) 이상의 임계 수준을 초과해야 합니다.

열려 있는 포지션의 종료는 CCI 값에 따라 달라집니다. 두 가지 경우에 해당됩니다:

  • CCI 선이 반대 임계 수준에 도달했을 때 (롱 포지션의 경우 80, 숏 포지션의 경우 -80)
  • 역 신호가 확인되지 않았을 때 (CCI가 다음 수준에 도달했을 때: -80(롱 포지션) 또는 80(숏 포지션))

Bullish Harami 패턴, CCI 지표로 확인

Fig. 3. Bullish Harami 패턴, CCI 지표로 확인

  • int CBH_BH_CCI::LongCondition() - 롱 포지션 열기 및 숏 포지션 닫기 조건 확인 (80 반환)
  • int CBH_BH_CCI::ShortCondition() - 숏 포지션 열기 및 롱 포지션 닫기 조건 확인 (80 반환)

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

  1. Bullish Harami 패턴은 CCI 지표로 확인되어야 합니다: CCI(1)<-50 (마지막 캔들의 CCI 값은 -50보다 작아야 함).

  2. 숏 포지션은 CCI 지표가 -80의 임계 수준을 상향 돌파하거나 80의 임계 수준을 하향 돌파할 때 닫아야 합니다.

//+------------------------------------------------------------------+
//| 시장 진입 조건 확인 |
//| 1) 롱 포지션 열기 (결과=80) |
//| 2) 숏 포지션 닫기 (결과=40) |
//+------------------------------------------------------------------+
int CBH_BH_CCI::LongCondition() {
   int result=0;
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (CCI(1)<-50))
     result=80;
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))
     result=40;
   return(result);
}

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

  1. Bearish Harami 패턴은 CCI 지표로 확인되어야 합니다: CCI(1)>50 (마지막 캔들의 CCI 값은 50보다 커야 함).

  2. 롱 포지션은 CCI 지표가 -80 또는 80 수준을 하향 돌파할 때 닫아야 합니다.

//+------------------------------------------------------------------+
//| 시장 진입 조건 확인 |
//| 1) 숏 포지션 열기 (결과=80) |
//| 2) 롱 포지션 닫기 (결과=40) |
//+------------------------------------------------------------------+
int CBH_BH_CCI::ShortCondition() {
   int result=0;
   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (CCI(1)>50))
     result=80;
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
   return(result);
}

2.3. MQL5 위자드를 이용한 전문가 고문 생성

CBH_BH_CCI 클래스는 표준 라이브러리 클래스에 포함되어 있지 않으므로, 이 파일을 다운로드하여 client_terminal_data older\MQL5\Include\Expert\Signal\MySignals에 저장해야 합니다. 캔들 패턴 파일도 마찬가지로 저장해야 합니다. 메타에디터를 재시작한 후 MQL5 위자드에서 사용할 수 있습니다.

전문가 고문을 생성하려면 MQL5 위자드를 실행합니다:

전문가 고문 생성

Fig. 4. MQL5 위자드를 사용한 전문가 고문 생성

전문가 고문의 이름을 지정합니다:

전문가 고문의 일반 속성

Fig. 5. 전문가 고문의 일반 속성

그 다음 사용될 거래 신호 모듈을 선택해야 합니다.

전문가 고문의 신호 속성

Fig. 6. 전문가 고문의 신호 속성

이번 경우에는 하나의 거래 신호 모듈만 사용합니다.
"Bullish Harami/Bearish Harami 확인된 CCI 기반 신호" 모듈을 추가합니다:

전문가 고문의 신호 속성

Fig. 7. 전문가 고문의 신호 속성

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

전문가 고문의 신호 속성

Fig. 8. 전문가 고문의 신호 속성

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

전문가 고문의 트레일링 속성

Fig. 9. 전문가 고문의 트레일링 속성

자금 관리 속성에 관해서는, "고정 거래량으로 거래"를 사용합니다:

전문가 고문의 자금 관리 속성

Fig. 10. 전문가 고문의 자금 관리 속성

"완료" 버튼을 누르면 생성된 전문가 고문의 코드가 Expert_ABH_BH_CCI.mq5에 저장되고, terminal_data_folder\MQL5\Experts\에 위치하게 됩니다.

생성된 전문가 고문의 기본 입력 매개변수는 다음과 같습니다:

//--- 메인 신호를 위한 입력
input int Signal_ThresholdOpen =10; // 롱 포지션을 열기 위한 신호 임계값 [0...100]
input int Signal_ThresholdClose =10; // 숏 포지션을 닫기 위한 신호 임계값 [0...100]

이 값들은 다음과 같이 변경되어야 합니다:

//--- 메인 신호를 위한 입력
input int Signal_ThresholdOpen =40; // 롱 포지션을 열기 위한 신호 임계값 [0...100]
input int Signal_ThresholdClose =20; // 숏 포지션을 닫기 위한 신호 임계값 [0...100]

Signal_ThresholdOpen/Signal_ThresholdClose 입력 매개변수는 포지션을 열고 닫기 위한 임계값을 지정할 수 있게 해줍니다.

LongCondition() 및 ShortCondition() 메소드의 코드에서는 고정 값을 지정했습니다:

  • 포지션 열기: 80;
  • 포지션 닫기: 40;

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

메인 모듈의 투표 결과는 "투표" 평균에서도 사용됩니다. 이번 경우에는 메인 모듈 + 1개의 거래 신호 모듈이므로, 임계값 설정 시 이 점을 고려해야 합니다. 이로 인해 ThresholdOpen과 ThresholdClose는 각각 40=(0+80)/2와 20=(0+40)/2로 설정되어야 합니다.

Signal_StopLevel 및 Signal_TakeLevel 입력 매개변수의 값이 0으로 설정되어 있으면, 포지션은 종료 조건이 참일 때만 닫힙니다.

2.4. 과거 백테스팅 결과

전문가 고문의 과거 데이터에 대한 백테스팅 결과를 살펴보겠습니다 (EURUSD H1, 테스트 기간: 2010.01.01-2011.03.16, PeriodCCI=11, MA_period=5).

전문가 고문 생성 시 고정 볼륨(고정 로트 거래, 0.1)을 사용했으며, 트레일링 스탑 알고리즘은 사용하지 않았습니다 (트레일링 사용 안 함).

전문가 고문의 테스트 결과

Fig. 11. 전문가 고문의 테스트 결과

최고의 입력 매개변수 세트는 전략 테스터를 통해 찾아볼 수 있습니다.

생성된 전문가 고문의 코드는 expert_abh_bh_cci.mq5로 첨부되어 있습니다.

목록
댓글 0