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

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

조회수:
285
평가:
(45)
게시됨:
2021.10.27 14:31
업데이트됨:
2021.11.01 10:13
\MQL5\Include\Expert\Signal\
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동

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

CSignalCandles 클래스는 반전 캔들 스틱 패턴에 기반한 거래 신호를 제공합니다. 전략은 "반전 캔들 스틱 패턴에 기반한 신호"라 하기로 합니다 (MQL5 마법사로 EA를 자동으로 생성 할 때).

시스템의 아이디어는 복합적인 캔들 계산을 사용하여 반전 패턴을 식별하는 것입니다. 반전 패턴은 일본의 캔들 스틱 분석의 "망치"와 "교수형" 패턴과 유사합니다. 그러나 단일 캔들 대신 복합 캔들을 사용하며 반전을 확인하기 위해 복합 캔들의 작은 바디가 필요하지 않습니다.

입력 패러미터:

  • 범위 - 복합 캔들 계산에 사용되는 바의 최대 수입니다.
  • 최소 - 복합 캔들의 최소 크기(기존 포인트).
  • ShadowBig와 ShadowSmall - 섀도우(복합 양초 유닛).
  • Limit, StopLoss 및 TakeProfit - 시작 가격, SL 및 TP 수준, 복합 캔들(복합 캔들 단위)의 종가를 기준으로 정의된 값.
  • Expiration - order expiration time (bars), 지정가 주문에서 사용됨(Limit!=0.0).

반전 캔들 스틱 패턴은 다음과 같이 결정됩니다.

최근 완성된 바(인덱스 1 포함)에서 시작하여 Range 입력 매개변수에 의해 정의된 바 수까지 복합 캔들 매개변수를 계산합니다. 복합 캔들 크기가 최소 입력 매개변수로 지정된 값보다 크면 섀도우 분석을 통해 복합 캔들의 반전 조건을 확인합니다.

하락세의 강세는 복합 캔들의 위쪽 섀도우의 크기가 특징이고, 상승세의 강세는 아래쪽 그림자의 크기가 특징입니다.

  • 약세 추세의 반전(및 강세 시작)을 확인하려면 다음이 필요합니다. 낮은쪽 그림자의 크기(불스 파워)는 ShadowBig 입력 매개변수에 의해 정의된 값보다 커야 합니다. 위쪽 그림자의 크기(베어 파워)는 ShadowSmall 입력 매개변수로 정의된 값보다 작아야 합니다.
  • 강세 추세의 반전(및 약세 시작)을 확인하려면 다음이 필요합니다. 위쪽 그림자의 크기(베어스 파워)는 ShadowBig 입력 매개변수에 의해 정의된 값보다 커야 합니다. 아래쪽 그림자의 크기(불스 파워)는 ShadowSmall 입력 매개변수로 정의된 값보다 작아야 합니다.

반전 전략 이외에도 지지선 돌파 전략도 사용 가능합니다. 이를 위해서는 Limit input parameter를 음수로 설정합니다 (MQL5 마법사 - 당일 시간 필터를 적용한 두개의 EMA의 교차에 기반한 신호를 참고하세요).

Limit에 따라, 세가지 다른 진입 방식이 있습니다:

  1. Limit>0. 시세보다 좋은 가격으로 하락 시 진입 (매매신호에 따라 매수지정가, 매도지정가 주문이 전송됩니다)
  2. Limit<0. 추세에 따라 진입합니다(거래 신호에 따라 바이 스탑 혹은 셀 스탑 주문이 전송됩니다).
  3. Limit=0. 이 경우 market price를 사용합니다.

전략은 CSignalCandles 클래스로 생성하였습니다.

그림 1. 반전 캔들스틱 패턴에 기반한 거래 신호

그림 1. 반전 캔들스틱 패턴에 기반한 거래 신호


거래 신호

전략은 CSignalCandles 클래스로 생성하였습니다. 분석을 위해 Candle() 함수가 있습니다

int  Candle(int ind); // 복합 캔들의 타입에 따라 양수/음수를 반환 합니다
                        //  복합 캔들의(ind부터 시작) 바의 개수(캔들)를 반환

복합 캔들을 구성하는 여러 개의 캔들(바)가 사용될 수 있습니다. Range 패러미터에서 최소 바의 개수가 지정됩니다. 경우에 따라 Range보다 적은 수의 캔들로 복합 캔들이 만들어 질 수 잇습니다(size/shadow 조건이 부합될 경우). 만약 복합 캔들이 형성되지 않으면 Candle 함수는 0를 반환합니다.


1. 매수 포지션 진입

매수 포지션에 진입하기 위해서는 상승 복합 캔들이 필요합니다. 복합 캔들이 아직 형성되지 않았거나 복합 캔들이 약세인 경우 함수는 그것을 확인하고 반환합니다. 그렇지 않을 경우 복합 캔들 크기(가격, SL 및 TP 수준 계산에 필요)를 계산하고 펜딩 주문에 대한 가격 수준을 계산합니다.

펜딩 주문 유형(Buy Limit 또는 Buy Stop)은 Limit 입력 매개변수의 부호에 따라 달라집니다(Limit=0 또는 |price-ask|<stops level이면, market buy 주문을 낼 것이고, 만약 Limit> 0이면 Buy Limit pending 주문을, Limit<0이면 Buy Stop pending 주문을 넣습니다).

//+------------------------------------------------------------------+
//| 매수 포지션에 진입하기 위한 조건을 체크함(매수)                         |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- 상승 복합 캔들 형태 여부를 체크함 
   if(Candle(1)<=0) return(false);
//--- 복합 캔들의 사이즈를 계산
   double size=m_high_composite-m_low_composite;
//--- 펜딩 주문의 가격을 계산
   price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size);
//--- Stop Loss 가격을 계산
   sl   =m_symbol.NormalizePrice(price-m_stop_loss*size);
//--- Take Profit 가격을 계산
   tp   =m_symbol.NormalizePrice(price+m_take_profit*size);
//--- 주문 expiration time을 설정
   expiration+=m_expiration*PeriodSeconds(m_period);
//--- 조건을 만족하면 true를 반환
   return(true);
  }

2. 매수 포지션 청산

만약 하락 복합 캔들이 형성되면 매수 포지션은 청산 됩니다.

//+------------------------------------------------------------------+
//| 매수 포지션을 청산하기 위한 조건을 체크함                               |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckCloseLong(double& price)
  {
//--- 매도 복합 캔들이 형성 되었는지를 체크 
   if(Candle(1)>=0) return(false);
//---
   price=0.0;
//--- 조건을 만족하면 true를 반환
   return(true);
  }


3. 매도 포지션 진입

매도 포지션에 진입하기 위해서는 반드시 하락세 복합 캔들이 형성되어야 합니다. 만약 하락 복합 캔들이 형성되지 않거나 하락세가 아니면 반환합니다. 그렇지 않을 경우 복합 캔들 크기를 계산하고 펜딩 주문에 대한 가격 수준을 계산합니다.

(주문 유형은 Limit에 입력되는 패러미터에 따릅니다."매수 포지션 진입"을 참고하세요).

//+------------------------------------------------------------------+
//| 매수 포지션에 진입하기 위한 조건을 체크함(매도)                          |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- 하락 복합 캔들 형태 여부를 체크함 
   if(Candle(1)>=0) return(false);
//--- 복합 캔들의 사이즈를 계산
   double size=m_high_composite-m_low_composite;
//--- 펜딩 주문의 가격을 계산
   price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size);
//--- Stop Loss 가격을 계산
   sl   =m_symbol.NormalizePrice(price+m_stop_loss*size);
//--- Take Profit 가격을 계산
   tp   =m_symbol.NormalizePrice(price-m_take_profit*size);
//--- 주문 expiration time을 설정
   expiration+=m_expiration*PeriodSeconds(m_period);

//--- 조건을 만족하면 true를 반환   return(true);
  }


4. 매도 포지션 청산

만약 상승 복합 캔들이 형성되면 매수 포지션은 청산됩니다.

//+------------------------------------------------------------------+
//| 매도 포지션을 청산하기 위한 조건을 체크                                |
//+------------------------------------------------------------------+
bool CSignalCandles::CheckCloseShort(double& price)
  {
//--- 상승 복합 캔들이 형성되었는지를 체크 
  if(Candle(1)<=0) return(false);
//---
   price=0.0;
//--- 조건을 만족하면 true를 반환
   return(true);
  }

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

전략을 기반으로 거래 로봇을 만들려면 신호 속성을 MQL5 Wizard의 "Expert Advisor 만들기" 옵션에서 "반전 캔들스틱 패턴에 기반한 신호" 로 선택해야 합니다:

그림 2. MQL5 마법사에서 "반전 캔들 스틱 패턴에 기반한 거래 신호를 선택합니다.

그림 2. MQL5 마법사에서 "반전 캔들 스틱 패턴에 기반한 거래 신호를 선택합니다.

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


테스트 결과

과거 데이터(EURUSD M15, 사용자 지정 기간: 1.1.2010-05.01.2011,testing period: 1.1.2010-05.01.2011, Range=3, Minimum=50, ShadowBig=0.5, ShadowSmall=0.2, Limit=0, StopLoss=2.0, TakeProfit=1.0, Expiration=4)로 Expert Advisor를 백테스트 해보겠습니다.

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

그림 3. 반전 캔들스틱 패턴 지표에 기반한 Expert Advisor 백테스팅 결과

그림 3. 반전 캔들스틱 패턴 지표에 기반한 Expert Advisor의 테스팅 결과


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

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


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

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

Alligator 기술적 지표의 라인의 교차를 기반으로 하는 거래 신호 이 전략에 기반한 Expert Advisor 코드는 MQL5 마법사를 사용하여 자동으로 생성될 수 있습니다.

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

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

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

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

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

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