당사 팬 페이지에 가입하십시오
MQL5 마법사 - 캔들 스틱 패턴에 기반한 거래 신호 + 스토캐스틱 - MetaTrader 5용 expert
- 조회수:
- 328
- 평가:
- 게시됨:
- 2022.01.10 12:40
- 이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
설명:
MQL5 마법사를 통해 트레이더는 이제 거래 신호의 클래스, 포지션 추적 및 자금 관리를 기반으로 한 Expert Advisor 코드를 자동으로 생성할 수 있습니다. 표준 라이브러리의 거래 신호 클래스를 통해 자신의 거래 시스템을 개발하고 테스트할 수 있습니다. 이렇게 하기 위해서는 거래 신호 모듈을 작성하십시오.
책 "세계 최고의 트레이더들의 전략"(러시아어)는 MetaStock 소프트웨어 패키지와 관련된 기술적 분석을 위한 지표 및 거래 전략에 대해 설명합니다. 기존의 거래 신호와 함께 이 책은 스토캐스틱,CCI,MFI 그리고RSI를 통한 확인과 반전 캔들 패턴의 결합 사용을 기반으로 한 신호를 다룹니다..
오실레이터의 신호와 함께 "반전" 캔들스틱 패턴을 사용하면 잘못된 신호의 수를 줄이고 트레이딩 시스템의 효율성을 높일 수 있습니다.
이전 간행물에서 우리는 스토캐스틱으로 확인한 캔들스틱 패턴을 기반으로 거래 신호를 살펴 보았습니다:
이번에는 이러한 모든 모델을 스토캐스틱 지표 신호와 함께 결합하여 사용한 결과를 살펴볼 것입니다.
1. 강세와 약세 캔들스틱 모델 감지
캔들 패턴 클래스에는 강세 및 약세 캔들 패턴이 형성되었는지를 감지하는 기능도 있습니다(해머/교수형 조합 제외).
약세 캔들스틱 패턴의 형성은 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)보다 높거나 낮아야 합니다.
청산 신호는 두가지의 경우입니다:
- 반대의 캔들 패턴이 형성될 때(롱 포지션의 경우 약세, 숏 포지션의 경우 강세).
- %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. 롱 포지션 진입 및 숏 포지션 청산
-
롱 포지션을 여는 신호는 강세 캔들스틱 조합을 형성하고 StochSignal(1)<30일 경우입니다(스토캐스틱 지표의 시그널 라인 값이 마지막으로 완료된 캔들에서 30보다 작음);
-
숏포지션 청산 신호는 강세 캔들 패턴 중 하나를 형성하거나 지표의 라인이 20선 스토캐스틱 라인을 (위쪽) 또는 80레벨 라인을(위쪽)으로 돌파하는 경우입니다.
//+------------------------------------------------------------------+ //| 마켓 모델이 형성 되었는지 체크하는 메서드 | //| 다음의 조건을 체크함 | //| 진입 (숏 포지션 열기, 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. 숏 포지션 진입 그리고 롱 포지션 청산
-
숏 포지션을 여는 신호는 약세 캔들스틱 패턴 중 하나를 형성하고 StochSignal(1)>70인 조건입니다(스토캐스틱 지표의 값이 마지막으로 완료된 캔들에서 시그널 라인이 70을 초과함):
-
롱 포지션 청산 신호는 약세 캔들 패턴 중 하나를 형성하거나 지표의 라인이 20선스토캐스틱 라인을 (아래쪽) 또는 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 Wizard에서 파일을 사용할 수 있습니다.
이 전략에 따라 MQL5 마법사을 사용하여 트레이딩 로봇을 만들려면 두 번째 단계에서 신호 유형을 "캔들 패턴 + 스토캐스틱에 기반한 신호"로 선택합니다:
그림. 1. MQL5 Wizard에서 "Candlestick Patterns+Stochastic에 기반한 신호" 거래 신호 생성기 선택
후속 단계에서 관련된 트레일링 스탑 유형 및 자금 관리 시스템을 지정합니다. Expert Advisor의 코드는 자동으로 생성됩니다. 이제 테스트를 시작할 준비가 되도록 컴파일해야 합니다.
2.4. 테스트 결과
과거 데이터로 Expert Advisor를 테스트 한 결과(EURUSD H1, 테스트 기간: 1.1.2000-02.02.2011, PeriodK=33, PeriodD=37, PeriodSlow=30, MA_period=25).
이 Expert Advisor는 0.1랏의 고정 거래량을 사용합니다(고정 랏 거래). 트레일링 스탑은 사용되지 않습니다(Trailing not used).
Fig. 2. "캔들 패턴+스토캐스틱에 기반한 신호" 거래 신호 생성기를 기반으로 Expert Advisor를 테스트한 결과
MetaTrader 5 전략 테스터를 사용하면 최상의 거래 시스템 매개변수 세트를 찾을 수 있습니다.
MQL5 Wizard로 생성된 Expert Advisor의 코드는 expert_cp_stoch.mq5 파일에 첨부되어 있습니다.
MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/327
만약 현재 이미지의 일부만 표시하고 나머지는 숨길 필요가 있는 경우 이미지가 보이는 부분을 지정하여 이동하는 창을 사용할 수 있습니다.
정규식 작업을 위한 MQL5의 RegularExpressions정규식은 빠르고 유연한 텍스트 처리를 위한 공식적인 언어를 제공합니다. 각 정규식은 정규식 엔진이 소스 텍스트에서 일치 항목을 찾으려고 하는 패턴(마스크)입니다. 패턴은 하나 이상의 character literals, operators, constructs으로 구성됩니다.
cIntBMP 라이브러리는 그래픽 BMP 이미지를 생성합니다 IFS(반복 함수 시스템)를 사용하여 self-simliar fractal 집합을 만들어 사용하는 예를 고려할 것입니다.
DRAW_NONEDRAW_NONE 그리기 스타일은 "데이터 창"에서 지표의 값을 계산하고 표시해야 하지만 플로팅이 필요하지 않은 경우에 사용됩니다.