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

실시간 최적화 결과의 시각화 - MetaTrader 5용 expert

조회수:
360
평가:
(48)
게시됨:
2022.02.11 09:50
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동

MetaTrader 5 전략 테스터는 각각의 테스트 후에 트레이딩 시스템의 통계적인 매개변수를 얻을 수 있습니다.

다음을 사용하여 통계적인 매개변수를 얻을 수 있습니다. OnTester() 그리고OnDeinit() 함수 내부에서 호출되는 TesterStatistics() 함수.

최적화 결과 작업을 위한 함수를 통해(FrameFirst(), FrameFilter(), FrameNext(), FrameInputs() and FrameAdd()) 시각적 최적화를 수행할 수 있습니다. 이제 Expert Advisor 최적화 중이나 수학적인 문제를 해결하는 동안에 필요한 데이터를 처리하고 바로 표시할 수 있습니다.

"MetaTrader 5 테스터에서 전략 시각화" 기사에 설명된 최적화 중 Expert Advisor 테스트 결과 시각화와 관련한 예에 대한 세부 정보를 살펴볼 것입니다.


1. 최적화 중 균형 역학의 시각화

1.1. 파일 다운로드

Moving Averages_With_Frames.mq5 Expert Advisor는 terminal_data_folder\MQL5\Experts에 복사해야 합니다.

Expert Advisor 작업에는 다음 파일이 사용됩니다.
  1. FrameGenerator.mqh - 최적화 결과를 표시하기 위한 CFrameGenerator 클래스.
  2. SpecialChart.mqh - 잔액 잔고 차트를 그리기 위한 CSpecialChart 클래스.
  3. SimpleTable.mqh - CSimpleTable 클래스는 두 개의 열이 있는 간단한 테이블입니다.
  4. ColorProgressBar.mqh - CСolorProgressBar 클래스는 두 가지 색상을 사용하는 진행률 표시줄입니다.

이들은 terminal_data_folder\MQL5\Include에 복사해야 합니다.

Code Base 프로그램은 MetaTrader 5 터미널("Toolbox" 창의 CodeBase 탭)을 통해 자동으로 다운로드할 수 있습니다. 이렇게 하려면 "다운로드"를 선택하십시오. 모든 코드가 다운로드되어 폴더에 저장됩니다.

그림. 1. MetaTrader 5 터미널을 통해 CodeBase 프로그램 다운로드

그림. 1. MetaTrader 5 터미널을 통해 CodeBase 프로그램 다운로드


1.2. Expert Advisor 테스팅

Moving Averages_With_Frames.mq5 Expert Advisor는 전략 테스터에서 시작되어야 합니다.

테스트 세팅:

Moving Averages_With_Frames.mq5 테스트 설정

그림 2. Moving Averages_With_Frames.mq5 테스트 설정

최적화 옵션:

Moving Averages_With_Frames.mq5 최적화 매개변수

그림 3. Moving Averages_With_Frames.mq5 테스트 설정


최적화 중에 Expert Advisor는 잔고의 증감 및 최적화를 통과하는 통계 데이터를 표시합니다.

Fig. 4. Moving Averages_With_Frames.mq5 최적화

Fig. 4. Moving Averages_With_Frames.mq5 최적화

최적화 과정:




1.3. Expert Advisor 작동 원칙

Moving Averages_With_Frames.mq5 Expert Advisor는 표준 MetaTrader 5 터미널 패키지(MQL5\Experts\Examples\Moving Average)에 포함된 Moving Averages.mq5를 기반으로 생성됩니다.

결과를 시각화 하기 위해 다음의 코드가 추가되었습니다.
//--- connecting the code for working with optimization results
#include <FrameGenerator.mqh>
//--- frames generator
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Tester function                                                  |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- insert your optimization criterion calculation function here
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- invoking after each test and submitting optimization criterion as a parameter
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| TesterInit function                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- preparing the chart for displaying several balance lines
   fg.OnTesterInit(3); // parameter sets the number of balance lines on the chart
  }
//+------------------------------------------------------------------+
//| TesterPass function                                              |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
//--- handling obtained test results and displaying graphics
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| TesterDeinit function                                            |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- optimization end
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//|  Chart events handling                                           |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//--- launches frames display after the optimization end when clicking on the header
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 is a pause in ms between the shots
  }
//+------------------------------------------------------------------+

이 코드는 모든 Expert Advisor에서 유사하게 사용할 수 있습니다.

CFrameGenerator 클래스는 최적화 결과를 사용하는데 사용됩니다. 이 클래스에는 전략 테스터 이벤트를 처리하기 위한 메서드(OnTester(), OnTesterInit(), OnTesterPass(), OnTesterDeinit())와 차트 이벤트용 메서드(OnChartEvent())가 포합되어 있습니다. 사용된 그래픽 객체는 CFrameGenerator 클래스의 OnTesterInit() 메소드에 준비되어 있습니다.

CFrameGenerator 클래스의 OnTester() 메서드는 각각의 테스트를 통과한 후 테스트 에이전트에서 호출됩니다. 이 방법은 거래 결과를 기반으로 동적인 수익선을 계산합니다. 수익선 차트는 수행된 거래 수에 따라 길이가 달라지는 1차원 배열입니다.

이후 TesterStatistics() 함수는 통계 데이터(순이익, 이익 계수, 회복 계수, 거래 수, 거래 수, 최대의 손실 비율, 사용자 정의 최적화 기준 값)를 요청하는 데 사용되며 프레임(우리의 경우 테스트 통과 데이터 배열)이 생성되고 이는 FrameAdd() 함수를 사용하여 (테스트 에이전트에서) 터미널로 전송됩니다.

프레임은 CFrameGenerator 클래스의 OnTesterPass() 메서드에서 수신되고 처리됩니다. 프레임 읽기 작업은 FrameNext() 함수로 수행됩니다. 프레임이 생성된 Expert Advisor 입력 매개변수에 대한 요청은 FrameInputs() 기능을 사용하여 수행됩니다.

데이터를 얻은 후에는 CSimpleTable, CColorProgressBar 및 CSpecialChart 클래스 메서드를 사용하여 데이터를 표시하고 업데이트합니다.

다른 최적화 단계가 완료된 이후 테스트 에이전트에서 OnTester() 처리 기능 실행이 수행된다는 점에 유의해야 합니다. 이것은 복잡한 수학적 계산을 수행하기 위해 MQL5 클라우드 네트워크 분산 네트워크를 사용하도록 합니다. 이렇게 하려면 계산 부분을 OnTester 이벤트 핸들러에 배치합니다.

수학적 계산을 가속화하기 위해 최적화를 사용하는 예는 (연속 웨이블릿 변환Weierstrass function) "최적화 프로세스를 실시간으로 관리하고 에이전트에서 MetaTrader 5로 대용량 데이터 전송"에서 찾아 볼 수 있습니다.


2. CSimpleTable, CColorProgressBar 및 CSpecialChart 클래스 작업의 예

첨부된 Test_SimpleTable.mq5 및 Test_CSpecialChart.mq5 스크립트에는 CSimpleTable, CColorProgressBar 및 CSpecialChart 클래스로 작업하는 예가 포함되어 있습니다. terminal_data_folder\MQL5\Scripts에 복사되어야 합니다.

Fig. 5. Test_SimpleTable.mq5 스크립트 실행 결과

Fig. 5. Test_SimpleTable.mq5 스크립트 실행 결과

Fig. 6. Test_CSpecialChart.mq5 스크립트 실행 결과

Fig. 6. Test_CSpecialChart.mq5 스크립트 실행 결과


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

RatesCompressor RatesCompressor

Rates Version of a script https://www.mql5.com/en/code/30791

High Low Lines High Low Lines

Add High and Low lines based on number of previous bars defined in input field

IndicatorParameters() 사용 예 IndicatorParameters() 사용 예

이 Expert Advisor는 IndicatorParameters() 함수를 사용하여 입력 매개변수의 수, 유형 및 값에 대한 정보를 얻는 방법을 보여줍니다.

ALGLIB - 수치 분석 라이브러리 ALGLIB - 수치 분석 라이브러리

ALGLIB 수학 함수 라이브러리(v. 3.19) MQL5로 포트되었습니다.