English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
MQL5 클라우드 네트워크로 계산 속도 향상

MQL5 클라우드 네트워크로 계산 속도 향상

MetaTrader 5 | 5 7월 2021, 10:55
133 0
MetaQuotes
MetaQuotes

MetaTrader 5의 다중 스레드 테스트

새로운 MetaTrader 5 거래 플랫폼의 모든 장점을 오랫동안 열거하고 금융 시장에서 기술적 분석 및 거래를 위한 다른 프로그램보다 낫다고 주장 할 수 있습니다. 플랫폼에 찬성하는 또 하나의 논란의 여지가 없는 주장이 있습니다. 그리고이 마지막 주장은 MetaTrader 5 클라이언트 터미널의 전략 테스터입니다. 이 글에서 저희는 그 훌륭한 기능에 대해 설명하고 왜 MetaQuotes Software Corp여야만 하는 지에 대해서도 설명해드릴 것입니다. 개발자들은 이를 아주 자랑스럽게 생각합니다.

5 세대 클라이언트 터미널에는 새롭고 강력하고 빠른 거래 전략 프로그래밍을 위한 MQL5 언어뿐만 아니라 처음부터 디자인된 완전히 새로운 전략 테스터도 있습니다. 테스터는 과거 데이터에서 테스트된 거래 전략의 결과를 수신하는 데 사용될 뿐만 아니라 최적화, 즉 최적의 매개 변수를 찾는데도 사용됩니다.

전략 최적화는 서로 다른 매개 변수 세트를 사용하여 동일한 기간의 거래 전략을 여러 번 실행하는 것입니다. 이것은 병렬화 될 수 있는 대량 계산의 표준 작업이며, 짐작 하셨겠지만 MetaTrader 5의 테스터는 다중 스레드입니다! 이것이 실제로 의미하는 바는 이제 표준 배포 팩에서 Expert Advisor의 최적화 예를 살펴 보겠습니다.


시험 조건

위에서 언급한 목적을 위해 Intel Core i7 (8 코어, 3.07GHz) 및 12GB 메모리가 장착된 컴퓨터와 운영 체제 Windows 7 64 비트 및 MetaTrader 5 빌드 1075를 사용합니다.

다음 설정을 사용하는 표준 배송 팩의 Expert Advisor Moving Average.mq5가 테스트 됩니다.

  • 기호 : EURUSD H1
  • 테스트 간격 : 2011.01.01 ~ 2011.10.01
  • 가격 시뮬레이션 모드 : 1 분 OHLC (1 분 바의 시가, 고가, 저가 및 종가가 사용됨)
  • 최적화 유형: 느린 완료 알고리즘, 총 14,040 회 통과
최적화된 매개 변수 :

최적화 매개 변수


로컬 에이전트에서 최적화

먼저 로컬 에이전트에서 최적화를 실행해 보겠습니다. 코어 수에 따른 최적의 수인 8 개의 테스트 에이전트가 있습니다. 로컬 네트워크 및 MQL5 클라우드 네트워크의 에이전트에서 원격 에이전트 사용을 비활성화합니다.

에이전트 그룹 활성화/비활성화

최적화가 끝나면 저널으로 이동합니다. 8 개의 로컬 에이전트에서 14,040 번의 패스가 1 시간 3 분 44 초 소요되었습니다.

2015.02.05 16:44:38	Statistics	locals 14040 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2015.02.05 16:44:38	Statistics	optimization passed in 1 hours 03 minutes 46 seconds
2015.02.05 16:44:38	Tester	optimization finished, total passes 14040


로컬 에이전트 팜을 사용한 최적화

더 많은 작업을 병렬로 수행하는 방법은 무엇입니까? 물론 코어 수가 많은 프로세서를 구입할 수 있습니다. 그러나 동시 작업 수를 늘릴 수는 없습니다. 전략 테스터가 이 문제를 해결합니다. 로컬 네트워크에서 고유한 처리 에이전트 팜을 만들 수 있습니다.


에이전트 팜을 만드는 방법은 무엇입니까?

에이전트는 로컬 네트워크의 각 컴퓨터에 설치되어야 합니다. MetaTrader 5가 컴퓨터에 설치된 경우 "도구" 메뉴에서 해당 명령을 사용하여 테스트 에이전트 관리자를 엽니다.

전략 테스터 에이전트 관리자

그렇지 않으면 에이전트 MetaTrader 5 전략 테스터 에이전트 관리를위한 별도의 애플리케이션을 다운로드하고 간단한 설치 프로세스를 수행하십시오.

MetaTrader 5 전략 테스터 에이전트

관리자에서 에이전트 탭을 엽니다.

  1. 설치해야하는 에이전트 수를 선택하십시오. 에이전트는 논리적 코어 수에 따라 설치됩니다. 
  2. 사용할 에이전트를 연결하는 데 사용할 비밀번호를 입력하십시오.
  3. 연결할 포트 범위를 선택하십시오.
  4. 추가를 클릭하십시오.

그게 전부입니다. 에이전트는 로컬 네트워크의 다른 컴퓨터에서 사용할 준비가 되었습니다.


에이전트를 연결하는 방법은 무엇입니까?

몇 번의 클릭만으로 상담원이 연결됩니다. 터미널에서 전략 테스터를 열고 "Agents" 탭으로 이동합니다. "로컬 네트워크 팜"을 선택하고 컨텍스트 메뉴에서 "추가"를 클릭합니다.

원격 에이전트를 추가하는 방법

가장 쉽고 빠른 방법은 IP 주소 및 포트 범위에 대해 로컬 네트워크를 자동으로 검색하는 것입니다. 이를 선택하고 설치 중에 지정된 에이전트 연결 비밀번호를 입력하십시오.

LAN에서 에이전트 검색

"마침"을 클릭하면 발견된 모든 에이전트를 테스트 할 수 있습니다.


속도 테스트

8 개의 로컬 에이전트에 20 개의 원격 에이전트를 추가했습니다. 따라서 총 28 명의 에이전트가 있으며, 이는 원래보다 3.5 배 더 많은 것입니다. Expert Advisor를 최적화하고 얼마나 빨리 수행되는지 살펴 보겠습니다.

2015.02.05 15:14:44    통계    현지 3412 개 작업 (24%), 원격 10628 개 작업 (75%), 클라우드 0 작업 (0%)
2015.02.05 15:14:44    통계    15 분 47 초 만에 최적화 통과
2015.02.05 15:14:44    시험 장치    최적화 완료, 총 통과 14040

작업의 4 분의 3은 원격 에이전트가 수행했습니다. 최적화 시간이 15 분 47 초로 단축되어 거의 4 배 빨라졌습니다.

속도가 인상적이지만 이 솔루션을 모든 사람이 사용할 수 있는 것은 아닙니다. 걱정하지 마세요. EA를 더욱 빠르게 최적화 할 수있는 기회가 있습니다. MQL5 클라우드 네트워크의 에이전트를 사용해봅시다!


MQL5 클라우드 네트워크를 사용한 최적화

이번에는 로컬 에이전트를 사용하지 않고 대신 MQL5 Cloud Network에이전트만 사용합니다. "시작" 버튼을 클릭하고 최적화 진행 상황을 확인하십시오. 비디오는 실시간으로 프로세스를 보여줍니다.


MQL5 클라우드 네트워크를 사용하면 최적화 프로세스가 150 배 빨라집니다!

최적화 중에 MQL5 클라우드 네트워크의 각 노드는 사용 가능한 에이전트에 작업 (단일 실행)을 배포합니다. 최적화에는 26 초 밖에 걸리지 않아 147 (!) 시간의 가속이 제공됩니다. 트레이더는 합리적인 시간에 수십만 번의 최적화 패스를 실행해야 할 수 있습니다. MetaTrader 5 테스터를 사용하면 MQL5 클라우드 네트워크에서 계산하는 데 1 시간 밖에 걸리지 않지만 네트워크가 없으면 며칠을 소비하게 됩니다. 이제 클릭 한 번으로 수천 개의 코어를 사용하여 작업을 해결할 수 있습니다. 그리고 모든 사람이 사용할 수 있습니다! 하지만 어떻게 작동합니까?


수천 대의 컴퓨터가 포함된 MQL5 클라우드 네트워크

MQL5 클라우드 네트워크는 테스트 에이전트가 작업을 수행하기 위해 연결하는 전용 서버 인 노드로 구성됩니다. 이러한 노드는 전 세계 에이전트를 지리적 위치에 따라 더 큰 풀로 결합하므로 관리자 (풀러)입니다. 유휴 모드에있는 각 에이전트는 작업을 수행 할 준비가되었음을 알리는 메시지를 보냅니다. 이러한 메시지 사이의 간격은 MQL5 클라우드 네트워크의 현재 로드에 따라 다릅니다.

네트워크의 각 노드는 동시에 MQL5 클라우드 네트워크에 액세스하는 지점으로 MetaTrader 5에 의해 처리됩니다. 터미널은 MQL5.com 계정 세부 정보를 사용하여 이들에 연결됩니다. MQL5 클라우드 네트워크의 서버 목록과이를 통해 사용 가능한 클라우드 에이전트의 수는 터미널, 테스터 창, "에이전트"탭에서 찾을 수 있습니다.

에이전트는 사용 가능합니다. 즉, 로컬 컴퓨터 또는 로컬 네트워크에서받은 자체 로컬 작업을 수행 하느라 바쁘지 않은 경우 유휴 모드입니다 에이전트가 사용 중일 때는 MQL5 클라우드 네트워크에서 작업을 수행하지 않습니다. 로컬 계산을 완료한 후 몇 분 이내에 에이전트는 가장 가까운 MQL5 클라우드 네트워크 노드와 연락하여 서비스를 제공합니다. 따라서 테스트 에이전트는 필요하지 않은 경우에만 네트워크에서 작업합니다. 물론 에이전트는 설정된 일정에 따라 네트워크에서 작동합니다.

설치의 용이성과 MetaTrader 5 Agents Manager의 최소 필수 설정 덕분에 언제든지 수천 개의 테스트 에이전트를 네트워크에서 사용할 수 있습니다. MQL5 Cloud Network 에이전트 및 완료된 작업의 일반 통계는 https://cloud.mql5.com /a1>의 프로젝트 기본 페이지에서 확인할 수 있습니다.


MQL5 클라우드 네트워크 에이전트를 사용하여 분산 컴퓨팅 실행

기존 최적화와 마찬가지로 모든 테스트 옵션과 Expert Advisor의 입력 매개 변수를 설정해야 합니다. 그 전에 터미널 설정에서 MQL5.community 로그인을 지정하고 MQL5 클라우드 네트워크의 사용을 허용하는 것을 잊지 마십시오. 네 가지 필수 단계가 아래 그림에 나와 있습니다.

MQL5 Cloud Network를 사용하여 최적화 실행

"시작" 버튼을 클릭하면 최적화 프로세스가 시작됩니다. 터미널은 다음을 포함하여 테스트 에이전트를위한 작업을 준비합니다.

  • EX5 확장자를 가진 컴파일된 Expert Advisor 파일
  • #property tester_indicator#property tester_library 지시문을 사용하여 활성화된 인디케이터 및 EX5 라이브러리(DLL은 클라우드에서 확실히 허용되지 않습니다)
  • 테스트에 필요한 데이터 파일, #property tester_file 지시문을 사용하여 활성화 됨
  • 테스트/최적화 조건 (금융 상품 이름, 테스트 간격, 시뮬레이션 모드 등)
  • 거래 환경 (기호 속성, 거래 조건 등)
  • 필수 패스의 전체 세트, 즉 작업을 구성하는 Expert Advisor 매개 변수 세트

MetaTrader 5 터미널은 MQL5 클라우드 네트워크의 노드와 통신하고 각 노드에 특정 패스를 수행하기 위한 별도의 작업 패키지를 제공합니다. 각 노드는 작업 및 패스 패키지를 수신 한 다음 연결된 에이전트에 이러한 작업을 배포하기 시작하므로 실제로는 프록시 서버입니다. 이 경우 Expert Advisors, 지표, 라이브러리 및 데이터 파일의 파일은 MQL5 Cloud Network 서버의 하드 드라이브에 저장되지 않습니다.

또한 EX5 파일은 기밀 유지를 위해 클라우드 에이전트의 하드 디스크에 저장되지 않습니다. 데이터 파일은 디스크에 저장되지만 최적화 후에는 데이터 파일이 삭제됩니다.

이것은 클라이언트 터미널과 MQL5 클라우드 네트워크 간의 전체 통신 절차입니다. 실제로는 작업 패킷을 네트워크로 보내고 결과를 기다립니다.


클라우드에서 동기화 및 에이전트에 이력 배포

MQL5 클라우드 네트워크의 각 노드는 필요한 기호의 기록을 유지하고 요청시 연결된 에이전트로 보냅니다. 브로커 ABC의 기호 XYZ 이력이없는 경우 노드는 터미널에서 필요한 이력 데이터를 자동으로 다운로드합니다. 따라서 단말기는 그러한 이야기를 제공 할 준비가 되어 있어야 합니다.

MQL5 클라우드 네트워크로 보내기 전에 컴퓨터에서 전략에 대한 예비 단일 테스트를 실행하는 것이 좋습니다. 이 접근 방식은 거래 서버에서 필요한 모든 내역의 다운로드 및 동기화를 자동으로 제공합니다.

일반적으로 최신 컴퓨터에 4 ~ 8 개의 에이전트가 설치되지만 히스토리 데이터는 MQL5 전략 테스터 Agent 설치 디렉토리의 단일 폴더에 저장됩니다. 하나의 MQL5 전략 테스터 에이전트 관리자가 설치 한 모든 클라우드 에이전트는이 폴더에서 기록을 받습니다. 8 개의 에이전트가 설치되어 있고 MQL5 클라우드 네트워크에서 모두 사용할 수있는 경우 필요한 기록은 한 번만 다운로드됩니다. 이를 통해 트래픽과 하드 디스크 공간을 절약 할 수 있습니다. 또한 분산 컴퓨팅 네트워크의 노드와 클라우드 에이전트 간의 동기화를 수행하는 것이 편리합니다.

따라서 주어진 시간 간격과 주어진 심볼에 대해 거래 전략의 최적화를 수행하는 모든 에이전트는 동일한 동기화 이력 및 시장 환경을 자동으로 제공받습니다.


워밍업

로컬 컴퓨터 최적화에서 최적화는 어떻게 실행 되나요? 코어가 8 개인 경우 일반적으로 8 개의 기본 로컬 에이전트를 사용할 수 있습니다. "시작"을 클릭하면 작업이 로컬 에이전트에 배포되고 필요한 작업이 다운로드 되고 (필요한 경우) 프로세스가 시작됩니다. 이 경우 최적화는 거의 즉시 시작됩니다. 그러나 MQL5 클라우드 네트워크에 작업을 배포하면 절차가 약간 변경됩니다.

클라우드 에이전트는 네트워크 관리자와 영구적으로 연결되지 않으며 모든 이유로 기술적으로 정당하지 않으며 비용이 많이 듭니다. 대신 에이전트는 정기적으로 MQL5 클라우드 네트워크 서버에 새 작업이 있는지 여부를 묻습니다. 이는 필요한 수의 에이전트를 신속하게 동원 할 수 있을 만큼 자주 발생하며, 이러한 메시지로 인해 네트워크 트래픽에 과부하가 걸리지 않도록 충분히 드물게 발생합니다. 따라서 최적화를 실행하면 작업 수행에 연결되는 에이전트 수가 증가하는 것을 확인할 수 있습니다. 클라우드 에이전트가 MQL5 클라우드 네트워크에 액세스하고 특정 패스에 대한 작업을 수신하는 방법에 대한 실시간 프로세스입니다.

작업이 없으면 상담원은 관리자에게 거의 연락하지 않습니다. 그러나 수천 (수만) 개의 작업을 계산하라는 명령이 오면 상황이 바뀝니다. MQL5 클라우드 네트워크의 활동이 증가하고 작업을 완료한 후 새로운 작업을 위한 에이전트의 응용 프로그램 수가 감소한다고 말할 수 있습니다. 예를 들어 유럽에서 작업을 완료한 후 다른 작업에 대한 주문이 아시아에서 오면 네트워크는 빠른 시작을 준비 할 수 있습니다. 이 네트워크 동작을 "워밍업"이라고 부를 수 있습니다.

MQL5 클라우드 네트워크에서 계산 실행

따라서 MQL5 클라우드 네트워크는 가능한 가장 짧은 시간에 작업을 수행하기 위해 새로운 작업을 다시 수락 할 준비가 되었습니다.


MQL5 클라우드 네트워크를 사용하십시오!

"시간은 돈이다"라는 표현은 해가 갈수록 더욱 화제를 불러 일으키며 수십 시간 또는 며칠 동안 중요한 계산을 기다릴 여유가 없습니다. 이 글을 쓰는 시점에서 MQL5 클라우드 네트워크는 수백 배의 계산 증가를 제공합니다. 더 증가하면 시간의 이득이 천 배 이상으로 증가 할 수 있습니다. 또한 분산 컴퓨팅 네트워크를 통해 전략 최적화 작업을 해결할 수 있습니다.

대규모 수학적 계산을 구현하고 많은 CPU 리소스를 필요로 하는 MQL5에서 프로그램을 개발할 수 있습니다. MetaTrader 5 터미널 용 프로그램이 작성된 MQL5 언어는 C++ 에 매우 가깝고 다른 고급 언어로 작성된 알고리즘을 쉽게 번역 할 수 있습니다.

MetaTrader 5 터미널 테스터의 중요한 기능은 대규모 입력 변수 세트가 있는 솔루션을 찾기 위한 어려운 수학 작업이 테스트 에이전트 간에 쉽게 병렬화 된다는 것입니다. 이를 위해 특별한 코드를 작성할 필요가 없습니다. - 분산 컴퓨팅의 MQL5 클라우드 네트워크에 연결하기만하면 됩니다!

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

MQL5에서 자신 만의 그래픽 패널 만들기 MQL5에서 자신 만의 그래픽 패널 만들기
MQL5 프로그램의 유용성은 풍부한 기능과 정교한 그래픽 사용자 인터페이스에 의해 결정됩니다. 빠르고 안정적인 작동보다 시각적인식이 때때로 더 중요합니다. 다음은 표준 라이브러리 클래스를 기반으로 디스플레이 패널을 만드는 방법에 대한 단계별 가이드입니다.
사용자 정의 그래픽 컨트롤. 파트 3. 양식 사용자 정의 그래픽 컨트롤. 파트 3. 양식
이것은 그래픽 컨트롤에 관한 세 가지 글 중 마지막입니다. 주요 그래픽 인터페이스 구성 요소 (양식)의 생성과 다른 컨트롤과 함께 사용하는 방법을 다룹니다. 양식 클래스 외에도 CFrame, CButton, CLabel 클래스가 컨트롤 라이브러리에 추가되었습니다.
객체 지향 프로그래밍의 기초 객체 지향 프로그래밍의 기초
객체 지향 프로그래밍 (OOP)을 사용하기 위해 다형성, 캡슐화 등이 무엇인지 알 필요가 없습니다. 단순히 이러한 기능을 사용할 수 있습니다. 이 글에서는 실습 예제를 통해 OOP의 기본 사항을 다룹니다.
사용자 정의 그래픽 컨트롤. 파트 2. 컨트롤 라이브러리 사용자 정의 그래픽 컨트롤. 파트 2. 컨트롤 라이브러리
"Custom Graphical Controls"시리즈의 두 번째 글에서는 프로그램 (Expert Advisor, 스크립트, 인디케이터)과 사용자 간의 상호 작용에서 발생하는 주요 문제를 처리하기 위한 컨트롤 라이브러리를 소개합니다. 라이브러리에는 수많은 클래스 (CInputBox, CSpinInputBox, CCheckBox, CRadioGroup, CVSсrollBar, CHSсrollBar, CList, CListMS, CComBox, CHMenu, CVMenu, CHProgress, CDialer, CDialerInputBox, CTable) 및 사용 예제가 포함되어 있습니다.