시스템트레이딩 게시글

MQL5 위자드: 캔들스틱 패턴과 스토캐스틱 신호를 활용한 자동 거래 시스템

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

설명

MQL5 위자드를 사용하면 트레이더들은 거래 신호 클래스, 포지션 추적 및 자금 관리에 기반하여 EA(Expert Advisor) 코드를 자동으로 생성할 수 있습니다. 표준 라이브러리의 거래 신호 클래스를 활용하여 자신만의 거래 시스템을 개발하고 테스트할 수 있습니다. 이를 위해서는 거래 신호 모듈을 작성하면 됩니다.

"세계 최고의 트레이더의 전략" (러시아어)은 MetaStock 소프트웨어 패키지를 사용한 기술 분석을 위한 지표 및 거래 전략을 설명합니다. 이 책은 일반적인 거래 신호 외에도 반전 캔들스틱 패턴과 스토캐스틱, CCI, MFI, RSI의 조합을 기반으로 한 신호에 대해서도 다룹니다.

"반전" 캔들스틱 패턴과 오실레이터 신호를 함께 사용하면 잘못된 신호의 수를 줄이고 거래 시스템의 효율성을 높일 수 있습니다.

이전 게시물에서는 스토캐스틱의 확인을 바탕으로 한 캔들스틱 패턴의 거래 신호를 살펴보았습니다:

  1. 3 흑조/3 백조
  2. 어두운 구름 덮개/뚫고 지나가는 선
  3. 강세 포위/약세 포위
  4. 강세 하라미/약세 하라미
  5. 망치/교수형
  6. 강세/약세 미팅 라인
  7. 아침/저녁 별

이번 설명에서는 이러한 모든 모델을 스토캐스틱 지표 신호와 함께 사용하는 결과를 살펴보겠습니다.


1. 강세 및 약세 캔들스틱 모델 및 탐지

CandlePattern 클래스는 일부 강세 및 약세 캔들스틱 패턴의 형성을 탐지하는 기능도 가지고 있습니다(망치/교수형 조합 제외).

약세 캔들 패턴의 형성은 CheckPatternAllBullish() 함수를 통해 확인됩니다:

//+------------------------------------------------------------------+
//| 강세 패턴의 형성 확인                             |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternAllBullish()
  {
   return(CheckPatternThreeWhiteSoldiers()  || 
          CheckPatternPiercingLine()       || 
          CheckPatternMorningDoji()        || 
          CheckPatternBullishEngulfing()   || 
          CheckPatternBullishHarami()      || 
          CheckPatternMorningStar()        || 
          CheckPatternBullishMeetingLines());
  }

강세 캔들 패턴의 형성은 CheckPatternAllBearish() 함수를 통해 확인됩니다:

//+------------------------------------------------------------------+
//| 약세 패턴의 형성 확인                             |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternAllBearish()
  {
   return(CheckPatternThreeBlackCrows()     || 
          CheckPatternDarkCloudCover()     || 
          CheckPatternEveningDoji()        || 
          CheckPatternBearishEngulfing()   || 
          CheckPatternBearishHarami()      || 
          CheckPatternEveningStar()        || 
          CheckPatternBearishMeetingLines());
  }

2. 스토캐스틱 지표와 결합된 거래 신호

롱/숏 포지션을 여는 것은 강세/약세 모델 중 하나가 형성되고 스토캐스틱 오실레이터의 확인이 있을 때 이루어집니다. %D 신호선 값은 적절한 기준선(30 및 70) 위 또는 아래에 있어야 합니다.

종료 신호는 두 가지 경우에 형성됩니다:

  1. 반대 캔들 패턴이 형성되었을 때(롱 포지션의 경우 약세 패턴, 숏 포지션의 경우 강세 패턴).
  2. %D의 후속 행동에 따라. %D가 시장과 반대 방향(롱 포지션의 경우 80, 숏 포지션의 경우 20)으로 도달하거나, %D가 반전 신호를 확인하지 않고 롱 포지션의 경우 20, 숏 포지션의 경우 80에 도달할 때.

시장 진입 및 퇴장 조건 확인은 다음 방법에서 수행됩니다:

  • int CCP_Stoch::LongCondition() - 롱 포지션 열기(m_pattern_0) 및 숏 포지션 닫기(m_pattern_1) 조건 확인;
  • int CCP_Stoch::ShortCondition() - 숏 포지션 열기(m_pattern_0) 및 롱 포지션 닫기(m_pattern_1) 조건 확인.

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

  1. 롱 포지션을 열기 위한 신호는 강세 캔들 조합이 형성되며 StochSignal(1)<30 조건이 충족될 때입니다(마지막 완료된 바에서 스토캐스틱 지표의 신호선 값이 30 미만).

  2. 숏 포지션을 닫기 위한 신호는 강세 캔들 패턴 중 하나가 형성되거나 지표 선이 20 레벨(스토캐스틱 라인)에서 위로 교차할 때입니다.

//+------------------------------------------------------------------+
//| 시장 모델이 형성되었는지 확인하는 방법               |
//| 진입 확인 (숏 포지션 개설, m_pattern_0)                     |
//| 종료 확인 (롱 포지션 종료, m_pattern_1)                         |
//+------------------------------------------------------------------+
int CCP_Stoch::LongCondition()
  {
   int res=0;
//---- 숏 포지션 개설 조건 확인
//---- 강세 패턴 형성과 스토캐스틱 지표의 신호선<30 
   if(CheckPatternAllBullish() && (StochSignal(1)<30)) res=m_pattern_0; // 롱 포지션 개설 신호

//--- 숏 포지션 종료 조건 확인
//--- 약세 패턴 형성 또는 신호선 교차(위로 20, 위로 80)
   if(CheckPatternAllBullish() ||
      ((StochSignal(1)>20) && (StochSignal(2)<20)) || 
      ((StochSignal(1)>80) && (StochSignal(2)<80)))    res=m_pattern_1; // 숏 포지션 종료 신호
//---
   return(res);
  }

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

  1. 숏 포지션을 열기 위한 신호는 약세 캔들 패턴 중 하나가 형성되며 StochSignal(1)>70 조건이 충족될 때입니다(마지막 완료된 바에서 스토캐스틱 지표의 신호선 값이 70 초과).

  2. 롱 포지션을 닫기 위한 신호는 약세 캔들 패턴 중 하나가 형성되거나 지표 선이 80 레벨(스토캐스틱 라인)에서 아래로 교차할 때입니다.

//+------------------------------------------------------------------+
//| 시장 모델이 형성되었는지 확인하는 방법               |
//| 진입 확인 (숏 포지션 개설, m_pattern_0)                     |
//| 종료 확인 (롱 포지션 종료, m_pattern_1)                         |
//+------------------------------------------------------------------+
int CCP_Stoch::ShortCondition()
  {
   int res=0;
//--- 숏 포지션 개설 조건 확인
//---- 약세 패턴 형성과 스토캐스틱 지표의 신호선>70
   if(CheckPatternAllBearish() && (StochSignal(1)>70)) res=m_pattern_0; // 숏 포지션 개설 신호

//--- 롱 포지션 종료 조건 확인
//---- 약세 패턴 형성 또는 신호선 교차(아래로 80, 아래로 20)
   if(CheckPatternAllBearish() || 
      ((StochSignal(1)<80) && (StochSignal(2)>80)) || 
      ((StochSignal(1)<20) && (StochSignal(2)>20)))    res=m_pattern_1; // 롱 포지션 종료 신호
//---
   return(res);
  }

2.3. MQL5 위자드를 사용하여 "캔들스틱 패턴 + 스토캐스틱" 반전 패턴 기반의 Expert Advisor 생성

CCP_Stoch 클래스는 거래 신호의 표준 라이브러리에 포함되어 있지 않습니다. 따라서 ccp_stoch.mqh 파일을 다운로드하여 \terminal_folder\Include\Expert\Signal\MySignals 디렉토리에 저장해야 합니다. candlepatterns.mqh 파일도 ccp_stoch.mqh와 같은 디렉토리에 복사해야 합니다. 그 후 MetaEditor를 다시 시작하여 MQL5 위자드에서 파일을 사용할 수 있습니다.

이 전략을 따르는 거래 로봇을 MQL5 위자드를 통해 생성하려면 두 번째 단계에서 "캔들스틱 패턴 + 스토캐스틱 기반 신호" 신호 유형을 선택하십시오:

캔들스틱 패턴 + 스토캐스틱 신호 유형 선택

캔들스틱 패턴 + 스토캐스틱 신호 유형 선택

다음 단계에서는 필요한 트레일링 스탑 유형 및 자금 관리 시스템을 지정하십시오. Expert Advisor의 코드는 자동으로 생성됩니다. 이제 컴파일하여 테스트를 시작할 준비를 하십시오.


2.4. 테스트 결과

Expert Advisor의 테스트 결과(히스토리 데이터: EURUSD H1, 테스트 기간: 2000.1.1-2011.2.2, PeriodK=33, PeriodD=37, PeriodSlow=30, MA_period=25).

이 Expert Advisor는 고정 볼륨 0.1 롯트로 거래 모듈을 사용합니다 (고정 롯트 거래). 트레일링 스탑은 사용되지 않습니다 (트레일링 사용하지 않음).

Expert Advisor 테스트 결과

"캔들스틱 패턴 + 스토캐스틱" 신호 생성기 기반의 Expert Advisor 테스트 결과

최적의 거래 시스템 파라미터 세트는 MetaTrader 5 전략 테스터를 사용하여 찾을 수 있습니다.

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


연관 포스트

댓글 (0)