English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
MQL5 마법사 : 새 버전

MQL5 마법사 : 새 버전

MetaTrader 5트레이딩 | 5 7월 2021, 10:49
99 0
MetaQuotes
MetaQuotes

MetaTrader 5 터미널은 계속해서 새로운 기능을 개선하고 획득합니다. 새로운 MetaTrader 5 빌드 439에는 업데이트된 MQL5 마법사가 포함되어 있어 보다 유연한 거래 규칙을 기반으로 Expert Advisor를 만들 수 있습니다. 이 글에서는 MQL5 마법사의 새로운 가능성을 설명하고 이 애플리케이션을 사용하여 생성된 Expert Advisors 아키텍처의 변경 사항에 대해 설명합니다.


배경

원래 MQL5 마법사는 트레이더가 MQL5에서 프로그램을 쉽게 만들 수 있도록 도와주는 편리한 도구로서 설계되었습니다. 이미 MQL5 마법사의 첫 번째 버전에서는 바로 사용할 수 있는 Expert Advisor를 간단한 모듈 세트로 빠르게 생성하여 MQL5에서 소스 코드를 얻을 수 있었습니다. 여기서 중요한 점은 MQL5 언어를 몰라도된다는 것입니다. 필요한 것은 MQL5 마법사에서 자신만의 Expert Advisor 만들기라는 글을 읽기만 하면 됩니다.

마법사가 생성한 Expert Advisor에는 다음 세 가지 모듈이 포함됩니다.

각 EA 모듈은 특정 클래스를 기반으로 하며 Expert Advisor에 대해 취한 행동을 수정할 수있는 많은 기회를 제공합니다.

표준 라이브러리에는 다양한 자금 관리 메커니즘, 오픈 포지션 유지 및 거래 신호 생성을 구현하기 위해 기능적으로 완전하고 바로 사용할 수있는 클래스 세트가 포함되어 있습니다.

이 접근 방식을 통해 입증되고 잘 작동하는 모듈을 기반으로 거래 로봇을 만들 수 있습니다. 몇 단계를 거쳐 필요한 매개 변수를 지정하기만 하면 됩니다. 그러나 경험에 따르면 사용자 정의 클래스 작성의 원칙을 설명하는 좋은 사례조차도 초보자 MQL5 프로그래머에게 항상 도움이 되는 것은 아닙니다. 

이전 버전의 MQL5 마법사의 또 다른 단점은 조금이라도 수정이 들어간 새 거래 알고리즘을 구현하려면 새 클래스를 작성해야 한다는 점이었습니다.

이러한 경험과 사용자의 의견을 바탕으로 MetaQuotes는 훨씬 더 많은 기능을 갖춘 고급 버전의 MQL5 마법사를 만들기로 결정했습니다.


거래 신호 생성의 새로운 개념

MQL5 마법사 이전 버전의 주요 걸림돌은 자신의 거래 신호를 만들 때 발생할 수 있는 문제와 관련이 있습니다. 따라서 새 버전의 마법사를 개발할 때는 간단한 원칙에 따라 결합된 거래 신호 생성을 단순화하는 데 중점을 두었습니다.

이를 위해 거래 신호 생성기 (이하 신호라고 함)의 기본 클래스가 다음과 같이 변경되었습니다.

  • 모든 신호 (CExpertSignal 클래스에서 파생) 는 가능한 가격 변동에 대한 의견을 제공하는 "어드바이저 (advisors)"의 예측을 기반으로 합니다. 이 어드바이저들은 또한 CExpertSignal 클래스에서 파생되므로 자체 어드바이저를 가질 수 있습니다. 각 신호의 어드바이저 수는 최대 64 명입니다.
  • 가격 이동 방향에 대한 "투표"를 구현하는 새로운 방법이 CExpertSignal 클래스에 추가되었습니다. 또한 이러한 "투표"에 참여하기 위한 새로운 메커니즘이 포함되어 있습니다.
  • 의사 결정의 유연성을 높이기 위해, 의사 결정에 관련된 각 신호 ("어드바이저"도 신호임을 ​​잊지 마십시오) 이제 자체(현재와는 다른) 시장 계기 및/또는 자체 시간대에서 정보를 수신할 수 있습니다.

따라서 한 방향 또는 다른 방향으로 시장에 진입하는 것에 대한 결정은 이제 "집합적으로", 즉 모든 어드바이저의 "고려된 의견"을 감안하여 취할 수 있습니다.

신호는 시장 패턴 탐지 (이 신호에 특정한) 알고리즘을 기반으로 가격 움직임의 방향에 대해 "투표"를 합니다. 예를 들어, 확률적 기반 신호는 반전, 가격 차이 등을 식별 할 수 있습니다.

표준 라이브러리에는 이미 다양한 지표를 기반으로 사용 가능한 스무 개의 신호가 포함되어 있습니다.


거래 결정을 위한 새로운 메커니즘

신호에 의한 거래 결정을 위한 메커니즘은 다음과 같은 주요 조항의 형태로 제공될 수 있습니다.

  • 각 신호에는 고유한 시장 패턴 세트 (가격 및 지표 값의 일부 조합)가 있습니다.
  • 각 시장 패턴에는 1에서 100까지의 가중치가 있습니다. 값이 높을수록 패턴이 강해집니다.
  • 각 패턴은 특정 방향으로의 가격 변동에 대한 예측을 생성합니다.
  • 적용된 패턴에서 수신한 예측을 비교하여 가장 강력한 예측을 선택하고 -100에서 +100까지의 범위에서 예측을 제공합니다. 여기서 기호는 예측된 움직임의 방향을 결정합니다 (음수 — 가격이 하락하고, 양수 — 가격이 상승함). 절대값은 발견된 최상의 패턴의 강도에 해당합니다. 이 결과는 일반 투표로 전송됩니다.
  • 모듈 내의 각 어드바이저의 예측은 해당 설정 ("가중치")에 지정된 0에서 1.0까지의 가중치 요소로 투표를 부치게 됩니다.
  • 투표 결과는 -100에서 +100까지의 숫자이며, 여기서 부호는 예측된 움직임의 방향을 결정하고 절대 값은 신호의 강도를 나타냅니다. 모듈의 모든 어드바이저에 대한 가중 예측의 산술 평균으로 계산됩니다. 이 결과는 신호의 예측이며 절대 값은 신호의 강도를 나타냅니다.

생성된 각 Expert Advisor의 설정에는 포지션을 오픈하거나 클로즈 하는 결정을 내리는 임계 값 (ThresholdOpen 및 ThresholdClose) 이 포함되어 있습니다. 이는 0에서 100까지의 값입니다. 신호의 강도가 임계 값을 초과하면 거래 작업을 수행하는 것으로 결정됩니다.

MQL5 마법사를 사용하여 생성된 EA는 세 부분으로 구성되며 가장 중요한 부분은 거래 신호 생성을 위한 모듈을 포함하는 헤드입니다. 그런 다음 신호 모듈의 프로세스를 다음과 같이 나타낼 수 있습니다.



그림은 신호 모듈이 시장 패턴 블록과 어드바이저 블록의 두 블록을 포함 할 수 있음을 보여줍니다. 패턴 블록은 각 패턴에서 예측을 생성 하게 되는데 이 후 가장 강력한 패턴이 선택됩니다. 어드바이저의 예측 (다른 신호)에 해당 가중치를 곱하고 결과 값이 투표 중에 합산되어 산술 평균 예측을 생성합니다. 이 경우 신호 모듈은 현재 상황에 대해 -36.6 = (-100+60-54)/3을 생성했습니다. 이는 절대 강도가 ​​36,6 인 판매 예측을 의미합니다.

두 가지 간단한 예에 대한 의사 결정 메커니즘을 고려해보세요.

ThresholdOpen=20이고 ThresholdClose=90 인 Expert Advisor가 있다고 가정합니다. 가중치가 0.4 인 MA와 가중치가 0.8 인 확률론을 기반으로 한 신호 모듈이 거래 결정에 관여합니다. 획득한 거래 신호의 두 가지 옵션을 고려하십시오.

  • 옵션 1.

    가격이 상승하는 MA 지표를 넘어섰습니다. 이는 MA 모듈에 포함된 가격 상승을 암시하는 시장 패턴 중 하나에 해당하는데, 즉, 삽입된 MA 모듈에 포함되어 있습니다. 그 중요성은 100입니다. 동시에 확률적 오실레이터는 하락세로 접어들어 가격과의 차이를 형성했습니다. 이것은 가격 하락을 암시하는 패턴으로 확률적 모듈에서 구현됩니다. 이 패턴의 중요성 은 80입니다.

    최종 투표 결과를 계산합니다. MA 모듈에서 얻은 가중치 예측은 0.4 * 100 = 40으로 계산됩니다. Stochastic 모듈의 가중치 예측 은 0.8 * (-80) = -64로 계산됩니다. 최종 예측은 두 가중 예측 (40 - 64)/2 = -12의 산술 평균으로 계산됩니다. 이것은 12라는 조건부적 힘을 갖게 되어 매도하라는 신호로 보여집니다. 임계 값 20에 도달하지 않았습니다. 따라서 거래는 진행되지 않습니다.

  • 옵션 2.

    가격은 MA 상승 지표를 하향 교차했습니다. 이는 MA 모듈에 포함된 가격 상승을 암시하는 시장 패턴 중 하나에 해당합니다. 즉, MA 모듈에 삽입됩니다. 그 중요성은 10입니다. 동시에 확률적 오실레이터는 하락세로 접어들어 가격과의 차이를 형성했습니다. 이것은 가격 하락을 암시하는 패턴으로, 확률적 모듈에서 구현됩니다. 이 패턴의 중요성 은 80입니다.

    최종 투표 결과를 계산합니다. MA 모듈에서 얻은 가중치 예측은 0.4 * 10 = 4로 계산됩니다. 추적 모듈의 가중 예측 은 0.8 * (-80) = -64로 계산됩니다. 최종 예측은 두 개의 가중 예측 (4-64) / 2 = -30 의 산술 평균으로 계산됩니다. 이것은 조건부적 힘 30으로 판매하라는 신호입니다. 임계 값 20에 도달했습니다. 따라서 결과는 숏 포지션을 개시하라는 신호입니다.



그림 1. 차트의 시장 패턴 예

그림은 예제에 설명된 시장 패턴을 보여줍니다:

a) 가격과 확률적 오실레이터의 차이는 옵션 1과 2에서 사용됩니다.
b) 가격이 아래에서 위로 MA 인디케이터
를 넘었습니다. 옵션 1에서 사용됩니다.
c) 가격이 MA를 넘어 섰습니다 위에서 아래로- 옵션 2에서 사용됩니다.


EA에서 신호 결합

저희만의 Expert Advisor를 만들려면 먼저 어떤 상품과 거래 할 기간을 결정해야 합니다. 둘째, 거래에 사용할 지표를 기반으로 신호를 선택해야 합니다.

저희의 예에는 다음과 같은 조건이 있습니다.

  1. 거래된 기호는 EURUSD입니다. 저희의 기간은 M10입니다.
  2. 사용된 신호 :
    • EMA ('EURUSD',M10,31) - 지수 이동 평균에 기반한 신호;
    • 확률론적인('EURUSD',M10,8,3,3) - 확률적 오실레이터에 기반한 신호;
    • EMA('EURUSD',H1,24) - 다른 시간대의 지수 이동 평균을 기반으로 하는 신호입니다.
    • 확률론적인('EURJPY',H4,8,3,3) - 다른 기호 및 시간 프레임의 확률적 오실레이터를 기반으로 하는 신호입니다.
    • IntradayTimeFilter - 시간 및 요일 수를 기준으로 한 필터입니다.


새 MQL5 마법사에서 거래 로봇 만들기

Expert Advisor의 소스 코드는 MetaEditor의 MQL5 마법사를 사용하여 생성됩니다.

거래 전략의 기본 클래스는 terminal_data_folder\MQL5\Include\Expert\에 있습니다. 즉시 사용 가능한 거래 신호 클래스, 트레일링 오픈 포지션 클래스 및 머니 및 리스크 관리 클래스는 Signal, Trailing 및 Money의 하위 폴더에 위치합니다. MQL5 마법사는 이러한 폴더의 파일을 구문 분석하고 이를 사용하여 Expert Advisor의 코드를 생성합니다.

MQL5 마법사의 기본 클래스

그림 2. MQL5 마법사의 기본 클래스

MQL5 마법사를 시작하려면 도구 모음에서 "새로 만들기"를 클릭하거나 "파일"메뉴에서 "새로 만들기"를 선택해야 합니다 (또는 Ctrl+N 누르기):

그림 2. MQL5 마법사 시작

그림 3. MQL5 마법사 시작

Then select the type of the program you want to create. 그런 다음 만들려는 프로그램 유형을 선택합니다.

그림 3. 프로그램 유형 선택

그림 4. 프로그램 유형 선택


1 단계. Expert Advisor의 일반 속성

다음으로 Expert Advisor의 일반 속성을 설정할 수 있는 대화 상자가 열립니다.

그림 4. Expert Advisor의 일반 속성

그림 5. Expert Advisor의 일반 속성

"이름", "저자" 및 "링크" 필드 (각각)에 Expert Advisor의 이름, 작성자의 이름 및 웹 사이트 링크를 지정합니다.

Expert Advisor에는 다음과 같은 입력 매개 변수도 있습니다:

  • 기호 (문자열 유형)                            - EA가 실행중인 기호입니다.
  • TimeFrame (ENUM_TIMEFRAMES 유형) - EA가 실행되는 기간입니다.

기본적으로 두 옵션은 모두 "현재"로 설정되어 있습니다 (즉, Expert Advisor가 테스트되고 모든 기호/시간 프레임에서 거래됩니다).

하지만 그렇게 항상 좋기만 한가요? 예를 들어, AUDNZD 주간 차트에서 EURUSD에 대한 장중 거래를 위해 설정된 Expert Advisor를 실수로 실행했다고 가정해봅시다 (또한 교차 쌍의 확인을 사용함). 그닥 좋지 않아보입니다.

따라서 필요한 매개 변수를 설정하는 것이 좋습니다. 다음 단계에서 EA가 거래 할 거래 신호 유형을 선택합니다. 기호 선택으로 이동하려면 "다음"을 클릭하십시오.


2 단계. 거래 신호 모듈 선택

개시 및 마감 포지션의 알고리즘은 거래 신호 모듈에 의해 결정됩니다. 거래 신호 모듈에는 포지션 오픈/클로즈/리버스 규칙이 포함되어 있습니다.

Expert Advisor는 최대 64 개의 서로 다른 (또는 동일하지만 설정이 다른) 거래 신호 모듈을 동시에 사용할 수 있습니다.

그림 5. EA 신호의 매개 변수 (시작).

그림 6. EA 신호의 매개 변수 (시작).

표준 라이브러리에는 즉시 사용 가능한 거래 신호 모듈이 있습니다.

  1. '가속 오실레이터(Accelerator Oscillator)' 인디케이터 신호;
  2. '적응 이동 평균' 인디케이터 신호;
  3. '어썸 오실레이터(Awesome Oscillator)' 인디케이터 신호;
  4. '베어스 파워(Bears Power)' 인디케이터 신호;
  5. '불스 파워(Bulls Power)' 인디케이터 신호;
  6. '상품 채널 지수' 오실레이터 신호;
  7. '디마커 (DeMarker)' 오실레이터 신호;
  8. '이중 지수 이동 평균' 인디케이터 신호;
  9. '봉투(Envelopes)'인디케이터 신호;
  10. '프랙탈 적응 이동 평균' 인디케이터 신호;
  11. 일중 시간 필터 신호;
  12. '이동 평균 수렴/발산' 오실레이터 신호;
  13. 지표 '이동 평균' 신호;
  14. '포물선 SAR' 인디케이터 신호;
  15. '상대 강도 지수' 오실레이터 신호;
  16. '상대 활력 지수' 오실레이터 신호;
  17. '확률적' 오실레이터 신호;
  18. '트리플 지수 평균' 오실레이터 신호;
  19. '트리플 지수 이동 평균' 인디케이터 신호;
  20. '윌리엄스 퍼센트 랜지 (WPR)' 오실레이터 신호.


그림 6. 신호 선택

그림 7. 신호 선택

"참조 조건"에 따라 먼저 "'이동 평균' 지표 신호 ''를 선택합니다.

필요한 매개 변수 (PeriodMA 및 방법)를 구성합니다. 최적화에서 제외하려면 "이름"필드를 두 번 클릭합니다 (기본적으로 신호의 모든 매개 변수는 input-parameters로 표시됨). 가중치를 제외한 모든 매개 변수.

여기에서 "Symbol" 및 "TimeFrame" 필드를 언급해야 합니다. 신호의 적절한 설정이 현재 매개 변수와 다른 경우이 필드를 채워야 합니다. 신호의 경우 현재 설정은 "우수한 지능" (이 경우 Expert Advisor)의 설정입니다.

그림 7. 신호 매개 변수의 구성

그림 8. 신호 매개 변수의 구성

나머지 신호를 추가하고 필요한 매개 변수를 구성합니다. 최적화를 위해 모든 신호에 가중치 매개 변수 만 남겨 둡니다.

신호 구성이 완료되었습니다. 계속하려면 "다음"을 클릭하십시오.

그림 8. EA 신호의 매개 변수 (끝)

그림 9. EA 신호 매개 변수 (종료)


3 단계. 트레일링 오픈 포지션 모듈 선택

다음 단계는 트레일링 오픈 포지션 (Trailing Stop) 알고리즘을 선택하는 것입니다. 트레일링을 사용하면 수익을 절약 할 수 있습니다.

이 모듈의 구성은 MQL5 마법사 : 프로그래밍 없이 Expert Advisor 만들기에 자세히 설명되어 있습니다. 저희의 경우에는 트레일링을 사용하지 않습니다.

그림 9. 위치 추적 알고리즘 선택

그림 10. 위치 추적 알고리즘 선택


4 단계. 자금 및 위험 관리 모듈 선택

마지막 단계에서는 Expert Advisor에서 사용할 자금 및 위험 관리 시스템을 선택해야 합니다. 이 모듈의 구성은 MQL5 마법사 : 프로그래밍 없이 Expert Advisor 만들기에 자세히 설명되어 있습니다. 저희의 경우 고정된 랏을 사용할 것입니다.


그림 10. 자금 관리 알고리즘 선택

그림 11. 자금 관리 알고리즘 선택

이걸로 다 끝났습니다. "마침"을 클릭하십시오.


MetaTrader 5 전략 테스터에서 생성된 Expert Advisor 확인

표준 라이브러리의 모든 구성 요소가 있으면 생성된 Expert Advisor의 코드가 성공적으로 컴파일됩니다. 최고의 Expert Advisor 매개 변수 세트는 MetaTrader 5 전략 테스터에서 최적화 과정 후에 찾을 수 있습니다.

EA 최적화를 위해 01.01.10에서 01.01.11까지 기간을 선택하고 두 단계로 실행합니다.

첫 번째 단계 : "신호 가중치 선택, 진입/출구 조건 트리거 임계 값 및 거래 수준."

그림 11. Expert Advisor 최적화의 매개 변수

그림 12. Expert Advisor 최적화의 매개 변수

다음은 최상의 최적화 실행 결과입니다.

그림 12. Expert Advisor 최적화의 결과

그림 13. Expert Advisor 최적화의 결과

저희는 이미 좋은 결과를 얻었습니다 (이익 및 최대 감소 측면에서). 저희는 고정된 랏으로 "거래"하고 있다는 것을 잊지 말아야 합니다.

그러나 결과를 더욱 향상 시키도록 노력합시다. 이를 위해 다른 신호가 있습니다 (아직 설정을 사용하지 않았습니다). 매개 변수를 최적화하여 찾은 값은 Expert Advisor가 인식 한 시장 패턴을 설명합니다.

그러나 결과적인 시장 패턴이 항상 똑같이 잘 작동하는 것은 아니라는 제안을 드리고 싶습니다. 최적화 결과에 시간 필터를 적용해 보겠습니다.

이를 위해 "IntradayTimeFilter"신호의 "Bad hours"매개 변수에 따라 Expert Advisor를 최적화 해 보겠습니다. "나쁜 시간 (Bad hours)"매개 변수는 24 비트의 비트 맵 (하루당 시간)입니다. 비트 마스크의 모든 비트는 시간 중 하나와 고유하게 일치합니다 (마스킹 되어있는 비트 수와 하루 중 시간과 일치). 현재 시간의 수가 이 비트의 수와 같으면 1과 동일한 비트의 값이 투표 결과를 무시하게 됩니다 (즉, 시간이 거래에 적합하지 않은 것으로 간주 됨).

"좋은" 시간과 "나쁜" 시간의 가능한 모든 조합을 살펴보기 위해 1과 같은 단계에서 매개 변수를 0에서 2^24-1 (자연 형식 16 777 215)까지 최적화합니다.

그림 13. Expert Advisor 최적화의 매개 변수

그림 14. Expert Advisor 최적화 매개 변수

최적화의 결과로 11 665 415를 얻었습니다. 이것이 의미하는 바를 이해하기 위해 이진 형식으로 표현해 보겠습니다.

  •  101100100000000000000111 - 즉, "나쁜" 시간의 수는 0, 1, 2, 17, 20, 21 및 23입니다.

다음은 모든 최적화 후 Expert Advisor의 매개 변수입니다.

그림 14. Expert Advisor의 속성

Figure 15. Expert Advisor의 속성

최상의 매개 변수를 가진 단일 테스트 보고서가 첨부됩니다. 이익은 더 높고 감소는 더 낮습니다. 시간 필터링 후 내역적 기간의 거래 시스템 결과가 개선되었다고 결론 지을 수 있습니다.


결론

거래 전략 클래스를 사용하면 MQL5 마법사를 사용하여 MetaEditor에서 바로 거래 아이디어를 테스트하기 위한 로봇을 쉽게 만들 수 있습니다. 이제 Expert Advisor의 전체 소스 코드는 즉시 사용 가능한 표준 라이브러리의 모듈 조합 또는 자체 모듈을 사용하여 구성 할 수 있습니다.

MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/275

파일 첨부됨 |
sample.mq5 (8.75 KB)
사용자 정의 그래픽 컨트롤. 1 부: 간단한 컨트롤 만들기 사용자 정의 그래픽 컨트롤. 1 부: 간단한 컨트롤 만들기
이 글에서는 그래픽 컨트롤 개발의 일반 원칙을 다룹니다. 그래픽 개체로 빠르고 편리한 작업을 위한 도구를 준비하고 텍스트 또는 숫자 데이터를 입력하기위한 간단한 컨트롤 생성의 예와 사용 방법을 분석 할 것입니다.
MQL5에서 리소스 사용 MQL5에서 리소스 사용
MQL5 프로그램은 일상적인 계산을 자동화 할 뿐만 아니라 완전한 기능을 갖춘 그래픽 환경을 만들어 주기도 합니다. 진정한 인터랙티브 컨트롤을 만드는 기능은 이제 고전적인 프로그래밍 언어의 기능과 거의 동일합니다. MQL5에서 본격적인 독립 실행형 프로그램을 작성하려면 리소스를 사용하십시오. 리소스가 있는 프로그램은 유지 관리 및 배포가 더 쉽습니다.
사용자 정의 그래픽 컨트롤. 파트 2. 컨트롤 라이브러리 사용자 정의 그래픽 컨트롤. 파트 2. 컨트롤 라이브러리
"Custom Graphical Controls"시리즈의 두 번째 글에서는 프로그램 (Expert Advisor, 스크립트, 인디케이터)과 사용자 간의 상호 작용에서 발생하는 주요 문제를 처리하기 위한 컨트롤 라이브러리를 소개합니다. 라이브러리에는 수많은 클래스 (CInputBox, CSpinInputBox, CCheckBox, CRadioGroup, CVSсrollBar, CHSсrollBar, CList, CListMS, CComBox, CHMenu, CVMenu, CHProgress, CDialer, CDialerInputBox, CTable) 및 사용 예제가 포함되어 있습니다.
MetaTrader 5 테스트의 기초 MetaTrader 5 테스트의 기초
MetaTrader 5의 세 가지 테스트 모드의 차이점은 무엇이며 특히 무엇을 찾아야 합니까? 여러 상품에서 동시에 거래되는 EA 테스트는 어떻게 이루어 집니까? 테스트 중 지표 ​​값은 언제 어떻게 계산되며 이벤트는 어떻게 처리됩니까? "오픈 프라이스 전용" 모드에서 테스트하는 동안 다른 기기의 바를 동기화하는 방법은 무엇입니까? 이 글에서 저희는 이러한 질문과 다른 많은 질문에 대한 답변을 제공하는 것을 목표로 합니다.