시스템트레이딩 게시글

MQL5 위자드를 활용한 다크 클라우드 커버/피어싱 라인 + MFI 기반 트레이드 신호 생성하기

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

안녕하세요, 트레이더 여러분! 오늘은 MQL5 위자드를 이용해서 다크 클라우드 커버와 피어싱 라인 패턴을 기반으로 한 트레이드 신호를 생성하는 방법에 대해 알아보겠습니다. 이 도구는 클라이언트 터미널과 함께 제공되는 표준 라이브러리 클래스를 바탕으로 손쉽게 EA(Expert Advisor)를 만들 수 있도록 도와줍니다. 트레이드 아이디어를 간편하게 체크할 수 있도록 여러분만의 트레이딩 신호 클래스를 생성하는 것이죠.

기본 아이디어는 이렇게 진행됩니다. 트레이딩 신호 클래스는 CExpertSignal에서 파생된 클래스를 사용하고, LongCondition()ShortCondition() 가상 메서드를 여러분의 메서드로 재정의해야 합니다.

여기서 다룰 전략은 "최고 트레이더의 전략"이라는 책에서 차용한 것으로, 특히 스토캐스틱, CCI, MFI, RSI 오실레이터에 의해 확인되는 반전 캔들스틱 패턴에 집중할 것입니다.

1. 다크 클라우드 커버와 피어싱 라인 반전 캔들스틱 패턴

1.1. 다크 클라우드 커버

다크 클라우드 커버는 상승 추세의 끝에서 발생하는 약세 반전 패턴입니다. 첫째 날에는 긴 흰색 캔들이 형성되고, 둘째 날에는 갭 상승이 발생하지만, 둘째 날의 종가는 첫째 날의 중간 미만으로 마감됩니다.

다크 클라우드 커버 캔들스틱 패턴

다크 클라우드 커버 캔들스틱 패턴

이 패턴의 인식은 CCandlePattern 클래스의 CheckPatternDarkCloudCover() 메서드에서 구현됩니다.

//+------------------------------------------------------------------+
//| 다크 클라우드 커버 패턴 형성 체크 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover() {
    //--- 다크 클라우드 커버
    if((Close(2) - Open(2) > AvgBody(1) && // (긴 흰색)
        (Close(1) < Close(2) && //
        (Close(1) > Open(2) && // (이전 몸체 내 마감)
        (MidOpenClose(2) > CloseAvg(1) && // (상승 추세)
        (Open(1) > High(2))) { // (새로운 고점에서 개장)
            return (true);
    }
    //---
    return (false);
}

CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) 메서드는 다크 클라우드 커버 캔들스틱 패턴 형성을 확인하는 데 사용됩니다.

1.2. 피어싱 라인

둘째 날의 갭 하락은 하락 추세를 지속시키지만, 둘째 날의 종가는 첫째 날의 몸체 중간 이상으로 마감됩니다. 이는 곰들에게 저점이 형성될 수 있음을 암시합니다. 이 가격 행동은 바 차트보다 캔들스틱 차트에서 더 뚜렷하게 나타납니다. 둘째 날의 종가가 첫째 날의 몸체에 더 깊이 침투할수록 반전 신호가 성공할 가능성이 높아집니다.

피어싱 라인 캔들스틱 패턴

피어싱 라인 캔들스틱 패턴

이 패턴의 인식은 CCandlePattern 클래스의 CheckPatternPiercingLine() 메서드에서 구현됩니다.

//+------------------------------------------------------------------+
//| 피어싱 라인 패턴 형성 체크 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine() {
    //--- 피어싱 라인
    if((Close(1) - Open(1) > AvgBody(1) && // (긴 흰색)
        (Open(2) - Close(2) > AvgBody(1) && // (긴 검은색)
        (Close(1) > Close(2) && //
        (Close(1) < Open(2) && // (이전 몸체 내 마감)
        (MidOpenClose(2) < CloseAvg(2) && // (하락 추세)
        (Open(1) < Low(2))) { // (이전 저점보다 낮게 개장)
            return (true);
    }
    //---
    return (false);
}

CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) 메서드는 피어싱 라인 캔들스틱 패턴 형성을 확인하는 데 사용됩니다.

2. MFI 지표로 확인된 트레이드 신호

롱 또는 숏 포지션을 열기 위한 트레이딩 신호는 반드시 MFI 지표에 의해 확인되어야 합니다. MFI 지표의 값은 롱 포지션의 경우 40 이하, 숏 포지션의 경우 60 이상이어야 합니다.

열린 포지션의 종료는 MFI 지표의 값에 따라 결정됩니다. 종료는 두 가지 경우에 발생합니다:

  1. MFI가 반대의 크리티컬 레벨(롱 포지션은 70, 숏 포지션은 30)에 도달했을 때
  2. 역 신호가 확인되지 않았을 때(MFI 지표가 30(롱 포지션) 또는 70(숏 포지션) 레벨에 도달했을 때)

MFI 지표로 확인된 다크 클라우드 커버 패턴

MFI 지표로 확인된 다크 클라우드 커버 패턴

  • int CDC_PL_MFI::LongCondition() - 롱 포지션을 열기 위한 조건을 체크합니다(80 반환) 및 숏 포지션 종료(40 반환);
  • int CDC_PL_MFI::ShortCondition() - 숏 포지션을 열기 위한 조건을 체크합니다(80 반환) 및 롱 포지션 종료(40 반환).

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

  1. "모닝 스타" 패턴의 형성은 MFI 지표로 확인되어야 합니다: MFi(1) < 40 (마지막 완료된 바의 MFI 지표 값이 40 미만이어야 합니다).

  2. 숏 포지션은 MFI 지표가 크리티컬 레벨(70 또는 30)을 상향 돌파했을 때 종료해야 합니다.

//+------------------------------------------------------------------+
//| 시장에 진입 및 퇴출 조건 체크 |
//| 1) 시장 진입(롱 포지션 오픈, 결과=80) |
//| 2) 시장 퇴출(숏 포지션 종료, 결과=40) |
//+------------------------------------------------------------------+
int CDC_PL_MFI::LongCondition() {
    int result=0;
    //--- idx는 EA 작업 모드를 결정하는데 사용될 수 있습니다
    //--- idx=0 - 이 경우 EA는 각 틱에서 트레이드 조건을 체크합니다
    //--- idx=1 - 이 경우 EA는 뉴스 바에서만 트레이드 조건을 체크합니다
    int idx = StartIndex();
    //--- 롱 포지션을 열기 위한 조건 체크
    //--- 피어싱 라인 패턴 형성과 MFI < 40
    if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (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. "다크 클라우드 커버" 패턴의 형성은 MFI 지표로 확인되어야 합니다: MFI(1) > 60 (마지막 완료된 바의 MFI 지표 값이 60 초과여야 합니다).

  2. 롱 포지션은 MFI 지표가 크리티컬 레벨(70 또는 30)을 상향 돌파했을 때 종료해야 합니다.

//+------------------------------------------------------------------+
//| 시장에 진입 및 퇴출 조건 체크 |
//| 1) 시장 진입(숏 포지션 오픈, 결과=80)|
//| 2) 시장 퇴출(롱 포지션 종료, 결과=40)|
//+------------------------------------------------------------------+
int CDC_PL_MFI::ShortCondition() {
    int result=0;
    //--- idx는 EA 작업 모드를 결정하는데 사용될 수 있습니다
    //--- idx=0 - 이 경우 EA는 각 틱에서 트레이드 조건을 체크합니다
    //--- idx=1 - 이 경우 EA는 뉴스 바에서만 트레이드 조건을 체크합니다
    int idx = StartIndex();
    //--- 숏 포지션을 열기 위한 조건 체크
    //--- 다크 클라우드 커버 패턴 형성과 MFI > 60
    if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (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 위자드를 사용한 EA 생성하기

CDC_PL_MFI 클래스는 표준 라이브러리 클래스에 포함되어 있지 않으므로, 이를 사용하기 위해서는 adc_pl_mfi.mqh 파일을 다운로드하여 client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals에 저장해야 합니다. acandlepatterns.mqh 파일도 동일하게 진행해 주세요. 이렇게 하면 MQL5 위자드에서 사용할 수 있습니다.

EA를 생성하기 위해 MQL5 위자드를 실행하세요:

MQL5 위자드를 사용한 EA 생성

MQL5 위자드를 사용한 EA 생성

EA의 이름을 지정해 주세요:

EA의 일반 속성

EA의 일반 속성

그 후 사용될 트레이드 신호 모듈을 선택해야 합니다.

EA의 신호 속성

EA의 신호 속성

이번 경우에는 하나의 트레이드 신호 모듈만 사용할 것입니다.

"MFI로 확인된 다크 클라우드 커버/피어싱 라인 기반 신호" 트레이드 신호 모듈 추가하기:

EA의 신호 속성

EA의 신호 속성

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

EA의 신호 속성

EA의 신호 속성

트레일링 속성은 선택할 수 있지만,

연관 포스트

댓글 (0)