당사 팬 페이지에 가입하십시오
MQL5 마법사 - 검은 구름 커버/피어싱 라인 + RSI에 기반한 매매 신호 - MetaTrader 5용 expert
- 조회수:
- 226
- 평가:
- 게시됨:
- 2021.11.10 08:37
- 이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
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. "검은 구름 커버" 캔들스틱 패턴
"검은 구름 커버" 패턴은 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); }
CCandlePattern 클래스의 CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) 메서드는 "검은 구름 커버" 캔들스틱 패턴의 형태를 확인하기 위해 사용됩니다.
1.2. 피어싱 라인
둘째날 갭하락은 하락세를 지속시킵니다. 그러나 두 번째 날 종가는 첫째날 바디의 중심 위에 있습니다. 이것은 바닥이 형성될 수 있음을 암시합니다. 이러한 가격 움직임은 막대 차트를 사용해서는 잘 식별이 되지 않으나 캔들 차트에서는 잘 식별됩니다. 둘째 날 종가가 첫째 날 바디에 더 많이 근접할수록 반전 신호가 성공할 가능성이 높아집니다.
Fig. 2. "피어싱 라인" 캔들 패턴
"피어싱 라인" 패턴은 CCandlePattern 클래스의 CheckPatternPiercingLine() 메서드에 구현되어 있습니다:
//+------------------------------------------------------------------+ //| "피어싱 라인" 캔들의 형태를 체크합니다 | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- Piercing Line 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); }
CCandlePattern 클래스의 CheckCandlestickPattern(CANDLE_PATTERN_PERCING_LINE) 메서드는 "피어싱 라인" 캔들스틱 패턴의 형태를 확인하기 위해 사용됩니다.
2. RSI 지표에 의해 확인된 거래 신호
매수 진입 혹은 매도 진입은 반드시 RSI 지표에 의해 확인되어야 합니다. RSI 값은 반드시 크리티컬 레벨(매수의 경우 40 이고 매도의 경우 60)보다 크거나 작아야 합니다
청산은 RSI값에 따릅니다. 2가지 경우도 실행됩니다:
- RSI가 반대쪽 임계 수준에 도달한 경우(롱 포지션의 경우 70, 숏 포지션의 경우 30)
- 반전 신호가 확인되지 않은 경우 (RSI가 다음 레벨에 도달했을 때: 매수 포지션 30, 매도 포지션 70)
그림 3. RSI 지표에 의해 확인된 "검은 구름 커버" 패턴
- int CDC_PL_RSI::LongCondition() -매수 진입할 조건을 체크(80을 반환) 매도 포지션을 청산할 조건을 체크 (40을 반환);
- int CDC_PL_RSI::ShortCondition() - 매도 진입할 조건을 체크(80을 반환) 매수 포지션을 청산할 조건을 체크 (40을 반환).
2.1. 매수 진입/매도 청산
-
"피어실 라인" 패턴의 형성은 다음으로 확인해야 합니다. RSI 지표: RSI(1)<40(마지막으로 완성된 막대의 RSI 지표의 값은 40보다 작아야 함).
-
RSI 지표가 70이나 30을 상향 교차하면 매도 포지션은 반드시 청산되어야 합니다.
//+------------------------------------------------------------------+ //| 진입 혹은 청산 조건을 체크 | //| 1) 진입 (매수 진입, 결과=80) | //| 2) 청산 (매도 청산, 결과=40) | //+------------------------------------------------------------------+ int CDC_PL_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_PIERCING_LINE) && (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. 매도 진입/매수 청산
-
"검은 구름 커버" 패턴의 형성은 다음으로 확인해야 합니다.RSI 지표: RSI(1)>60(마지막으로 완성된 막대의 RSI지표의 값은 반드시 60보다 커야 함).
-
RSI 지표가 70이나 30을 상향 교차하면 매수 포지션은 반드시 청산되어야 합니다.
//+------------------------------------------------------------------+ //| 진입 혹은 청산 조건을 체크 | //| 1) 진입 (매도 포지션 진입, 결과=80) | //| 2) 청산 (매수 포지션 청산, 결과=40) | //+------------------------------------------------------------------+ int CDC_PL_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_DARK_CLOUD_COVER) && (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 생성
CBC_PL_RSI 클래스는 표준 라이브러리 클래스에 포함되어 있지 않으므로 사용하려면 adc_pl_rsi.mqh 파일(첨부 참조)을 다운로드하여 client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals에 저장해야 합니다. acandlepatterns.mqh 파일도 마찬가지 입니다. MetaEditor를 재시작 한 후 MQL5 마법사에서 사용할수 있습니다.
Expert Advisor를 만들기 위해서 MQL5 마법사를 실행하세요:
Fig. 4. MQL5 마법사를 사용해서 Expert Advisor 생성
Expert Advisor의 이름을 지정합니다:
Fig. 5. Expert Advisor의 일반 속성
그 다음 거래 신호의 모듈을 선택해야 합니다.
Fig. 6. Expert Advisor 신호 속성
오직 하나의 거래 신호 모듈을 사용했습니다.
"RSI 지표에 의해 확인된 "검은 구름 커버/피어싱 라인" 거래 신호 모듈 추가:
Fig. 7. Expert Advisor 신호 속성
추가된 거래 신호 모듈:
Fig. 8. Expert Advisor 신호 속성
어떠한 트레일링 속성도 선택 가능합니다. 그러나 여기서는 "트레일링 스탑 사용 않음"으로 합니다:
Fig. 9. Expert Advisor의 트레일링 속성
자금 관리와 관련하여 "고정된 거래량"으로 합니다:
Fig. 10. Expert Advisor의 자금 관리 속성
"마침" 버튼을 누르면 Expert_ABC_ADC_PL_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, 사용자 지정 기간: 01.01.2010-02.23.2011, PeriodRSI=20, MA_Period=14)로 Expert Advisor를 백테스팅해 보겠습니다.
Expert Advisor를 만들때 우리는 고정된 볼륨 (고정 랏, 0.1), 트레일링 스탑 알고리즘은 사용하지 않는 것으로 (Trailing not used) 하였습니다.
그림. 11. 검은 구름 커버/피어싱 라인 + RSI에 기반한 Expert Advisor의 테스팅 결과
최적의 입력 매개변수는 MetaTrader 5 클라이언트 터미널의 Strategy Tester를 통해 찾을 수 있을 것입니다.
MQL5 마법사를 사용하여 생성된 Expert Advisor의 코드는 expert_ad_pl_rsi.mq5에 첨부되어 있습니다.
MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/300
Gator Oscillator는 Alligator를 기반으로 하며 균형선(Balance Line(Smoothed Moving Average))의 수렴/발산 정도를 보여줍니다.
Position Size CalculatorMT5 Indicator for Position Size Calculation
스토캐스틱 지표에 의해 확인된 "모닝/이브닝 스타" 캔들스틱 패턴에 기반한 거래 신호를 살펴봅니다. 이 전략에 기반한 Expert Advisor 코드는 MQL5 마법사를 사용하여 자동으로 생성될 수 있습니다.
MQL5 마법사 - 상승/하락 인걸핑 + 스토캐스틱에 기반한 매매 신호스토캐스틱 지표에 의해 확인된 "상승 인걸핑/하락 인걸핑" 캔들스틱 패턴에 기반한 거래 신호를 살펴봅니다. 이 전략에 기반한 Expert Advisor 코드는 MQL5 마법사를 사용하여 자동으로 생성될 수 있습니다.