MQL5 위자드 활용법: RSI 기반의 'Bullish Engulfing/Bearish Engulfing' 신호

Mike 2011.03.10 19:55 58 0 0
첨부파일

안녕하세요, 트레이더 여러분! 오늘은 MQL5 위자드를 활용하여 'Bullish Engulfing'과 'Bearish Engulfing' 패턴을 기반으로 한 거래 신호를 생성하는 방법에 대해 알아보겠습니다. 이 방법은 메타트레이더 5에서 시스템 트레이딩을 구현할 때 유용합니다.

MQL5 위자드는 표준 라이브러리와 함께 제공되는 클래스를 기반으로 신호를 생성할 수 있는 기능을 제공합니다. 자신의 거래 아이디어를 빠르게 검증할 수 있는데, 간단하게 거래 신호 클래스를 만들어 주기만 하면 됩니다. 자세한 구조와 예시는 MQL5 위자드: 거래 신호 모듈 생성 방법를 참고하세요.

거래 신호 클래스는 CExpertSignal 클래스를 상속받아 생성되며, 'LongCondition()'과 'ShortCondition()' 메서드를 오버라이드하여 자신만의 조건을 설정해야 합니다.

1. 'Bullish Engulfing'과 'Bearish Engulfing'

1.1. Bullish Engulfing

'Bullish Engulfing' 패턴은 하락 추세에서 작은 검은 캔들이 큰 흰 캔들로 완전히 감싸는 형태로 나타납니다. 작은 캔들의 그림자는 짧고, 큰 캔들의 본체가 이전 날의 캔들을 모두 덮습니다.

Bullish Engulfing 캔들 패턴

Fig. 1. Bullish Engulfing 캔들 패턴

'Bullish Engulfing' 패턴의 인식은 CheckPatternBullishEngulfing() 메서드에서 이루어집니다:

//+------------------------------------------------------------------+
//| Bullish Engulfing 캔들 패턴 확인 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishEngulfing() {
    //--- Bullish Engulfing
    if((Open(2) > Close(2) &&
        (Close(1) - Open(1) > AvgBody(1)) &&
        (Close(1) > Open(2)) &&
        (MidOpenClose(2) < CloseAvg(2)) &&
        (Open(1) < Close(2))) {
        return true;
    }
    return false;
}

'Bullish Engulfing' 패턴의 확인은 CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) 메서드를 통해 이루어집니다.


1.2. Bearish Engulfing

'Bearish Engulfing' 패턴은 상승 추세에서 작은 흰 캔들이 큰 검은 캔들로 감싸지는 형태로 나타납니다. 이때도 작은 캔들의 그림자는 짧습니다.

Bearish Engulfing 캔들 패턴

Fig. 2. Bearish Engulfing 캔들 패턴

'Bearish Engulfing' 패턴의 인식은 CheckPatternBearishEngulfing() 메서드에서 이루어집니다:

//+------------------------------------------------------------------+
//| Bearish Engulfing 캔들 패턴 확인 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishEngulfing() {
    //--- Bearish Engulfing
    if((Open(2) < Close(2) &&
        (Open(1) - Close(1) > AvgBody(1)) &&
        (Close(1) < Open(2)) &&
        (MidOpenClose(2) > CloseAvg(2)) &&
        (Open(1) > Close(2))) {
        return true;
    }
    return false;
}

'Bearish Engulfing' 패턴의 확인은 CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) 메서드를 통해 이루어집니다.


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

'Bullish Engulfing' 또는 'Bearish Engulfing' 패턴이 생성된 후, 해당 거래 신호는 RSI 지표로 확인해야 합니다. RSI 값은 롱 포지션의 경우 40 이하, 숏 포지션의 경우 60 이상이어야 합니다.

포지션 종료는 RSI 값이 반대의 임계 수준(롱 포지션은 70, 숏 포지션은 30)에 도달했을 때나, 반전 신호가 확인되지 않았을 때 이루어집니다.

  • int CBE_BE_RSI::LongCondition() - 롱 포지션을 열 조건을 확인 (80 반환) 및 숏 포지션 종료 조건 확인 (40 반환);
  • int CBE_BE_RSI::ShortCondition() - 숏 포지션을 열 조건을 확인 (80 반환) 및 롱 포지션 종료 조건 확인 (40 반환).

2.1. 롱 포지션 열기 / 숏 포지션 종료

  1. RSI 지표가 40 이하일 때 'Bullish Engulfing' 패턴이 확인되어야 합니다.
  2. RSI 지표가 70 또는 30의 임계 수준을 넘어설 경우, 숏 포지션을 종료해야 합니다.
//+------------------------------------------------------------------+
//| 시장 진입 및 종료 조건 확인 |
//+------------------------------------------------------------------+
int CBE_BE_RSI::LongCondition() {
    int result = 0;
    if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (RSI(1) < 40))
        result = 80;
    if(((RSI(1) > 30) && (RSI(2) < 30)) || ((RSI(1) > 70) && (RSI(2) < 70)))
        result = 40;
    return(result);
}

2.2. 숏 포지션 열기 / 롱 포지션 종료

  1. RSI 지표가 60 이상일 때 'Bearish Engulfing' 패턴이 확인되어야 합니다.
  2. RSI 지표가 30 또는 70의 임계 수준을 넘어설 경우, 롱 포지션을 종료해야 합니다.
//+------------------------------------------------------------------+
//| 시장 진입 및 종료 조건 확인 |
//+------------------------------------------------------------------+
int CBE_BE_RSI::ShortCondition() {
    int result = 0;
    if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (RSI(1) > 60))
        result = 80;
    if(((RSI(1) < 70) && (RSI(2) > 70)) || ((RSI(1) < 30) && (RSI(2) > 30)))
        result = 40;
    return(result);
}

2.3. MQL5 위자드를 사용한 Expert Advisor 생성하기

CBE_BE_RSI 클래스는 표준 라이브러리에 포함되어 있지 않으므로, acml_rsi.mqh 파일을 다운로드하여 client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals에 저장해야 합니다. acandlepatterns.mqh 파일도 같은 방식으로 저장해야 합니다. 저장 후, 메타에디터를 재시작하면 MQL5 위자드에서 사용할 수 있습니다.

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

MQL5 위자드로 Expert Advisor 생성

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

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

Expert Advisor의 일반 속성

Fig. 5. Expert Advisor의 일반 속성

이후 사용되는 거래 신호 모듈을 선택합니다.

Expert Advisor의 신호 속성

Fig. 6. Expert Advisor의 신호 속성

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

Expert Advisor의 신호 속성

Fig. 7. Expert Advisor의 신호 속성

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

Expert Advisor의 신호 속성

Fig. 8. Expert Advisor의 신호 속성

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

Expert Advisor의 트레일링 속성

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

자금 관리 속성에 대해서는 "고정 거래량으로 거래"를 선택합니다:

Expert Advisor의 자금 관리 속성

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

"완료" 버튼을 누르면 생성된 Expert Advisor의 코드가 Expert_ABE_BE_RSI.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는 거래 신호 모듈에서

목록
댓글 0