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

MQL5 마법사 - Alligator 지표 라인의 교차에 기반한 트레이딩 신호 - MetaTrader 5용 expert

조회수:
196
평가:
(33)
게시됨:
2021.10.27 14:30
업데이트됨:
2021.11.01 10:28
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동

MQL5 마법사를 통해 자동으로 Expert Advisors를 생성할 수 있습니다 ( MQL5 마법사: 프로그래밍 하지 않고 Expert Advisors 만들기를 참고하세요).

이제 B.Williams가 "Trading Chaos"란 책에서 소개한 Alligator 기술 지표를 살펴보겠습니다. 전략은 "Alligator에 기반한 신호"라 하기로 합니다 (MQL5 마법사로 EA를 자동으로 생성 할 때).

이 시스템은 세개의 이동 평균(Lips, Teeth과 Jaw 라인)과 이들 사이의 차이를 계산한 오실레이터에 기반합니다. 거래 신호는 추세에 따라, 세개 선의 순서에 따라 Alligator 라인들이 교차 한 후에 나타납니다 상승 추세의 경우 Lips 라인(최소 기간)이 가장 높고 다음이 Teeth 라인, 가장 낮은 것이 Jaw 라인입니다. 하락 추세의 경우 유사하지만 반대의 경우입니다.

트레이드 신호:

  • 매수 포지션 진입: 앨리게이터 라인의 교차 및 상승 추세에서 이들 사이의 거리 증가;
  • 매수 포지션 청산: Lips 라인과 Jaw 라인의 상방 교차;
  • 매도 포지션 진입: 앨리게이터 라인의 교차 및 하락 추세에서 이들 사이의 거리 증가;
  • 매도 포지션 청산: Lips 라인과 Jaw 라인의 하방 교차;

전략은 CSignalAkkigator 클래스에서 생성하였습니다.

그림 1. Alligator 지표 라인의 교차에 기반한 트레이딩 신호

그림 1. Alligator 지표 라인의 교차에 기반한 트레이딩 신호


거래 신호

트레이딩 전략은 CSignalAlligator를 활용하여 생성되었습니다, 가격과 이동 평균의 사용을 용이하게 하기 위해 보호된 메서드가 있습니다:

double   Jaw(int ind)              // Jaw 라인의 값을 반환
double   Teeth(int ind)            // Teeth 라인의 값을 반환
double   Lips(int ind)             // Lips 라인의 값을 반환
double   LipsTeethDiff(int ind)    // Lips 라인과 Teeth 라인의 차를 반환
double   TeethJawDiff(int ind)     // Teeth 라인과 Jaw 라인의 차를 반환
double   LipsJawDiff(int ind)      // Lips 라인과 Jaw 라인의 차를 반환
bool     CheckCross();             // Alligator 라인의 교차를 확인하기 위해 사용됨


1. 매수 포지션 진입

거래 조건 확인에는 Lips, Teeth 및 Jaw 라인의 shift로 인해 발생하는 몇 가지가 있습니다.

매수 포지션에 진입할 조건:

  • CheckCross는 교차를 결정하고 라인 간의 차이를 추가로 증가시키는 데 사용됩니다.
  • LipsTeethDiff(-2)>=LipsTeethDiff(-1) and LipsTeethDiff(-1)>=LipsTeethDiff(0); Lips 라인과 Teeth 라인의 차가 증가하는지 여부를 체크;
  • LipsTeethDiff(0)>=0.0;  Lips 라인이 Teeth 라인보다 높음;
  • TeethJawDiff(-2) >=TeethJawDiff(-1)  and TeethJawDiff(-1) >=TeethJawDiff(0) ; Teeth 라인과 Jaw 라인의 차가 증가하는지 여부를 체크;
  • TeethJawDiff(0) >=0.0; Teeth 라인이 Jaw 라인이 보다 높음.
//+------------------------------------------------------------------+
//| 매수 포지션에 진입할 조건을 체크(매수)                                 |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 &&
      TeethJawDiff(-2) >=TeethJawDiff(-1)  && TeethJawDiff(-1) >=TeethJawDiff(0)  && TeethJawDiff(0) >=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


2. 매수 포지션 청산

매수 포지션을 청산할 조건(라인들의 shift에 주목):

  • LipsTeethDiff(-1)<0; 다음 바의 Lips 라인이(shift로 인해) Teeth 라인보다 낮음;
  • LipsTeethDiff(0)>=0; 현재 바의 Lips 라인이 Teeth 라인보다 높거나/같음;
  • LipsTeethDiff(1)>0; 이전 바의 Lips 라인이(완성된 바) Teeth 라인보다 높음.
//+------------------------------------------------------------------+
//| 매수 포시션을 청산할 조건을 체크                                      |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0);
  }


3. 매도 포지션 진입

매도 포지션에 진입할 조건:

  • CheckCross는 교차를 결정하고 라인 간의 차이를 추가로 증가시키는 데 사용됩니다.
  • LipsTeethDiff(-2)<=LipsTeethDiff(-1) and LipsTeethDiff(-1)<=LipsTeethDiff(0); Lips 라인과 Teeth 라인의 차가 증가하는지 여부를 체크;
  • LipsTeethDiff(0)<=0.0; 현재 바의 Lips 라인이 Teeth 라인보다 낮음;
  • TeethJawDiff(-2)<=TeethJawDiff(-1) and TeethJawDiff(-1)<=TeethJawDiff(0); Teeth 라인과 Jaw 라인의 차가 증가하는지 여부를 체크;
  • TeethJawDiff(0) <=0.0; the 현재 바의 Teeth 라인이 Jaw 라인보다 낮음;
//+------------------------------------------------------------------+
//| 매도 포지션에 진입할 조건을 체크(매도)                                 |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 &&
      TeethJawDiff(-2) <=TeethJawDiff(-1)  && TeethJawDiff(-1) <=TeethJawDiff(0)  && TeethJawDiff(0) <=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


4. 매도 포지션 청산

매도 포지션을 청산할 조건

  • LipsTeethDiff(-1)>0; 다음 바의 Lips 라인이(shift로 인해) Teeth 라인보다 높음;
  • LipsTeethDiff(0)<=0; 현재 바의 Lips 라인이 Teeth 라인보다 낮거나/같음;
  • LipsTeethDiff(1)<0; 이전 바의 Lips 라인이(완성된 바) Teeth 라인보다 낮음.
//+------------------------------------------------------------------+
//| 매도 포시션을 청산할 조건을 체크                                      |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0);
  }

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

전략을 기반으로 거래 로봇을 만들려면 신호 속성을 MQL5 마법사의 "준비된 Expert Advisor 만들기" 옵션에서 "Alligator에 기반한 신호"로 선택해야 합니다:

그림 2. MQL5 마법사에서 "Alligator에 기반한 신호"를 선택하세요

그림 2. MQL5 마법사에서 "Alligator에 기반한 신호"를 선택하세요

다음으로 트레일링 스탐 알고리즘과 자금과 위험 관리 시스템을 지정해야 합니다. Expert Advisor의 코드는 자동으로 생성되며, MetaTrader 5 클라이언트 터미널의 전략 테스터에서 컴파일하고 테스트할 수 있습니다.


테스트 결과

과거 데이터(EURUSD H1, 사용자 지정 기간: 1.1.2010-05.01.2011,  JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5)으로 Expert Advisor를 백테스팅해 보겠습니다. .

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

그림 3. Alligator 지표에 기반한 Expert Advisor 백테스팅 결과

그림 3. Alligator 지표에 기반한 Expert Advisor 백테스팅 결과


만약 시간에 따라 거래 필터링을 사용하고 시장의 특성을 고려한다면 수익을 높일 수 있습니다. CSignalITF 클래스를 통해 당일 시간 필터를 추가할 수 있습니다. 최적의 시간은 MetaTrader 5 클라이언트 터미널의 Strategy Tester를 통해 찾을 수 있을 것입니다. MQL5 마법사 - 당일 시간 필터를 적용한 두개의 EMA의 교차에 기반한 신호에서 그 예를 참고하세요.


첨부: The SignalAlligator.mqh과 CSignalAlligator 클래스는 terminal_data_folder\MQL5\Include\Expert\Signal에 위치해야 합니다.

The expert_alligator.mq5는 MQL5 마법사를 사용하여 생성된 Expert Advisor의 코드를 포함하고 있습니다.


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

MQL5 마법사 - 당일 시간 필터를 적용한 두개의 EMA의 교차에 기반한 신호 MQL5 마법사 - 당일 시간 필터를 적용한 두개의 EMA의 교차에 기반한 신호

거래 신호는 두개의 지수 이동 평균의 교차에 당일 장중 필터를 적용한 것에 기반합니다. 이 전략에 기반한 Expert Advisor 코드는 MQL5 마법사를 사용하여 자동으로 생성될 수 있습니다.

엡벨로프스 엡벨로프스

엔벨로프스 지표는 두 개의 이동 평균으로 구성되며 그 중 하나는 위쪽으로 움직이고 다른 하나는 아래쪽으로 움직입니다. 밴드 마진 shifting의 최적인 상대 수의 선택은 시장 변동성에 따라 결정됩니다: 후자가 높을수록 이동이 더 강합니다.

MQL5 마법사 - 반전 캔들 스틱 패턴에 기반한 거래 신호 MQL5 마법사 - 반전 캔들 스틱 패턴에 기반한 거래 신호

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

MQL5 마법사 - 3 검은 까마귀/3 하얀 병사 + 스토캐스틱에 기반한 매매 신호 MQL5 마법사 - 3 검은 까마귀/3 하얀 병사 + 스토캐스틱에 기반한 매매 신호

3 검은 까마귀/3 하얀 병사 + 스토캐스틱에 기반한 매매 신호를 살펴봅니다. 이 전략에 기반한 Expert Advisor 코드는 MQL5 마법사를 사용하여 자동으로 생성될 수 있습니다.