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

MQL5 마법사 - 상승 하라미/하락 하라미 + RSI에 기반한 매매 신호 - MetaTrader 5용 expert

조회수:
194
평가:
(19)
게시됨:
2021.11.15 10:19
업데이트됨:
2021.11.15 10:20
\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. 상승 하라미

강세 하라미 반전 패턴은 하락 추세의 장에서 큰 캔들 뒤에 본체가 큰 캔들의 수직 범위 내에 있는 작은 캔들이 뒤따를 때 형성됩니다. 이 패턴은 떨어지는 추세(하락 추세)가 역전될 수 있음을 나타내며, 매수 포지션에 진입하기에 좋은 시기임을 나타냅니다. 두번째 캔들은 갭 상승과 함께 열립니다.

두번째의 작은 (하얀) 캔들이 작으면 작을수록 반전이 일어날 가능성이 높아집니다.

그림. 1. "상승 하라미" 캔들스틱 패턴

그림. 1. "상승 하라미" 캔들스틱 패턴

"상승 하라미" 패턴은 CCandlePattern 클래스의 CheckPatternBullishHarami() 메서드에 구현되어 있습니다:

//+------------------------------------------------------------------+
//| 상승 하라미 캔들 패턴의 형태를 확인                                    |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- 상승 하라미
   if((Close(1)>Open(1))              && // 마지막 완성된 바가 상승세(흰색 날)
     ((Open(2)-Close(2))>AvgBody(1))  && // 이전 캔들은 약세이고 몸체는 평균(긴 검은색)보다 큼
     ((Close(1)<Open(2))              && // 상승세 캔들의 종가는 하락세 캔들의 시가보다 낮음  
      (Open(1)>Close(2)))             && // 상승세 캔들의 시가는 하락세 캔들의 종가보다 높음
      (MidPoint(2)<CloseAvg(2)))         // 하락 추세
      return(true);
//---
   return(false);
  }

CCandlePattern 클래스의 CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) 메서드는 "상승 하라미" 캔들스틱 패턴의 형태를 확인하기 위해 사용됩니다.


1.2. 하락 하라미

약세 하라미 반전 패턴은 상승 추세의 장에서 큰 캔들 뒤에 본체가 큰 캔들의 수직 범위 내에 있는 작은 캔들이 뒤따를 때 형성됩니다. 이 패턴은 상승하는 추세(상승 추세)가 역전될 수 있음을 나타내며, 매도 포지션에 진입하기에 좋은 시기임을 나타냅니다. 두번째 캔들은 갭 하락과 함께 열립니다.

두번째의 작은 (검은) 캔들이 작으면 작을수록 반전이 일어날 가능성이 높아집니다.

Fig. 2. "하락 하라미" 캔들스틱 패턴

Fig. 2. "하락 하라미" 캔들스틱 패턴

"하락 하라미" 패턴은 CCandlePattern 클래스의 CheckPatternBearishHarami() 메서드에 구현되어 있습니다:

//+------------------------------------------------------------------+
//| "하락 하라미" 캔들 패턴의 형태를 확인                                  |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- 하락 하라미
   if((Close(1)<Open(1))              && // 마지막 완성된 바가 약세(검은 날)
     ((Close(2)-Open(2))>AvgBody(1))  && // 이전 캔들은 상승세이고 몸체는 평균보다 큼(긴 흰색)  
     ((Close(1)>Open(2))              && // 하락세 캔들의 종가는 상승세 캔들의 시가보다 높음  
      (Open(1)<Close(2)))             && // 하락세 캔들의 시가는 상승세 캔들의 종가보다 낮음
      (MidPoint(2)>CloseAvg(2)))         // 상승 추세
      return(true);
//---
   return(false);
  }

CCandlePattern 클래스의 CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) 메서드는 "하락 하라미" 캔들스틱 패턴의 형태를 확인하기 위해 사용됩니다.


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

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

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

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

그림 3. RSI로 확인된 "상승 하라미" 패턴

그림 3. "RSI로 확인된 상승 하라미" 패턴

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

2.1. 매수 진입/매도 청산

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

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

//+------------------------------------------------------------------+
//| 진입 혹은 청산 조건을 체크                                           |
//| 1) 진입 (매수 진입, 결과=80)                                        |
//| 2) 청산 (매도 청산, 결과=40)                                        |
//+------------------------------------------------------------------+
int CBH_BH_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_BULLISH_HARAMI) && (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 CBH_BH_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_BEARISH_HARAMI) && (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 생성

CBH_BH_RSI 클래스는 표준 라이브러리 클래스에 포함되어 있지 않으므로 사용하려면 acml_rsi.mqh 파일(첨부 참조)을 다운로드하여 client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals에 저장해야 합니다. acandlepatterns.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_ABH_BH_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. 백테스팅 결과

과거 데이터(EURUSD H1, 사용자 지정 기간: 1.1.2010-03.11.2011, PeriodRSI=37, MA_Period=7)로 Expert Advisor를 백테스팅해 보겠습니다.

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

그림. 11. 상승 하라미/하락 하라미 + RSI에 기반한 Expert Advisor의 백테스팅 결과"

그림. 11. 상승 하라미/하락 하라미 + RSI에 기반한 Expert Advisor의 백테스팅 결과"


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

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


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

MACD MACD

MACD(Moving Average Convergence/Divergence)는 추세 추종적인 동적 지표입니다. 가격의 두 이동 평균 간의 상관 관계를 나타냅니다.

이치모쿠 킨코 효 이치모쿠 킨코 효

이치모쿠 킨코 효 지표는 시장 추세, 지지 및 저항 수준을 나타내고 매수 및 매도 신호를 생성하기 위해 사용됩니다.

MQL5 마법사 - 해머/교수형 + 스토캐스틱에 기반한 매매 신호 MQL5 마법사 - 해머/교수형 + 스토캐스틱에 기반한 매매 신호

스토캐스틱 지표에 의해 확인된 "해머/교수형" 캔들스틱 패턴에 기반한 거래 신호를 살펴봅니다. 이 전략에 기반한 Expert Advisor 코드는 MQL5 마법사를 사용하여 자동으로 생성될 수 있습니다.

MQL5 마법사 - 해머/교수형 + CCI에 기반한 매매 신호 MQL5 마법사 - 해머/교수형 + CCI에 기반한 매매 신호

Commodity Channel Index (CCI)에 기반한 "해머/교수형" 캔들스틱 패턴 매매 신호를 살펴봅니다. 이 전략에 기반한 Expert Advisor 코드는 MQL5 마법사를 사용하여 자동으로 생성될 수 있습니다.