거래 로봇을 무료로 다운로드 하는 법을 시청해보세요
당사를 Telegram에서 찾아주십시오!
당사 팬 페이지에 가입하십시오
스크립트가 흥미로우신가요?
그렇다면 링크 to it -
하셔서 다른 이들이 평가할 수 있도록 해보세요
스크립트가 마음에 드시나요? MetaTrader 5 터미널에서 시도해보십시오
Experts

MQL5 마법사 - 모닝 이브닝 스타스 + RSI에 기반한 매매 신호 - MetaTrader 5용 expert

조회수:
241
평가:
(82)
게시됨:
2022.01.10 11:40
\MQL5\Include\Expert\Signal\MySignals\
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동

MQL5 마법사는 클라이언트 터미널과 함께 제공되는 Standard library 클래스에 기반한 Expert Advisors를 생성하는 것을 돕습니다(MQL5 마법사에서 준비된 Expert Advisors 만들기를 참조하세요). 귀하의 트레이딩 아이디어를 빠르게 확인할 수 있게 하며, 귀하가 필요로 하는 것은 자신만의 트레이딩 신호 클래스를 만드는 것입니다. 이러한 클래스의 구조와 예는 MQL5 마법사: 트레이딩 신호 모듈을 만드는 방법에서 찾을 수 있습니다.

일반적인 아이디어는 다음과 같습니다: 거래 신호의 클래스는 CExpertSignal에서 파생된 것입니다. 다음으로 LongCondition()ShortCondition()과 가상의 메서드를 귀하의 메서드로 재정의 하여야 합니다. 

"최고 트레이더들의 전략" (러시아어)이란 책이 있습니다. 이 책에는 많은 트레이딩 전략이 수록되어 있습니다. 우리는 이중에서 Stochastic, CCI, MFI and RSI 오실레이터에 의해 확인되는 반전 캔들스틱 패턴에 대해 알아 보겠습니다.

가장 좋은 방법은 캔들 패턴 형성 확인용 CExpertSignal에서 파생된 별도의 클래스를 만드는 것입니다. 캔들 패턴에 의해 생성된 거래 신호를 확인하려면 CCandlePattern에서 파생된 클래스를 작성하고 필요한 기능(예: 오실레이터에 의한 확인)을 추가하면 충분합니다.

RSI 지표에 의해 확인된 "모닝 스타/ 이브닝 스타"(모닝 도지 스타/이브닝 도지 스타) 반전 캔들스틱 패턴에 기반한 신호에 대해 살펴보겠습니다. CCandlePattern 클래스에 기반한 트레이딩 시그널 모듈은 캔들 스틱 패턴으로 신호를 생성하는 좋은 예입니다.


1. "모닝 스타" 과 "이브닝 스타" 반전 캔들스틱 패턴

1.1. 모닝 스타

이 패턴은 하락 추세의 반전을 나타내며 3개의 캔들로 구성됩니다(그림 1). 긴 검은 캔들 후에 작은 바디가 있는 캔들(색상은 중요하지 않음)이 있으며 검은 캔들의 바디 외부에 있습니다. 캔들의 작은 바디는 상승세와 하락세의 힘이 동일하고 시장이 추세를 바꿀 준비가 되어 있음을 의미합니다.

패턴의 세 번째 캔들은 상승세의 캔들이며 두 번째 캔들의 몸체와 몸체가 겹치지 않으며 종가는 첫 번째(약세) 양초의 몸체 내부에 있습니다. 모델의 결과인 캔들도 그림 1에 표시됩니다.

두 번째 캔들이 도지 모양의 캔들인 경우 모델 이름은 "모닝 도지 스타"입니다.

그림. 1. "모닝 스타" 와 "모닝 도지 스타" 캔들스틱 패턴

그림. 1. "모닝 스타" 와 "모닝 도지 스타" 캔들스틱 패턴

"모닝 스타" 패턴의 식별은 CCandlePattern 클래스의 CheckPatternMorningStar() 및 CheckPatternMorningDoji() 메서드에서 구현됩니다:

//+------------------------------------------------------------------+
//| "모닝 스타" 패턴의 형태를 체크                                        |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningStar()
  {
//--- 모닝 스타
   if((Open(3)-Close(3)>AvgBody(1))             && // 하락세 캔들, 바디가 평균의 캔들의 바디보다 큼
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // 두번째 캔들은 작은 바디를 가짐(평균의 바디의 반보다 낮음)
      (Close(2)<Close(3))                       && // 두번째 캔들의 종가가 첫번째 캔들의 종가보다 낮음 
      (Open(2)<Open(3))                         && // 두번째 캔들의 시가가 첫번째 캔들의 시가보다 낮음
      (Close(1)>MidOpenClose(3)))                  // 마지막 완성된 캔들의 종가가 첫번째 캔들의 중심보다 높음 
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| "모닝 도지 스타" 패턴의 형태를 체크                                   |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningDoji()
  {
//---모닝 도지 스타 
   if((Open(3)-Close(3)>AvgBody(1)) && // 하락세 캔들, 바디가 평균의 캔들의 바디보다 큼 
      (AvgBody(2)<AvgBody(1)*0.1)   && // 두번째 캔들은 작은 바디를 가짐(도지) 
      (Close(2)<Close(3))           && // 두번째 캔들의 종가가 첫번째 캔들의 종가보다 낮음 
      (Open(2)<Open(3))             && // 두번째 캔들의 시가가 첫번째 캔들의 시가보다 낮음 
      (Open(1)>Close(2))            && // 마지막 완성된 바에서 상승 갭 
      (Close(1)>Close(2)))             // 마지막 완성된 캔들의 종가가 두번째 캔들의 종가보다 높음
      return(true);
//---
   return(false);
  }

CCandlePattern 클래스의 CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR)와 CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) 메서드는 "모닝 스타"와 "모닝 도지 스타" 캔들스틱 패턴의 형태를 확인하기 위해 사용됩니다.


1.2. 이브닝 스타

이 패턴은 상승 추세의 반전을 나타내며 3개의 캔들로 구성됩니다(그림 2). 긴 하얀 캔들 후에 작은 바디가 있는 캔들(색상은 중요하지 않음)이 있으며 하얀 캔들의 바디 외부에 있습니다. 캔들의 작은 바디는 상승세와 하락세의 힘이 동일하고 시장이 추세를 바꿀 준비가 되어 있음을 의미합니다.

패턴의 세 번째 캔들은 하락세의 캔들이며 두 번째 캔들의 몸체와 몸체가 겹치지 않으며 종가는 첫 번째(강세) 양초의 몸체 내부에 있습니다. 모델의 결과인 캔들도 그림 2에 표시됩니다.

두 번째 캔들이 도지 모양의 캔들인 경우 모델 이름은 "이브닝 도지 스타"입니다.

그림 2. "이브닝 스타" 와 "이브닝 도지 스타" 캔들스틱 패턴

그림 2. "이브닝 스타" 와 "이브닝 도지 스타" 캔들스틱 패턴

"이브닝 스타"와 "이브닝 도지 스타" 패턴을 확인하기 위한 메서드입니다:

//+------------------------------------------------------------------+
//|  "이브닝 스타" 패턴의 형태를 체크                                     |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningStar()
  {
//--- 이브닝 스타
   if((Close(3)-Open(3)>AvgBody(1))             && // 상승세 캔들, 바디가 평균의 캔들의 바디보다 큼 
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // 두번째 캔들은 작은 바디를 가짐(평균의 바디의 반보다 낮음) 
      (Close(2)>Close(3))                       && // 두번째 캔들의 종가가 첫번째 캔들의 종가보다 큼
      (Open(2)>Open(3))                         && // 두번째 캔들의 시가가 첫번째 캔들의 시가보다 큼
      (Close(1)<MidOpenClose(3)))                  // 마지막 완성된 캔들의 종가가 첫번째 캔들의 중심보다 낮음 
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| "이브닝 도지 스타" 패턴의 형태를 체크                                 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningDoji()
  {
//--- 이브닝 도지 스타
   if((Close(3)-Open(3)>AvgBody(1)) && // 상승세 캔들, 바디가 평균의 캔들의 바디보다 큼 
      (AvgBody(2)<AvgBody(1)*0.1)   && // 두번째 캔들은 상당히 작은 바디를 가짐(도지) 
      (Close(2)>Close(3))           && // 두번째 캔들의 종가가 첫번째 캔들의 종가보다 높음 
      (Open(2)>Open(3))             && // 두번째 캔들의 시가가 첫번째 캔들의 시가보다 높음
      (Open(1)<Close(2))            && // 마지막 완성된 바에서 하락 갭
      (Close(1)<Close(2)))             // 마지막 완성된 캔들의 종가가 두번째 캔들의 종가보다 낮음 
      return(true);
//---
   return(false);
  }

CCandlePattern 클래스의 CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR)와 CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) 메서드는 "이브닝 스타"와 "이브닝 도지 스타" 캔들스틱 패턴의 형태를 확인하기 위해 사용됩니다.


2. RSI 지표에 의해 확인된 거래 신호

매수 진입 혹은 매도 진입은 반드시 RSI 지표에 의해 확인되어야 합니다. RSI 값은 반드시 크리티컬 레벨(매수의 경우 40 이고 매도의 경우 60)보다 크거나 작아야 합니다

청산은 RSI값에 따릅니다. 2가지 경우도 실행됩니다:

  1. RSI가 반대쪽 임계 수준에 도달한 경우(롱 포지션의 경우 70, 숏 포지션의 경우 30)
  2. 반전 신호가 확인되지 않은 경우 (RSI가 다음 레벨에 도달했을 때: 매수 포지션 30, 매도 포지션 70)

그림 3. RSI 지표에 의해 확인된 "모닝 스타" 패턴

그림 3. RSI 지표에 의해 확인된 "모닝 스타" 패턴

  • int CMS_ES_RSI::LongCondition() -매수 진입할 조건을 체크(80을 반환) 매도 포지션을 청산할 조건을 체크 (40을 반환);
  • int CMS_ES_RSI::ShortCondition() - 매도 진입할 조건을 체크(80을 반환) 매수 포지션을 청산할 조건을 체크 (40을 반환).

2.1. 매수 진입/매도 청산

  1. "모닝 스타" 패턴의 형성은 다음으로 확인해야 합니다. RSI 지표: RSI(1)<40(마지막으로 완성된 막대의 RSI 지표의 값은 40보다 작아야 함).

  2. RSI 지표가 70이나 30을 상향 교차하면 매도 포지션은 반드시 청산되어야 합니다.

//+------------------------------------------------------------------+
//| 진입 혹은 청산 조건을 체크                                           |
//| 1) 진입 (매수 진입, 결과=80)                                        |
//| 2) 청산 (매도 청산, 결과=40)                                        |
//+------------------------------------------------------------------+
int CMS_ES_RSI::LongCondition()
  {
   int result=0;
//--- idx가 Expert Advisor work mode를 확인하기 위해 사용될 수 있습니다
//--- idx=0 - 이 경우 EA는 각각의 틱마다 거래 조건을 확인합니다
//---idx=1 - 이 경우 EA는 새로운 바에서만 거래 조건을 확인합니다
   int idx   =StartIndex();
//--- 매수 진입 조건을 확인
//--- 모닝 스타 패턴의 형태와 RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (RSI(1)<40))
     result=80;
//--- 매도 포지션 청산 조건을 확인
//---시그널 라인이 과매수/과매도 레벨을 교차(상방 30, 상방 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//---결과를 반환
   return(result);
  }


2.2. 매도 진입/매수 청산

  1. "이브닝 스타" 패턴이 형성 되었는지 여부는 다음으로 확인해야 합니다.RSI 지표: RSI(1)>60(마지막으로 완성된 막대의 RSI지표의 값은 60보다 커야 함).

  2. RSI 지표가 70이나 30을 상향 교차하면 매수 포지션은 반드시 청산되어야 합니다.

//+------------------------------------------------------------------+
//| 매수 혹은 매도 조건을 체크                                           |
//| 1)  진입 (매도 포지션 진입, 결과=80)                                 |
//| 2)  청산 (매수 포지션 청산, 결과=40)                                 |
//+------------------------------------------------------------------+
int CMS_ES_RSI::ShortCondition()
  {
   int result=0;
//---  idx가 Expert Advisor work mode를 확인하기 위해 사용될 수 있습니다
//--- idx=0 - 이 경우 EA는 각각의 틱마다 거래 조건을 확인합니다
//--- idx=1 - 이 경우 EA는 새로운 바에서만 거래 조건을 확인합니다
   int idx   =StartIndex();
//--- 매도 진입 조건을 확인
//--- 이브닝 스타 패턴의 형성과 RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (RSI(1)>60))
     result=80;
//--- 매수 포지션 청산 조건을 확인
//--- 시그널 라인이 과매수/과매도 레벌을 교차(하방 70, 하방 30)
   if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- 결과 반환
   return(result);
  }


2.3. MQL5 마법사를 사용해서 Expert Advisor 생성

CMS_ES_RSI 클래스는 표준 라이브러리 클래스에 포함되어 있지 않으므로 사용하려면 acms_es_rsi.mqh 파일(첨부 참조)을 다운로드하여 client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals에 저장해야 합니다. candlepatterns.mqh 파일도 마찬가지입니다. MetaEditor를 재시작 한 후 MQL5 마법사에서 사용할수 있습니다.

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 신호 속성

오직 하나의 거래 신호 모듈을 사용했습니다.

"RSI와 모닝/이브닝 스타에 기반한 신호"를 거래 신호 모듈에 추가:

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_AMS_ES_RSI.mq5에 생성된 Expert Advisor의 코드가 표시되며, 이는 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;    // 거래를 실행 할 가격 수준l
input double         Signal_StopLevel       =50.0;   // 스탑로스 수준(포인트 단위)
input double         Signal_TakeLevel       =50.0// Take Profit 수준(포인트 단위)

반드시 교체되어야 함:

//--- 메인 시그널 입력
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;    // Take Profit 수준(포인트 단위)

Signal_ThresholdOpen/Signal_ThresholdClose 입력 매개변수를 사용하면 포지션의 진입 및 청산에 대한 기준을 지정할 수 있습니다.

거래 신호 클래스의 LongCondition() 및 ShortCondition() 메서드 코드에서 고정 값을 지정했습니다.

  • 진입 포지션: 80;
  • 청산 포지션: 40.

MQL5 마법사에서 생성된 Expert Advisor는 거래 신호 모듈의 "투표"를 사용하여 포지션에 진입하고 청산합니다. 기본 모듈(컨테이너로서 추가된 모든 모듈로 구성됨)의 투표도 사용되지만 해당 LongCondition() 및 ShortCondition() 메서드는 항상 0을 반환합니다.

메인 모듈의 투표 결과는 "투표" 평균화에도 사용됩니다. 우리의 경우에는 메인 모듈 + 1개의 거래 신호 모듈이 있으므로 기준값을 설정할 때 이 사실을 고려해야 합니다. 이 사실 때문에 ThresholdOpen 및 ThresholdClose는 40=(0+80)/2 및 20=(0+40)/2로 설정되어야 합니다.

Signal_StopLevel 및 Signal_TakeLevel 입력 매개변수의 값은 0으로 설정되며 이는 청산 조건이 참일 때만 포지션을 청산한다는 것을 의미합니다.


2.4. 백테스팅 결과

다음의 과거 데이터로 Expert Advisor를 백테스팅합니다. (EURUSD H1, testing period: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

Expert Advisor를 만들때 우리는 고정된 볼륨 (고정 랏, 0.1), 트레일링 스탑 알고리즘은 사용하지 않는 것으로 (Trailing not used) 하였습니다.

그림. 11. 모닝/이브닝 스타 + RSI에 기반한 Expert Advisor의 백테스팅 결과"

그림. 11. 모닝/이브닝 스타 + RSI에 기반한 Expert Advisor의 백테스팅 결과"


최적의 입력 매개변수는 MetaTrader 5 클라이언트 터미널의 Strategy Tester를 통해 찾을 수 있을 것입니다.

매개변수와 관련한 사항은 전략 테스터의 3D 시각화 모드를 사용하여 크게 단순화됩니다, 419 빌드부터 추가됨(그림 12):

Fig. 12. PeriodRSI 및 MA_period 입력 매개변수에 따른 잔고.

Fig. 12. PeriodRSI 및 MA_period 입력 매개변수에 따른 잔고.

MQL5 마법사를 사용하여 생성된 Expert Advisor의 코드는 expert_ms_es_rsi.mq5에 첨부되어 있습니다.


MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/324

MQL5 마법사 - 모닝 이브닝 스타스 + MFI에 기반한 매매 신호 MQL5 마법사 - 모닝 이브닝 스타스 + MFI에 기반한 매매 신호

Market Facilitation Index (MFI)에 기반한 "모닝 스타/이브닝 스타" 캔들 스틱 패턴 매매 신호를 살펴봅니다. 이 전략에 기반한 Expert Advisor 코드는 MQL5 마법사를 사용하여 자동으로 생성될 수 있습니다.

MQL5 마법사 - 모닝 이브닝 스타스 + CCI에 기반한 매매 신호 MQL5 마법사 - 모닝 이브닝 스타스 + CCI에 기반한 매매 신호

CCI에 기반한 "모닝 스타/이브닝 스타" 캔들 스틱 패턴 매매 신호를 살펴봅니다. 이 전략에 기반한 Expert Advisor 코드는 MQL5 마법사를 사용하여 자동으로 생성될 수 있습니다.

이동 평균 이동 평균

이동 평균 Expert Advisor는 가격이 MA를 교차할 때 거래합니다.

MACD 샘플 MACD 샘플

MACD Sample Expert Advisor는 MACD의 메인 라인과 시그널 라인의 교차점에서 거래합니다. 이 Expert Advisor는 EA 개발에서 객체 지향 접근 방식의 한 예입니다.