시스템트레이딩 게시글

MQL5 위자드로 만드는 Bullish/Bearish Meeting Lines 기반 거래 신호와 MFI

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

안녕하세요, 트레이더 여러분! 오늘은 MQL5 위자드를 활용하여 Bullish/Bearish Meeting Lines 패턴을 기반으로 한 거래 신호를 생성하는 방법에 대해 알아보겠습니다. 이 도구는 거래 아이디어를 신속하게 확인할 수 있도록 도와주며, 자신의 거래 신호 클래스를 만드는 것만으로 가능합니다. 자세한 내용은 MQL5 위자드: 거래 신호 모듈 생성 방법를 참고하세요.

기본적인 아이디어는 다음과 같습니다. 거래 신호 클래스는 CExpertSignal에서 파생되며, 이후 LongCondition()ShortCondition() 메서드를 오버라이드하여 자신만의 메서드를 구현하면 됩니다.

러시아어로 된 "최고 트레이더의 전략"라는 책에서는 다양한 거래 전략을 다룹니다. 우리는 여기서 Stochastic, CCI, MFI, RSI와 같은 오실레이터로 확인되는 반전 캔들 패턴에 초점을 맞출 것입니다.

캔들 패턴의 형성을 확인하기 위해서는 CExpertSignal에서 파생된 별도의 클래스를 만드는 것이 좋습니다. 캔들 패턴으로 생성된 거래 신호를 확인하기 위해서는 CCandlePattern에서 파생된 클래스를 작성하고, 필요한 기능(예: 오실레이터에 의한 확인)을 추가하면 됩니다.

이제 Bullish/Bearish Meeting Lines 반전 캔들 패턴에 기반한 신호를 살펴보겠습니다. 우리는 MFI(시장 촉진 지수) 지표로 확인된 거래 신호 모듈을 사용할 것입니다. 이 거래 신호 모듈은 CCandlePattern 클래스를 기반으로 하며, 캔들 패턴으로 거래 신호를 생성하는 간단한 예시입니다.


1. Meeting Lines 반전 캔들 패턴

1.1. Bullish Meeting Lines

Bullish Meeting Lines 패턴은 두 개의 캔들(하락 캔들과 상승 캔들)로 구성되며, 종가가 같거나 매우 가까워야 합니다. 두 캔들의 몸체는 평균 몸체 길이보다 커야 합니다.

Bullish Meeting Lines 패턴은 하락 추세의 반전을 나타냅니다.

Figure 1. 'Bullish Meeting Lines' 패턴

Fig. 1. 'Bullish Meeting Lines' 패턴

Bullish Meeting Lines 패턴 인식은 CheckPatternBullishMeetingLines() 메서드에서 구현됩니다:

//+--------------------------------------------------------------------+
//| "Bullish Meeting Lines" 캔들 패턴 형성 확인    |
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishMeetingLines()
  {
//--- Bullish Meeting Lines
   if((Open(2)-Close(2)>AvgBody(1))              && // 긴 검은색
     ((Close(1)-Open(1))>AvgBody(1))             && // 긴 흰색
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))   // 도지 마감
      return(true);
//---
   return(false);
  }

CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) 메서드는 "Bullish Meeting Lines" 캔들 패턴의 형성을 확인하는 데 사용됩니다.


1.2. Bearish Meeting Lines

Bearish Meeting Lines 패턴은 두 개의 캔들(상승 캔들과 하락 캔들)로 구성되며, 종가가 같거나 매우 가까워야 합니다. 두 캔들의 몸체는 평균 몸체 길이보다 커야 합니다.

Bearish Meeting Lines 패턴은 상승 추세의 반전을 나타냅니다.

Figure 2. 'Bearish Meeting Lines' 패턴

Fig. 2. 'Bearish Meeting Lines' 패턴

Bearish Meeting Lines 패턴 인식은 CheckPatternBearishMeetingLines() 메서드에서 구현됩니다:

//+--------------------------------------------------------------------+
//| "Bearish Meeting Lines" 캔들 패턴 형성 확인    |
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishMeetingLines()
  {
//--- Bearish Meeting Lines
   if((Close(2)-Open(2)>AvgBody(1))             && // 긴 흰색
     ((Open(1)-Close(1)>AvgBody(1))             && // 긴 검은색
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))  // 도지 마감
      return(true);
//---
   return(false);
  }

CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) 메서드는 "Bearish Meeting Lines" 캔들 패턴의 형성을 확인하는 데 사용됩니다.


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

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

열린 포지션의 마감은 MFI 지표의 값에 따라 결정됩니다. 이는 두 가지 경우로 가능합니다:

  1. MFI가 반대의 중요 수준(롱 포지션의 경우 70, 숏 포지션의 경우 30)에 도달했을 때
  2. 역신호가 확인되지 않았을 때(MFI 지표가 다음 수준에 도달했을 때: 롱 포지션의 경우 30, 숏 포지션의 경우 70)

Fig. 3. Bearish Meeting Lines 패턴, MFI 지표로 확인됨

Figure 3. Bearish Meeting Lines 패턴, MFI 지표로 확인됨


  • int CML_MFI::LongCondition() - 롱 포지션 열기 조건 확인(80 반환) 및 숏 포지션 마감 조건 확인(40 반환);
  • int CML_MFI::ShortCondition() - 숏 포지션 열기 조건 확인(80 반환) 및 롱 포지션 마감 조건 확인(40 반환).

2.1. 롱 포지션 열기/숏 포지션 마감

  1. Bullish Meeting Lines 패턴의 형성은 MFI 지표로 확인해야 합니다: MFI(1)<40 (마지막 완료된 막대의 MFI 값이 40 미만이어야 합니다).

  2. 숏 포지션은 MFI 지표가 중요한 수준(70 또는 30)을 상향 돌파했을 때 마감해야 합니다.

//+------------------------------------------------------------------+
//| 시장 진입 및 퇴출 조건 확인                 |
//| 1) 시장 진입 (롱 포지션 열기, 결과=80)                  |
//| 2) 시장 퇴출 (숏 포지션 마감, 결과=40)                  |
//+------------------------------------------------------------------+
int CML_MFI::LongCondition()
  {
   int result=0;
   //--- idx는 Expert Advisor 작업 모드를 결정하는 데 사용될 수 있습니다
   //--- idx=0 - 이 경우 EA는 각 틱마다 거래 조건을 확인합니다
   //--- idx=1 - 이 경우 EA는 뉴스 막대에서만 거래 조건을 확인합니다
   int idx   =StartIndex();
   //--- 롱 포지션 열기 조건 확인
   //--- Bullish Meeting Lines 패턴 형성 및 MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (MFI(1)<40))
     result=80;
   //--- 숏 포지션 마감 조건 확인
   //--- 과매수/과매도 수준의 신호선 교차 (상향 30, 상향 70)
  if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
     result=40;
   //--- 결과 반환
   return(result);
  }


2.2. 숏 포지션 열기/롱 포지션 마감

  1. Bearish Meeting Lines 패턴의 형성은 MFI 지표로 확인해야 합니다: MFI(1)>60 (마지막 완료된 막대의 MFI 값이 60 초과이어야 합니다).

  2. 롱 포지션은 MFI 지표가 중요한 수준(70 또는 30)을 상향/하향 돌파했을 때 마감해야 합니다.

//+------------------------------------------------------------------+
//| 시장 진입 및 퇴출 조건 확인                 |
//| 1) 시장 진입 (숏 포지션 열기, 결과=80)                 |
//| 2) 시장 퇴출 (롱 포지션 마감, 결과=40)                  |
//+------------------------------------------------------------------+
int CML_MFI::ShortCondition()
  {
   int result=0;
   //--- idx는 Expert Advisor 작업 모드를 결정하는 데 사용될 수 있습니다
   //--- idx=0 - 이 경우 EA는 각 틱마다 거래 조건을 확인합니다
   //--- idx=1 - 이 경우 EA는 뉴스 막대에서만 거래 조건을 확인합니다
   int idx   =StartIndex();
   //--- 숏 포지션 열기 조건 확인
   //--- Bearish Meeting Lines 패턴 형성 및 MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (MFI(1)>60))
     result=80;
   //--- 롱 포지션 마감 조건 확인
   //--- 신호선 교차 (과매수/과매도 수준, 상향 70, 하향 30)
  if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
     result=40;
   //--- 결과 반환
   return(result);
  }

2.3. MQL5 위자드로 Expert Advisor 생성하기

CML_MFI 클래스는 표준 라이브러리 클래스에 포함되어 있지 않으므로, 사용하려면 aml_mfi.mqh 파일을 다운로드하여 client_terminal_data\MQL5\Include\Expert\Signal\MySignals 폴더에 저장해야 합니다. acandlepatterns.mqh 파일도 동일하게 처리해야 합니다. 이를 MQL5 위자드에서 사용하려면 MetaEditor를 재시작해야 합니다.

Expert Advisor를 생성하려면 MQL5 위자드를 실행하세요:

Fig. 4. MQL5 위자드로 Expert Advisor 생성하기

Fig. 4. MQL5 위자드로 Expert Advisor 생성하기

Expert Advisor의 이름을 지정합시다:

Fig. 5. Expert Advisor의 일반 속성

Fig. 5. Expert Advisor의 일반 속성

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

Fig. 6. Expert Advisor의 신호 속성

Fig. 6. Expert Advisor의 신호 속성

이번 경우에는 하나의 거래 신호 모듈만 사용합니다.

"MFI로 확인된 Bullish/Bearish Meeting Lines 기반 신호" 거래 신호 모듈 추가:

Fig. 7. Expert Advisor의 신호 속성

Fig. 7. Expert Advisor의 신호 속성

거래 신호 모듈 추가됨:

Fig. 8. Expert Advisor의 신호 속성

Fig. 8. Expert Advisor의 신호 속성

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

Fig. 9. Expert Advisor의 트레일링 속성

Fig. 9. Expert Advisor의 트레일링 속성

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

Fig. 10. Expert Advisor의 자금 관리 속성

Fig. 10. Expert Advisor의 자금 관리 속성

"마침" 버튼을 누르면 생성된 Expert Advisor의 코드가 Expert_AML_MFI.mq5에 위치하여 terminal_data_folder\MQL5\Experts\에 저장됩니다.

생성된 Expert Advisor의 기본 입력 매개변수는 다음과 같습니다:

//--- 메인 신호를 위한 입력값
input int            Signal_ThresholdOpen   =10;     // 포지션 열기 위한 신호 임계값 [0...100]
input int            Signal_ThresholdClose  =10;     // 포지션 마감 위한 신호 임계값 [0...100]
input double         Signal_PriceLevel      =0.0;    // 거래 실행을 위한 가격 수준
input double         Signal_StopLevel       =50.0;   // 손절매 수준 (포인트 단위)
input double         Signal_TakeLevel       =50.0// 이익 실현 수준 (포인트 단위)

다음으로 변경해야 할 사항은:

//--- 메인 신호를 위한 입력값
input int            Signal_ThresholdOpen   =40;     // 포지션 열기 위한 신호 임계값 [0...100]
input int            Signal_ThresholdClose  =20;     // 포지션 마감 위한 신호 임계값 [0...100]
input double         Signal_PriceLevel      =0.0;    // 거래 실행을 위한 가격 수준
input double         Signal_StopLevel       =0.0;    // 손절매 수준 (포인트 단위)
input double         Signal_TakeLevel       =0.0    // 이익 실현 수준 (포인트 단위)

Signal_ThresholdOpen/Signal_ThresholdClose 입력 매개변수는 포지션 열기 및 마감을 위한 임계 수준을 지정할 수 있습니다.

LongCondition() 및 ShortCondition() 메서드의 코드에서 고정된 임계값이 지정되어 있습니다:

  • 포지션 열기: 80;
  • 포지션 마감: 40.

MQL5 위자드로 생성된 Expert Advisor는 거래 신호 모듈에서의 "투표"를 사용하여 포지션을 열고 닫습니다. 기본 모듈의 투표 결과는 평균화에 사용됩니다. 이번 경우에는 기본 모듈 + 1개의 거래 신호 모듈이 있으므로 임계값 설정 시 이를 고려해야 합니다. 따라서 ThresholdOpen과 ThresholdClose는 40=(0+80)/2, 20=(0+40)/2로 설정해야 합니다.

Signal_StopLevel과 Signal_TakeLevel 입력 매개변수는 0으로 설정되어 있습니다. 이는 포지션의 마감은 오직 마감 조건이 참일 때만 수행됨을 의미합니다.


2.4. 역사적 백테스팅 결과

Expert Advisor의 역사적 데이터(EURUSD H1, 테스트 기간: 2000.01.01-2011.03.16, PeriodMFI=12, MA_period=4)에서 백테스팅을 고려해보겠습니다.

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

Fig. 11. Bullish/Bearish Meeting Lines + MFI 기반 Expert Advisor 테스트 결과

Fig. 11. Bullish/Bearish Meeting Lines + MFI 기반 Expert Advisor 테스트 결과


가장 좋은 입력 매개변수 세트는 전략 테스터를 통해 찾아낼 수 있습니다.

MQL5 위자드로 생성된 Expert Advisor의 코드는 expert_aml_mfi.mq5에 첨부되어 있습니다.


연관 포스트

댓글 (0)