English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
MetaTrader 5 터미널의 Strategy Tester 내 틱 생성 알고리즘

MetaTrader 5 터미널의 Strategy Tester 내 틱 생성 알고리즘

MetaTrader 5테스터 | 2 9월 2021, 16:35
113 0
MetaQuotes
MetaQuotes


Expert Advisors 만들기 - MQL5의 자동화된 거래 시스템

MetaTrader 5 터미널에는 사람의 개입 없이 거래를 수행할 수 있는 완전 자동화된 전략(거래 로봇) 개발을 위한 통합 개발 환경이 포함되어 있습니다. 이러한 거래 로봇의 또 다른 이름은 Expert Advisors입니다. MetaTrader 5 터미널에 대한 Expert Advisors 및 기술 지표는 최신 프로그래밍 언어의 모든 장점을 포함하는 MQL5 언어를 사용하여 작성되었습니다.

  • 실행 속도;
  • 객체 지향 프로그래밍(OOP) 지원;
  • 디버깅 능력.

MQL5에서 프로그램을 디버깅하는 기능을 사용하면 가능한 최대 보안 수준으로 코드를 생성할 수 있지만, 이것이 필요하긴 하지만 수익성 있는 거래 시스템 개발에 필요한 유일한 조건은 아닙니다. 오랜 기간 동안의 과거 데이터에서 긍정적인 결과를 보여줄 수 있는 거래 시스템을 로버스트(robust)라고 합니다.


거래 전략 테스트

귀하의 자본을 Expert Advisor에게 맡기기 전에 자금 관리 규칙뿐만 아니라 포지션 개설 및 마감에 대한 규칙이 이익 기대치를 허용하는지 확인해야 합니다. 이를 테스트하는 가장 간단한 방법은 사용 가능한 기록 데이터를 사용하여 Advisor의 작업을 시뮬레이션하는 것입니다.

MetaTrader 5 클라이언트 터미널에는 기록 데이터에 대한 Advisor의 작업 결과를 얻기 위한 전략 테스터인 특수 통합 구성 요소가 있습니다. 날짜 간격으로 Expert Advisor를 한 번 실행하는 프로세스를 Expert Advisor 테스트라고 합니다. 이 일회성 테스트는 Expert Advisor의 견고성에 대한 결론을 도출하는 데 필요한 많은 양의 유용한 정보를 제공합니다.

그러나 이러한 결과를 신뢰할 수 있으려면 테스트 프로세스가 Expert Advisor가 실행되는 실제 현재 환경을 최대한 가깝게 모델링해야 합니다. MetaTrader 5 테스터는 거래 작업이 발생하는 각 상품에 대한 스프레드의 과거 값을 사용하여 가격의 틱 모델링에 의한 틱을 사용합니다.


전략 테스터에 대한 약간의 역사


MetaTrader 3

첫 번째 전략 테스터는 MetaTrader 3 터미널에 처음 등장했습니다. 이것은 현대 표준에 따르면 비교적 간단한 테스터였습니다. 바에서 세 가지 가격 개발 모델을 기반으로 테스트를 수행했습니다.
  • 4가지 가격 모델 - 가격은 강세 캔들스틱의 경우 시가, 저가, 고가 및 종가 단계를 연속적으로 거치고 약세 캔들스틱의 경우 시가, 고가, 저가 및 종가를 거쳤습니다.
  • "1점마다" 모델 - 가격이 연속적으로 3파동, 5파동, 다른 3파동을 거쳐 1포인트씩 증가하는 웨이브 모델 3-5-3을 사용합니다.
  • 모델 "Spread / 2" - "1점마다"와 동일한 모델을 사용하지만 가격 증분은 사용자가 표시하는 스프레드의 절반입니다.

가격 모델링은 항상 테스트된 기간의 바를 기반으로 했으며 더 낮은 기간의 정보는 사용되지 않았습니다. MetaTrader 3 단말의 테스터는 느린 테스팅 속도, 낮은 정확도, 입력 매개변수에 의한 Expert Advisor 최적화 부족 등 많은 단점이 있었습니다.

MetaTrader 4

MetaTrader 4 터미널은 세 번째 터미널을 대체하고 새로운 컴파일 언어 MQL4 (이전 MQL-II가 해석됨)를 포함했을 뿐만 아니라 테스트에 대한 완전히 새로운 접근 방식을 취했습니다. 이제 테스트는 세 가지 모드로 수행할 수 있습니다.

  • 모든 틱(Every Tick) - 캔들 내의 틱 생성을 통해 테스트 환경 내에서 Expert Advisor의 작업을 실제 거래에 최대한 가깝게 모델링할 수 있습니다.
  • 체크포인트(제어 포인트) - 정확성과 테스트 속도 간의 절충안;
  • 공개 가격(공개 가격) - Expert Advisor의 출시는 캔들스틱이 시작될 때만 이루어지므로 전략을 매우 빠르게 평가할 수 있습니다.

세 번째 단말의 테스터와 중요한 차이점은 MetaTrader 4 단말의 테스팅 전략이 거래 시뮬레이션을 위해 사용 가능한 가장 어린 시간대의 가격 데이터를 사용했다는 것입니다. 따라서 분 이력이 있으면 테스트 간격 전체에 걸쳐 테스트 결과가 온라인에서 얻은 결과에 최대한 가깝습니다. 기본 시간 프레임이 없는 경우 MetaTrader 3의 테스터 터미널에서와 동일한 방식으로 바 내 가격 전개 시뮬레이션이 생성됩니다.

또한 유전 알고리즘을 사용함과 동시에 입력 매개변수를 직접 열거하여 최적화를 수행할 수 있는 기회를 얻었습니다. 이는 특히 입력 매개변수가 많은 전략의 경우 최적화 프로세스를 크게 가속화할 수 있는 기회를 제공했습니다. 이제 시각 영역에서 실제 테스트를 수행할 수 있습니다. 이것은 거래자들이 높이 평가한 거대한 단계였습니다.

5세대의 새로운 MetaTrader 터미널은 이전 터미널의 설계에서 얻은 경험을 기반으로 하며 이는 전략 테스터에 적용됩니다. 이제 다중 통화 전략, 즉 여러 상품에서 동시에 거래되는 전략을 테스트할 기회가 있습니다.

이제 사용 가능한 모든 프로세서 코어뿐만 아니라 LAN 및 글로벌 인터넷 네트워크의 다른 컴퓨터에 있는 원격 에이전트에서도 전략 최적화를 수행할 수 있습니다. 이를 통해 테스터의 기능을 강화하고 이전에는 액세스할 수 없었던 클라우드 계산을 MQL5 언어로 직접 수행할 수 있습니다.

그러나 MetaTrader 5 터미널의 테스트 프로세스에 대한 기본적인 이해를 위해서는 전략 테스터에서 가격 모델링이 어떻게 발생하는지 이해할 수 있어야 합니다.


틱 생성 알고리즘

MetaTrader 5 터미널의 Strategy Tester는 테스트에서 단 하나의 가격 모델링 모드를 사용합니다. 즉, 사용된 기호의 분 시간 프레임에 대한 기존 기록 데이터를 기반으로 하는 틱 생성입니다. MetaTrader 4의 나머지 시뮬레이션 모드는 고속에도 불구하고 높은 테스트 정확도를 제공하지 못하여 제거되었습니다.

테스터에서 M1 시간 프레임을 사용하면 시니어 시간 프레임을 기반으로 하는 틱 시뮬레이션과 달리 최소한의 오류로 가격 움직임을 매우 정확하게 시뮬레이션할 수 있습니다. 결과적으로 MetaTrader 5 전략 테스터에서 가격 모델링의 오류는 사소하고 시뮬레이션 가격과 실제 발생한 가격의 차이는 분 바 범위 내에서만 가능합니다.

이 접근 방식에서 로컬 및 원격 에이전트에 대한 최적화를 수행하는 기능은 테스트 시간 증가를 보상할 수 있습니다. 틱 생성은 정수 형식의 캐시된 분 항목을 기반으로 합니다. 따라서 틱의 생성은 매우 빠르게 이루어집니다.

필요한 모든 시간 프레임의 바는 생성된 틱 수신과 함께 일반적인 방식(클라이언트 터미널에서와 같이)으로 테스터의 이력 데이터베이스에 형성됩니다. 분 바 틱 볼륨 1은 생성되지 않습니다. 즉, 닫기 (Close) 값으로 쓸 수 있습니다.


2개의 틱이 있는 바도 생성되지 않습니다. 먼저 틱 값이 열기로 기록된 다음 값이 닫기 인 틱이 기록됩니다.

          



3개의 틱이 있는 바는 계획에 따라 생성되며 3개의 틱 바의 경우 바 개발 패턴이 4개뿐입니다.
  1. 한 방향으로 갔다가 열림 (Open) 수준으로 돌아갔습니다.




  2. 한쪽으로 갔다가 후퇴하여 열림 (Open) 수준에 도달했습니다.




  3. 한 방향으로 갔다가 후퇴했지만 열림 (Open) 수준에 도달하지 못했습니다.




  4. 한 방향으로 여러 점




지지점

바에 3개 이상의 틱이 있으면 먼저 지지점이 생성됩니다. 지지점의 수는 틱의 부피보다 클 수 없습니다. 시작가는 시작점이기 때문에 지지점 수 계산에 포함되지 않습니다. 최대 지원 포인트 수 - 11.

지지점은 시작 그림자, 캔들스틱의 크기 및 닫는 캔들스틱 그림자 사이에 분포됩니다. 


틱 수에 따른 지지점 분포는 다음과 같습니다(그림자 열기 - 캔들스틱 범위 - 그림자 닫기).

3 - 5 - 3
2 - 6 - 2
2 - 5 - 2
2 - 4 - 2
2 - 3 - 2
1 - 4 - 1
1 - 3 - 1
1 - 2 - 1
1 - 1 - 1
캔들스틱에 그림자 중 하나가 없으면 이 그림자의 지지점이 캔들스틱의 크기로 지정됩니다.



캔들스틱의 범위는 홀수개의 지지점에 의해 생성됩니다. 스코프에 짝수개의 지지점이 있는 경우 그림자에 이미 2개의 점이 있는 조건에서 그림자 중 하나에 "추가" 점이 제공됩니다. 그렇지 않으면 "추가" 지점이 단순히 사라집니다.

지지점의 가치는 지지점의 가격과 캔들스틱의 시가의 차이를 나타냅니다. 황소(백색) 캔들스틱에 대한 이상적인 지지점 분포(3-5-3)는 다음과 같습니다.





곰(검은색) 캔들스틱의 경우 3-5-3 패턴의 지지점 생성은 유사합니다.




캔들스틱이 doji인 경우, 즉 Close == Open이면 이전 캔들스틱이 분석되고 이전 캔들스틱이 상승 중이었다면 이 doji는 캔들스틱 하향 캔들스틱으로 간주됩니다.



3개의 지지점과 정수값 3/4를 사용하여 그림자를 생성하면 그림자의 크기와 그림자의 크기가 1/2로 동일합니다(이는 열림 의 차이가 있을 때 발생합니다. 낮음 또는 열림 높음 이 2포인트보다 크지 않은 경우 그림자 생성은 다음과 같이 변경됩니다.

 

두 개의 지지점에 의해 그림자가 생성되는 경우 제어점은 다음과 같이 정렬됩니다.





닫는 그림자도 비슷한 방식으로 생성됩니다.


Low에서 High로 지지점 기반 형성

캔들스틱의 범위는 Impulse 파동에 의해 생성되며 파동 수는 다음과 같이 계산됩니다.

number of waves = (number of support points in the scope + 1) / 2.

예를 들어, 캔들스틱 범위의 지지점 수가 5이면(그림 3-5-3) 3개의 파동이 생성됩니다 = (5 +1) / 2.

각 Impulse 파동은 다음 공식으로 계산되는 포인트 단위의 길이 단계 를 갖습니다.

step=(High-Low-1)/(quantity of waves)+1

예를 들어, 캔들스틱의 범위(높음 - 낮음) = (1.3113 - 1.3100) = 0.0013은 13포인트이고 파장 단계 = (13-1) / 3 +1 = 5포인트입니다.

Impulse 단계 후에 포인트는 1포인트만큼 롤백되어야 합니다. 추가로 사이클에서 지지점의 위치가 계산됩니다(강세 촛불의 경우).

prev=low
cycle
  n1=prev+step
  n2=prev+step-1
  prev=n2


어디:

  • n1 - 지원의 첫 번째 Impulse 지점
  • n2 - 두 번째 지원 지점 - 롤백 지점.

이 알고리즘을 3-5-3 방식의 황소 촛불에 적용해 보겠습니다. 여기서 파도의 수는 3이고 단계는 5포인트, 포인트는 0.0001입니다.

  1. 첫 번째 단계. 변수 이전 = 낮음 = 1.3100, 주기를 입력합니다.
  2. 첫 번째 웨이브에 대한 데이터 계산
    • 점 n1 = prev + step = 1.3100 + 5 * 0.0001 = 1.3105의 위치를 ​​계산합니다.
    • 점 n2 = prev + step-1 = 1.3100 + 5 * 0.0001-1 * 0.0001 = 1.3104의 위치를 ​​계산합니다.
    • 값 n2: prev = 1.3104를 prev 변수에 할당합니다.
  3. 두 번째 웨이브에 대한 데이터 계산
    • 점 n1 = prev + step = 1.3104 + 5 * 0.0001 = 1.3109의 위치를 ​​계산합니다.
    • 포인트 n2 = prev + step-1 + 5 = 1.3104 * 0.0001-1 * 0.0001 = 1.3108의 위치를 ​​계산합니다.
    • n2: prev=1.3108 값을 prev 변수에 할당합니다.
  4. 세 번째 물결에 대한 데이터 계산
    • 포인트 n1 = prev + step = 1.3108 + 5 * 0.0001 = 1.3113의 위치를 ​​계산합니다.
    • 주기 종료, 이전 = n2 = 1.3112

위의 모든 것은 그림에서 명확성을 위해 시연됩니다.


곰 캔들스틱에 대한 지지점 계산은 같은 방식으로 수행됩니다.

prev=high
cycle
  n1=prev-step
  n2=prev-step+1
  prev=n2


틱 생성은 지지점을 기준으로 수행됩니다.

지지점 사이의 중간 틱은 다음 규칙에 따라 생성됩니다.
  • 틱 수가 지지점 사이의 점 수보다 크면 "톱"이 생성됩니다.
  • 지지점 사이에 점이 여러 개 있으면 선형 틱 시퀀스가 ​​생성됩니다.


틱 시퀀스 확인

결론적으로 2010년 5월 13일 13시부터 13시 30분까지 MetaQuotes-Demo 서버에서 기록된 틱 이력과 테스터가 MetaTrader 5 클라이언트 단말에서 생성한 틱 시퀀스를 비교해봅시다. Expert Advisor는 에이전트 로그에 틱을 기록하는 데 사용되었습니다.

//+------------------------------------------------------------------+
//|                                                  Write_Ticks.mq5 |
//|              Copyright Copyright 2010, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+

input datetime start=D'2010.05.13 13:00:00';
input datetime end=D'2010.05.13 14:00:00';

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlTick tick;
   datetime time=TimeCurrent();
//---
   SymbolInfoTick(Symbol(),tick);
   Print(time,tick.bid);
//---
   if(time>end) ExpertRemove();
//---
  }

틱의 이력은 틱 지표 만들기 문서에 설명된 지표를 사용하여 온라인으로 수집되었습니다.

두 틱 시퀀스(테스터의 틱 시퀀스와 파일에 저장된 틱 시퀀스)가 차트에 표시됩니다. 테스트 중 획득한 틱은 녹색으로 표시되며, 거래 서버 MetaQuotes-Demo에서 획득하여 파일 지표에 기록된 틱은 파란색으로 표시됩니다.


그래프의 아무 지점이나 가리키고 팝업 창에서 각 틱에 대한 정보를 읽을 수 있습니다.

  • 출처(테스터 또는 기록);
  • 틱 시간;
  • 틱의 가격.

그래프는 테스터 MetaTrader 5 클라이언트 터미널의 시뮬레이션 틱 품질이 과거 데이터에 대한 Expert Advisors의 적절한 테스트를 허용한다는 것을 분명히 보여줍니다.

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

MetaTrader 5에서 MetaTrader 4로 거래를 복제하는 방법 MetaTrader 5에서 MetaTrader 4로 거래를 복제하는 방법
오늘 실제 MetaTrader 5 계정에서 거래를 할 수 있나요? 그러한 거래를 조직하는 방법은 무엇입니까? 이 글에서는 이러한 질문에 대한 이론과 MetaTrader 5 터미널에서 MetaTrader 4로 거래를 복제하는 데 사용되는 작업 코드가 포함되어 있습니다. 이 글은 Expert Advisors 개발자와 트레이더 실무자 모두에게 유용할 것입니다.
MetaTrader 5의 주문, 포지션 및 거래 MetaTrader 5의 주문, 포지션 및 거래
강력한 거래 로봇을 만드는 것은 MetaTrader 5 거래 시스템의 메커니즘에 대한 이해 없이는 수행할 수 없습니다. 클라이언트 터미널은 거래 서버로부터 포지션, 주문 및 거래에 대한 정보를 수신합니다. MQL5를 사용하여 이 데이터를 올바르게 처리하려면 MQL5 프로그램과 클라이언트 터미널 간의 상호 작용을 잘 이해해야 합니다.
차트에서 거래 아이디어의 빠른 테스트 차트에서 거래 아이디어의 빠른 테스트
이 글은 거래 아이디어를 시각적으로 빠르게 테스트하는 방법을 설명합니다. 이 방법은 가격 차트, 신호 지표 및 잔액 계산 지표의 조합을 기반으로 합니다. 거래 아이디어를 검색하는 방법과 이러한 아이디어를 빠르게 테스트하는 데 사용하는 방법을 공유하고 싶습니다.
MQL5의 Expert Advisor 테스트 및 최적화 가이드 MQL5의 Expert Advisor 테스트 및 최적화 가이드
이 문서에서는 코드 오류를 식별하고 해결하는 단계별 프로세스와 Expert Advisor 입력 매개변수를 테스트하고 최적화하는 단계를 설명합니다. MetaTrader 5 클라이언트 터미널의 Strategy Tester를 사용하여 Expert Advisor에 가장 적합한 기호와 입력 매개변수 세트를 찾는 방법을 배우게 됩니다.