English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
EA 트리를 이용하여 MQL5 Expert Advisor 뚝딱 만들기: 1부

EA 트리를 이용하여 MQL5 Expert Advisor 뚝딱 만들기: 1부

MetaTrader 5트레이딩 시스템 | 11 10월 2021, 15:52
256 0
eatree
eatree

들어가며

EA Tree는 최초의 드래그 앤 드랍 MetaTrader MQL5 Expert Advisor 생성기입니다.. 이 프로그램은 컴퓨터에 설치해서 로컬로 작동하는 윈도우즈 어플리케이션입니다. 매우 사용하기 편리한 GUI를 이용하여 복잡한 MQL5도 만들 수 있습니다.

EA 트리에서는 박스들을 서로 연결하는 것으로 Expert Advisor를 만들 수 있습니다. 각 박스에는 MQL5 함수, 기술 인디케이터, 커스텀 인디케이터, 혹은 값이 들어있을 수 있습니다. 한 박스의 출력물은 다른 박스의 입력물로 쓰여 "박스 트리"를 형성할 수 있습니다. EA 트리는 "박스 트리"를 가지고 MQL5 코드를 생성하며, 그 후 컴퓨터에 설치된MetaTrader 5 플랫폼을 이용하여 MQL5 코드를 실행가능한 Expert Advisor로 변환시킵니다.

1번 그림. EA 트리 GUI

1번 그림. EA 트리 GUI


아래 몇개 섹션에서 EA 트리의 기본 컨셉에 대해 알아보겠습니다.

1. 기본 컨셉

"박스"와 "버튼"의 컨셉.

박스란 EA 트리에서 정보를 나타냅니다. 박스 안에는 기술 인디케이터, 수학 함수 등이 들어있을 수 있습니다. 각 박스에는 입력 버튼과 출력 버튼이 있습니다. 본 예시에서는 이 Add 박스는 A, B, 그리고 С라고 명명된 3개의 입력 버튼이 있으며, OUT이라 명명된 하나의 출력 버튼이 있습니다.

각 박스에는 자신만의 이름과 인덱스가 적힌 레이블이 붙어있습니다. 이 예시에서 Add_1은 박스의 이름이 Add이고 인덱스는 1임을 알려줍니다. 그 의미는 박스 레이아웃에서 생성된 첫 박스라는 의미입니다.

2번 그림. Add 박스

2번 그림. Add 박스

버튼 연결하기

한 박스의 출력 버튼은 다른 박스의 입력 버튼과 같은 자료형이라면 (예를 들어 둘 다 double 자료형일 경우) 연결 할 수 있습니다.

이 예시에서는 Add_2 박스의 OUT 버튼을 If_Else_1 박스의 A 버튼에 연결합니다.

3번 그림. "Add" 박스 + "if else" 박스

3번 그림. "Add" 박스 + "If-Else" 박스

2. "Trade" 박스

Trade 박스는 EA 트리의 주요 박스입니다. 여러 입력 버튼이 있습니다. 가장 중요한 버튼들엔 openLong, openShort, closeLong, closeShort 버튼들이 속합니다. 이외에도 트레이드 패러미터가 여럿 있습니다.

 4번 그림. "Trade" 박스

4번 그림. "Trade" 박스

3. "MM" (자금관리, MoneyManagement) 박스

MM 박스는 EA 트리에서 자금 관리를 담당합니ㅏㄷ. 여러 입력 버튼이 있습니다. 이 출력 버튼을 Trade 박스의 MM 버튼에 연결할 필요가 있습니다.

5번 그림. "매매" 박스 + MM 박스

5번 그림. "매매" 박스 + MM 박스


4. 논리 박스

논리 박스는 trade 박스 조건 버튼인 openLong, openShort, closeLong, 그리고 closeShort와 레이아웃 내의 그 외 박스들과 연결하기 위해 필요합니다.

If-Else 논리 박스

If-Else 박스는 이 논리로 되어있습니다.

If A operator B then T(출력 버튼) 은 참 else F(출력 버튼)은 참

operator는 같은, 같지않은, 미만, 초과 등이 될 수 있습니다.

6번 그림. "If-Else" 논리 박스

6번 그림. "If-Else" 논리 박스

교차 논리 박스

교차(Crossover) 박스는 이 논리로 되어있습니다.

If A operator1 B AND C operator2 D then T(출력 버튼)은 참 else F(출력 버튼)은 참.

operator1과 operator2는 같은, 같지않은, 미만, 초과 등이 될 수 있습니다. 시프트들은 인디케이터가 연결할 인덱스를 설정합니다.

이 예시에서는 이 논리를 사용합니다

If 현재 Stochastic main > 현재 Stochastic signal and

If 이전Stochastic main > 이전 Stochastic signal

그러면 T는 참이고 F는 거짓입니다.

7번 그림. 교차 + 스토캐스틱 논리 박스

7번 그림. "교차" + "스토캐스틱" 논리 박스

AND 논리 박스

AND 박스는 이 논리로 되어있습니다.

만약 (A AND B AND C AND D) 그러면 OUT(출력 버튼) 은 참

8번 그림. "And" 박스

OR 논리 박스

OR 논리 박스는 이 논리로 되어 있습니다.

만약 (A OR B OR C OR D) 그러면 OUT (출력 버튼)은 참

9번 그림. "Or" 박스

9번 그림. "Or" 박스


5. 기술 인디케이터 박스

기술 인디케이터 메뉴 아래에 MACD이동평균 (Moving Average,MA) 기술 인디케이터 박스를 비롯한 기술 인디케이터들이 준비되어있습니다.

MACD 기술 인디케이터 박스

10번 그림. MACD 기술 인디케이터 박스

10번 그림. MACD 기술 인디케이터 박스

이동평균 (Moving Average, MA) 기술 인디케이터 박스

11번 그림. 이동평균 (Moving Average, MA) 기술 인디케이터 박스

11번 그림. 이동평균 (Moving Average, MA) 기술 인디케이터 박스

6. 커스텀 인디케이터

커스텀 인디케이터 도구는 커스텀 인디케이터 메뉴와 툴바에 있습니다. EA 트리는 MQL5 커스텀 인디케이터만을 사용합니다.

7. MQL5 함수

EA 트리에는 이하의 MQL5 함수들을 위한 많은 박스가 있습니다.

  • iOpen, iClose, HighestHigh, LowestLow, 등을 위한 타임시리즈 박스.
  • 변환 함수들
  • 수학 함수들.
  • 스트링 함수들

8. 튜토리얼: 간단 Expert Advisor 만들기

이 섹션에서는 본 문서에서 지금까지 다룬 도구를 이용하여 간단한 EA를 만들 것입니다.

먼저 Expert Advisor 매매 법칙을 살펴봅시다.

진입 법칙:

롱 개방

  1. 현재 MACD main > 현재 MACD signal and
  2. MACD main < 이전 MACD signal and
  3. 현재 EMA(20) > 이전 EMA(20)

숏 개방

  1. MACD main < 현재 MACD signal and
  2. MACD main > 이전 MACD signal and
  3. EMA(20) < 이전 EMA(20)

이탈 법칙:

롱 청산: 숏 개방과 같은 법칙
숏 청: 롱 개방과 같은 법칙

기본 trade 박스를 쓰고 자금 관리 세팅이 없이 세팅하겠습니다.

시작해봅시다.

1. Trade 박스를 만들고 AND 박스를 만든 후 AND 박스의 출력 버튼을 Trade 박스의 openLong 버튼에 연결합니다.


12번 그림. Trade 박스 + And 박스

12번 그림. Trade 박스 + And 박스

2. 교차 박스를 만들고 그것의 T(참) 출력 버튼을 And 박스의 A 버튼에 연결합니다.

13번 그림. Trade 박스 + And 박스 + Crossover 박스

13번 그림. Trade 박스 + And 박스 + Crossover 박스

3. MACD 박스를 만들고 Main 출력 버튼을 교차 박스의 A C 버튼에 연결하고, 신호 출력 버튼은 교차 박스의 B D 버튼에 연결합니다.

여기의 논리는,

If 현재 MACD main > 현재 MACD signal and
      
이전 MACD main < 이전 MACD signal

14번 그림. Trade 박스 + And 박스 + Crossover 박스 + MACD 박스

14번 그림. Trade 박스 + And 박스 + Crossover 박스 + MACD 박스


4. MA와 If-Else 박스 만들기 MA 박스의 Main 출력 버튼을 If-Else 박스의 A 그리고 B 버튼들에 연결합니다. IF-Else 박스의 OUTPUT을 AND 박스의 B 버튼에 연결합니다.

openLong 조건의 서브트리는 아래의 3 조건으로 완성됩니다.

  1. 현재 MACD main > 현재 MACD signal and
  2. MACD main < 이전 MACD signal and
  3. EMA(20) > 이전 EMA(20)

15번 그림. Trade 박스 + And 박스 + Crossover 박스 + MACD 박스 + MA 박스 + If-else 박스

15번 그림. Trade 박스 + And 박스 + Crossover 박스 + MACD 박스 + MA 박스 + If-else 박스

5. 새로운 And 박스를 또 하나 만들고 이것의 출력 버튼을 Trade 박스의 openShort 버튼에 연결합니다.

6.openShort 논리는 openLong의 정 반대이므로 교차 박스의 F 출력 버튼을 새로운 And 박스의 A 버튼에 연결하십시오. 그리고 If-Else 박스의 F 출력 버튼을 새로운 And 박스의 B 버튼에 연결하십시오.


 16번 그림. Trade 박스 + And 박스 + Crossover 박스 + MACD 박스 + MA 박스 + If-else 박스 + And 박스

16번 그림. Trade 박스 + And 박스 + Crossover 박스 + MACD 박스 + MA 박스 + If-else 박스 + And 박스

7. 이탈 신호를 받으려면 첫 AND 박스의 OUT 변수를 Trade 박스의 closeLong 버튼에 연결하고, 두번째 AND 박스의 OUT 변수를 Trade 박스의 closeShort 버튼에 연결하시면 됩니다.

 17번 그림. Trade 박스에 CloseShort 추가하기
 17번 그림. Trade 박스에 CloseShort 추가하기

8. MACD와 MA 박스들을 더블 클릭 하고 만들 MQL5 EA에서 입력 패러미터가 될 변수의 수를 고릅니다.

18번 그림. 입력 패러미터들

18번 그림. 입력 패러미터들

9. 레이아웃 정리가 끝났습니다. 레이아웃을 저장하고 MQL5 파일을 저장합니다. 그 뒤 MetaEditor 5에서 새 MQL5 Expert Advisor 파일을 열고 컴파일합니다.

19번 그림. 생성된 Expert Advisor

19번 그림. 생성된 Expert Advisor

10. 마지막으로 MetaTrader 5 전략 테스터에서 선택한 입력 변수들을 최적화합니다.


20번 그림. Expert Advisor 테스트하기 

20번 그림. Expert Advisor 테스트하기


마치며

EA 트리를 이용하면 여러 장점이 있습니다.

  • 쉽게 사용하고 이해할 수 있는 드래그 앤 드랍 GUI
  • 프로그래밍 지식이 필요 없다는 점
  • MQL5를 쉽게 배울 수 있다는 점
  • 기업 비밀을 보호할 수 있다는 점
  • 원래라면 며칠 몇달이 걸릴 Expert Advisor 개발을 몇 분으로 줄일 수 있다는 점
  • 여러 화폐와 여러 타임프레임에 대해 복잡한 MQL5 Expert Advisor를 만들 수 있다는 점
  • 하나의 Expert Advisor 안에 여러 매매 전략을 넣을 수 있다는 점.
  • 다이어그램 (박스 트리)을 세이브/로드 하는 것으로 코드를 쉽게 재활용할 수 있다는 점
  • 여전히 MQL5 커스텀 인디케이터를 임포트할 수 있다는 점.
  • 올바른 MetaTrader 5 MQL 코드를 매번 쓴다는 점

MetaQuotes 소프트웨어 사를 통해 영어가 번역됨
원본 기고글: https://www.mql5.com/en/articles/337

파일 첨부됨 |
eatree-sample.mq5 (33.7 KB)
MQL5-RPC. MQL5에서의 원격 프로시져 호출(Remote Procedure Call): 재미와 돈을 위한 웹 서비스 접속과 XML-RPC ATC 분석기 MQL5-RPC. MQL5에서의 원격 프로시져 호출(Remote Procedure Call): 재미와 돈을 위한 웹 서비스 접속과 XML-RPC ATC 분석기
본 문서에서는 MQL5에서 원격 프로시져 호출(Remote Procedure Call)을 활성화시켜주는 MQL5-RPC 프레임워크에 대해 알아볼 것입니다. 우선 XML-RPC 기초로 시작하여, MQL5 구현을 짚고, 그 뒤엔 실용 예제 두개를 다뤄볼 것입니다. 첫 예제는 간단한 외부 웹 서비스를 이용하는 것이고 두번째 예제는 간단한 XML-RPC ATC 2011 분석기 서비스 클라이언트입니다. 만약 리얼타임으로 ATC 2011의 각기 다른 통계 자료를 구현하고 분석하는지 보고싶으시다면 이 문서는 바로 당신을 위한 것입니다.
올인 외환거래 전략 올인 외환거래 전략
본 문서의 목적은 가장 단순한 매매 전략인 "올인" 게임 원칙을 구현하는 것입니다. 우리의 목적은 딱히 수익을 올리는 Expert Advisor를 만드는게 아닙니다. 우리의 목표는 가장 나은 확률을 검토하여 여러번에 거쳐 초기 액수를 늘리는 것입니다. 인디케이터나 기술 분석, 이런 것에 대해 하나도 모르면서 외환시장에서 대박을 터뜨리는 것이 과연 가능할까요?
MetaTrader 5를MetaTrader4 시그널 프로바이더로 활용하기 MetaTrader 5를MetaTrader4 시그널 프로바이더로 활용하기
MetaTrader 5의 거래 분석을MetaTrader4에서 실행하는 방법, 그 예제 및 분석MetaTrader5로 시그널 프로바이더를 만들어 클라이언트에 연결하고,MetaTrader4에서 실행하는 방법을 알아보겠습니다.MetaTrader4의 실제 거래 계좌로 자동 매매 챔피언십 참가자들을 따르는 방법도 배우실 겁니다.
내가 어째서 걱정을 멈추고 자가학습형 Expert Advisor를 만들었는가 내가 어째서 걱정을 멈추고 자가학습형 Expert Advisor를 만들었는가
1년 조금 더 전에 joo는 자신의 글 "Genetic Algorithms - It's Easy!"에서 MQL5에서 유전 알고리즘을 구현할 도구를 주었습니다. 그 도구를 활용하여 우리는 한계 조건에 맞춰 자신의 패러미터를 스스로 유전적으로 수정하는 Expert Advisor를 만들어 볼 것입니다...