MetaTrader 5 전략 테스터의 테스트 결과 분석 및 최적화

Anatoli Kazharski  

하나 및 여러 문자에 대한 테스트 결과를 고려하십시오. 모든 틱 모드에서 테스트를 수행합니다. 다중 기호 Expert Advisor 구성표를 사용하여 문제를 재현하고 결과를 공유할 수 있습니다.

문제를 정의합시다. 예를 들어, 하나의 문자를 테스트할 때 테스트 시간은 1분입니다. 다른 캐릭터를 추가할 때 테스트 시간은 예상대로 이미 2분이 아닌 4분입니다. 하나의 기호(총 3개)를 더 추가하면 하나의 기호에 대한 테스트 시간이 이미 8배 증가하는 식입니다.

테스트에 소요된 시간이 예상 시간과 일치하지 않는 이유를 알아보겠습니다. 이유 중 하나는 계정 기록에 대한 잘못된 작업일 수 있습니다. 전체 기록을 요청하면 기록이 커지면 테스트 시간이 크게 느려질 수 있습니다. 이 경우 테스트 시작 시 소요된 시간은 테스트 종료 시 소요된 시간과 크게 다릅니다. 이것은 하나의 테스트에서 많은 트랜잭션(수만)이 있을 때 매우 두드러집니다.

위에서 설명한 경우에 대해 모든 것이 올바르게 수행되면 결과는 아래 표와 같습니다. 테스트 시작 시간은 고정되어 있습니다( 2017.01.01 ). 그런 다음 각 테스트에 대해 기간을 한 달씩 늘립니다. 현재 결과와 이전 결과(열 차이 ) 간의 차이는 거의 동일합니다. 계정 내역 의 거래 수에 의존하지 않습니다.

테스트는 지표가 작동하는 Expert Advisor를 사용하여 조건을 확인하기 위해 막대 및 지표 데이터를 요청하고 거래 작업을 수행합니다.

 2018.01 . 27 18 : 10 : 50.318 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.031 . Test passed in 0 : 00 : 36.641 (including ticks preprocessing 0 : 00 : 01.297 ).
2018.01 . 27 18 : 10 : 50.318 Core 1   EURUSD,M5: total time from login to stop testing 0 : 00 : 36.672 (including 0 : 00 : 00.031 for history data synchronization)
2018.01 . 27 18 : 10 : 50.318 Core 1    891 Mb memory used including 8 Mb of history data, 512 Mb of tick data

이 경우 총 테스트 시간은 37초입니다. 두 글자 사용 시 예상 테스트 시간 37초. x 2 = 1분 14초 그리고 3인 37초. x 3 = 1분 51초

두 문자에 대한 테스트 결과입니다. 총 테스트 시간 2분 16초


 2018.01 . 27 18 : 13 : 49.957 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.031 . Test passed in 0 : 02 : 16.125 (including ticks preprocessing 0 : 00 : 01.344 ).
2018.01 . 27 18 : 13 : 49.957 Core 1   EURUSD,M5: total time from login to stop testing 0 : 02 : 16.156 (including 0 : 00 : 00.046 for history data synchronization)
2018.01 . 27 18 : 13 : 49.957 Core 1    53911219 total ticks for all symbols
2018.01 . 27 18 : 13 : 49.957 Core 1   EURUSD: passed to tester 26169180 ticks
2018.01 . 27 18 : 13 : 49.957 Core 1   GBPUSD: generate 27742039 ticks in 0 : 00 : 01.344 , passed to tester 27742039 ticks
2018.01 . 27 18 : 13 : 49.957 Core 1    1497 Mb memory used including 17 Mb of history data, 1024 Mb of tick data

세 문자에 대한 테스트 결과입니다. 총 테스트 시간 5분 22초


 2018.01 . 27 18 : 20 : 07.658 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.062 . Test passed in 0 : 05 : 22.360 (including ticks preprocessing 0 : 00 : 03.547 ).
2018.01 . 27 18 : 20 : 07.658 Core 1   EURUSD,M5: total time from login to stop testing 0 : 05 : 22.422 (including 0 : 00 : 00.062 for history data synchronization)
2018.01 . 27 18 : 20 : 07.658 Core 1    86509916 total ticks for all symbols
2018.01 . 27 18 : 20 : 07.658 Core 1   EURUSD: passed to tester 26169180 ticks
2018.01 . 27 18 : 20 : 07.658 Core 1   GBPUSD: passed to tester 27742039 ticks
2018.01 . 27 18 : 20 : 07.658 Core 1   USDJPY: generate 32598697 ticks in 0 : 00 : 03.547 , passed to tester 32598697 ticks
2018.01 . 27 18 : 20 : 07.658 Core 1    2090 Mb memory used including 26 Mb of history data, 1472 Mb of cached tick data (total memory for tick data 1663 Mb)


Anatoli Kazharski  

이제 거래 작업 이 테스트 기간에 영향을 미치는지 여부와 어느 정도인지 알아 보겠습니다. EA에서 조건을 확인하고 거래를 체결하기 위한 블록을 완전히 비활성화하고 하나 및 여러 기호에 대해 일련의 테스트를 다시 실행해 보겠습니다. 표시기 핸들의 수신과 막대 및 표시기의 데이터 요청은 그대로 두도록 합시다.

1개의 문자를 테스트할 때 데이터 연도( 2017.01.01 - 2018.01.01 )에 대해 이전 테스트보다 테스트 기간이 13초 감소했습니다. 두 글자 사용 시 예상 테스트 시간 24초. x 2 = 48초 그리고 3명의 캐릭터에 대해 24초. x 3 = 1분 12초


 2018.01 . 27 16 : 20 : 50.271 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.047 . Test passed in 0 : 00 : 23.640 .
2018.01 . 27 16 : 20 : 50.271 Core 1   EURUSD,M5: total time from login to stop testing 0 : 00 : 23.687 (including 0 : 00 : 00.047 for history data synchronization)
2018.01 . 27 16 : 20 : 50.271 Core 1    823 Mb memory used including 8 Mb of history data, 512 Mb of tick data

2개의 심볼을 테스트한 결과 데이터 연도( 2017.01.01~2018.01.01 )에 대한 이전 테스트보다 테스트 기간이 31초 단축되었습니다.


 2018.01 . 27 16 : 24 : 23.759 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.047 . Test passed in 0 : 01 : 44.469 (including ticks preprocessing 0 : 00 : 01.422 ).
2018.01 . 27 16 : 24 : 23.759 Core 1   EURUSD,M5: total time from login to stop testing 0 : 01 : 44.516 (including 0 : 00 : 00.047 for history data synchronization)
2018.01 . 27 16 : 24 : 23.759 Core 1    53911219 total ticks for all symbols
2018.01 . 27 16 : 24 : 23.759 Core 1   EURUSD: passed to tester 26169180 ticks
2018.01 . 27 16 : 24 : 23.759 Core 1   GBPUSD: generate 27742039 ticks in 0 : 00 : 01.422 , passed to tester 27742039 ticks
2018.01 . 27 16 : 24 : 23.759 Core 1    1409 Mb memory used including 17 Mb of history data, 1024 Mb of tick data

3명의 캐릭터를 테스트할 때 테스트 시간이 1분 감소했습니다. 7초 데이터 연도( 2017.01.01 – 2018.01.01 )에 대한 이전 테스트와 비교합니다.


 2018.01 . 27 16 : 30 : 07.790 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.062 . Test passed in 0 : 04 : 21.141 (including ticks preprocessing 0 : 00 : 04.312 ).
2018.01 . 27 16 : 30 : 07.790 Core 1   EURUSD,M5: total time from login to stop testing 0 : 04 : 21.203 (including 0 : 00 : 00.062 for history data synchronization)
2018.01 . 27 16 : 30 : 07.790 Core 1    86509916 total ticks for all symbols
2018.01 . 27 16 : 30 : 07.790 Core 1   EURUSD: passed to tester 26169180 ticks
2018.01 . 27 16 : 30 : 07.790 Core 1   GBPUSD: passed to tester 27742039 ticks
2018.01 . 27 16 : 30 : 07.790 Core 1   USDJPY: generate 32598697 ticks in 0 : 00 : 04.312 , passed to tester 32598697 ticks
2018.01 . 27 16 : 30 : 07.790 Core 1    1863 Mb memory used including 26 Mb of history data, 1408 Mb of cached tick data (total memory for tick data 1663 Mb)

//---

이 시리즈에서도 예상 테스트 시간이 충족되지 않습니다.

Anatoli Kazharski  

이제 표시기 핸들을 수신하고 데이터를 요청하는 블록을 비활성화해 보겠습니다. 사실, 지금은 새로운 막대 가 형성되는 경우에 대해 하나의 조건만 확인하는 더미 Expert Advisor에 불과합니다.

1개의 문자를 테스트할 때 데이터의 연도( 2017.01.01 - 2018.01.01 )에 대해 이전 테스트보다 테스트 기간이 8초 감소했습니다. 두 글자 사용 시 예상 테스트 시간 16초. x 2 = 32초 3자 16초 x 3 = 48초 4자 16초 x 4 = 1분 4초


 2018.01 . 27 17 : 49 : 39.855 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.062 . Test passed in 0 : 00 : 16.438 (including ticks preprocessing 0 : 00 : 01.281 ).
2018.01 . 27 17 : 49 : 39.855 Core 1   EURUSD,M5: total time from login to stop testing 0 : 00 : 16.500 (including 0 : 00 : 00.062 for history data synchronization)
2018.01 . 27 17 : 49 : 39.855 Core 1    787 Mb memory used including 8 Mb of history data, 512 Mb of tick data

2개의 문자를 테스트할 때 데이터 연도( 2017.01.01 - 2018.01.01 )에 대해 이전 테스트보다 테스트 기간이 40초 감소했습니다.


 2018.01 . 27 17 : 51 : 35.343 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.032 . Test passed in 0 : 01 : 04.593 (including ticks preprocessing 0 : 00 : 01.359 ).
2018.01 . 27 17 : 51 : 35.343 Core 1   EURUSD,M5: total time from login to stop testing 0 : 01 : 04.625 (including 0 : 00 : 00.048 for history data synchronization)
2018.01 . 27 17 : 51 : 35.343 Core 1    53911219 total ticks for all symbols
2018.01 . 27 17 : 51 : 35.343 Core 1   EURUSD: passed to tester 26169180 ticks
2018.01 . 27 17 : 51 : 35.343 Core 1   GBPUSD: generate 27742039 ticks in 0 : 00 : 01.359 , passed to tester 27742039 ticks
2018.01 . 27 17 : 51 : 35.343 Core 1    1336 Mb memory used including 17 Mb of history data, 1024 Mb of tick data

3자 테스트 시 기존 데이터 연도( 2017.01.01~2018.01.01 ) 테스트 대비 테스트 시간이 1분 38초 단축됐다.


 2018.01 . 27 17 : 55 : 00.938 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.047 . Test passed in 0 : 02 : 41.000 (including ticks preprocessing 0 : 00 : 02.766 ).
2018.01 . 27 17 : 55 : 00.938 Core 1   EURUSD,M5: total time from login to stop testing 0 : 02 : 41.047 (including 0 : 00 : 00.063 for history data synchronization)
2018.01 . 27 17 : 55 : 00.938 Core 1    86509916 total ticks for all symbols
2018.01 . 27 17 : 55 : 00.938 Core 1   EURUSD: passed to tester 26169180 ticks
2018.01 . 27 17 : 55 : 00.938 Core 1   GBPUSD: passed to tester 27742039 ticks
2018.01 . 27 17 : 55 : 00.938 Core 1   USDJPY: generate 32598697 ticks in 0 : 00 : 02.766 , passed to tester 32598697 ticks
2018.01 . 27 17 : 55 : 00.938 Core 1    1892 Mb memory used including 26 Mb of history data, 1536 Mb of cached tick data (total memory for tick data 1663 Mb)

데이터 연도( 2017.01.01 - 2018.01.01 )에 대해 4개의 문자에 대해 다른 테스트를 시도해 보겠습니다.


 2018.01 . 27 18 : 00 : 24.607 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 02.266 . Test passed in 0 : 04 : 30.140 (including ticks preprocessing 0 : 00 : 05.125 ).
2018.01 . 27 18 : 00 : 24.607 Core 1   EURUSD,M5: total time from login to stop testing 0 : 04 : 32.406 (including 0 : 00 : 02.375 for history data synchronization)
2018.01 . 27 18 : 00 : 24.607 Core 1    107227636 total ticks for all symbols
2018.01 . 27 18 : 00 : 24.607 Core 1   AUDUSD: generate 20717720 ticks in 0 : 00 : 05.125 , passed to tester 20717720 ticks
2018.01 . 27 18 : 00 : 24.607 Core 1   EURUSD: passed to tester 26169180 ticks
2018.01 . 27 18 : 00 : 24.607 Core 1   GBPUSD: passed to tester 27742039 ticks
2018.01 . 27 18 : 00 : 24.607 Core 1   USDJPY: passed to tester 32598697 ticks
2018.01 . 27 18 : 00 : 24.607 Core 1    1680 Mb memory used including 35 Mb of history data, 1280 Mb of cached tick data (total memory for tick data 2047 Mb)

//---

이 시리즈에서도 예상 테스트 시간이 충족되지 않습니다.

Anatoli Kazharski  

문제:

테스트에 기호를 추가할 때 테스트 기간이 여러 번 증가하지 않도록 MQL에서 이러한 다중 기호 Expert Advisor 구성표를 생성할 수 있습니까?

//---

이것이 불가능한 경우 터미널 개발자를 위한 옵션 중 하나는 동시에 모든 문자가 아니라 문자별로 순차적으로 테스트할 수 있는 다른 모드를 추가하는 것입니다. 이것은 결과적으로 예상 테스트 시간을 제공합니다. 문제는 다중 기호 Expert Advisors가 다음과 같은 경우에 매우 자주 사용된다는 것입니다.

  1. 더 많은 테스트 데이터가 필요합니다.
  2. 동일한 매개변수를 사용하여 더 다양한 가격 조치, 조건(스프레드, 중지/제한 수준) 등에서 거래 알고리즘을 테스트합니다.

테스트 기간과 매개변수 최적화를 크게 줄이는 새로운 모드가 필요한 경우입니다. 그리고 최종 테스트를 위해 모든 기호를 동시에 테스트합니다.

fxsaber  

조언자

 #include <TesterBenchmark.mqh> // https://www.mql5.com/ru/code/18804

input int AmountSymbols = 1 ;

double Sum2 = 0 ;
const bool Init = EventSetTimer ( 1 );

double GetBid( const string Symb )
{
   static MqlTick Tick;      

   return ( SymbolInfoTick (Symb, Tick) ? Tick.bid : 0 );
}

void OnTimer ()
{
   static const string Symbols[] = { "EURUSD" , "GBPUSD" , "AUDUSD" };
  
   for ( int i = 0 ; i < AmountSymbols; i++)    
    Sum2 += GetBid(Symbols[i]);
}

void OnTick ()
{
}

void OnDeinit ( const int )
{
   Print (Sum2);
}

EURUSD M1 MetaQuotes-데모, 헤지, USD, 지연 없음, Core1 에이전트 전용, 실제 틱 09/01/2017 - 01/26/2018.


한 문자

i = 0 Pass = 0 OnTester = 3.728 s.: Count = 9753093 , 2616173.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755
i = 1 Pass = 1 OnTester = 3.727 s .: Count = 9753093 , 2616875.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755


두 캐릭터

i = 0 Pass = 0 OnTester = 7.946 s.: Count = 9753093 , 1227421.7 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755
i = 1 Pass = 1 OnTester = 7.614 s .: Count = 9753093 , 1280942.1 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755


세 글자

i = 0 Pass = 0 OnTester = 10.300 s.: Count = 9753093 , 946902.2 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755
i = 1 Pass = 1 OnTester = 10.236 s .: Count = 9753093 , 952822.7 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1755


확장성 면에서 모든 것이 괜찮은 것 같습니다.

Anatoli Kazharski  
fxsaber :

...

확장성 면에서 모든 것이 괜찮은 것 같습니다.

모든 틱이 발생하는 전문가가 필요합니다. 각 기호의 표시기에서 사용자 정의 이벤트를 통해.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MT5의 다중 통화 테스트

fxsaber , 2016.11.13 14:04

요점은 OnTick 호출에 있습니다. 다중 통화 고문의 경우 올바른 철자가 두 개뿐입니다(두 번째 철자는 결함 있음).

  1. 다중 통화 OnTick. 처음에 각 기호에 대한 표시기를 전송하여 구현합니다. 표시기가 사용자 지정 이벤트를 OnCalculate로 보내는 위치입니다. 그리고 EA 자체에서는 OnChartEvent에서 모든 지표의 커스텀 이벤트가 포착되고 거래 로직이 실행됩니다. 그러한 Expert Advisor에는 표준 OnTick이 없습니다.
  2. ...


Anatoli Kazharski  

\MQL5\Indicators 에 표시기를 배치합니다.

 //+------------------------------------------------------------------+
//|                                            EventsSpyTickOnly.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2018, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
//---
#property indicator_chart_window
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Перечисление событий                                             |
//+------------------------------------------------------------------+
enum ENUM_CHART_EVENT_SYMBOL
  {
   CHARTEVENT_INIT = 0 ,         // Событие "инициализация" 
   CHARTEVENT_NO   = 0 ,         // События отключены
   CHARTEVENT_TICK = 0x00200000 // Событие "новый тик"
  };
//--- Внешние параметры
input long                     chart_id;                 // идентификатор графика-получателя события
input ushort                   custom_event_id;           // идентификатор события  
input ENUM_CHART_EVENT_SYMBOL flag_event=CHARTEVENT_NO; // флаг, определяющий тип события.
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double & price[])

  {
   if (prev_calculated== 0 )
     {
      EventCustom(CHARTEVENT_INIT);
       return (rates_total);
     }
//--- New tick
   if (flag_event==CHARTEVENT_TICK)
      EventCustom(CHARTEVENT_TICK);
//--- Return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| Пользовательское событие                                         |
//+------------------------------------------------------------------+
void EventCustom(ENUM_CHART_EVENT_SYMBOL event)
  {
   EventChartCustom (chart_id,custom_event_id,( long )event, 0.0 , _Symbol );
  }
//+------------------------------------------------------------------+
Anatoli Kazharski  

테스트 전문가:

 //+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2018, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
//+------------------------------------------------------------------+
//| Перечисление событий                                             |
//+------------------------------------------------------------------+
enum ENUM_CHART_EVENT_SYMBOL
  {
   CHARTEVENT_INIT = 0 ,         // Событие "инициализация" 
   CHARTEVENT_NO   = 0 ,         // События отключены
   CHARTEVENT_TICK = 0x00200000 // Событие "новый тик"
  };
//--- Внешние параметры
input int AmountSymbols= 1 ;
//---
static const string symbols[]={ "EURUSD" , "GBPUSD" , "AUDUSD" , "USDJPY" , "USDCAD" };
long spy_indicator_handles[];
//---
double      sum2 = 0 ;
const bool init = EventSetTimer ( 1 );
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ( void )
  {
   GetSpyHandles();
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int )
  {
   Print (sum2);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ( void )
  {
   //Strategy();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ( void )
  {
   //Strategy();
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent ( const int     id,
                   const long    &lparam,
                   const double &dparam,
                   const string &sparam)
  {
//--- Если было событие "тик"
   if (lparam==CHARTEVENT_TICK)
     {
      Strategy();
       return ;
     }
  }
//+------------------------------------------------------------------+
//| Get bid price                                                    |
//+------------------------------------------------------------------+
double GetBid( const string Symb)
  {
   static MqlTick Tick;
   return ( SymbolInfoTick (Symb, Tick)? Tick.bid : 0 );
  }
//+------------------------------------------------------------------+
//| Strategy                                                         |
//+------------------------------------------------------------------+
void Strategy( void )
  {
   for ( int i= 0 ; i<AmountSymbols; i++)
      sum2+=GetBid(symbols[i]);
  }
//+------------------------------------------------------------------+
//| Получает хэндлы агентов по указанным символам                    |
//+------------------------------------------------------------------+
void GetSpyHandles( void )
  {
   string path= "EventsSpyTickOnly.ex5" ;
//---
   :: ArrayResize (spy_indicator_handles,AmountSymbols);
//--- Пройдемся по всем символам
   for ( int s= 0 ; s<AmountSymbols; s++)
     {
       //--- Получим хэндл индикатора
      spy_indicator_handles[s]=:: iCustom (symbols[s],:: Period (),path,:: ChartID (), 0 ,CHARTEVENT_TICK);
       //--- Если не удалось получить хэндл индикатора
       if (spy_indicator_handles[s]== INVALID_HANDLE )
         :: Print ( "Failed to install agent on " +symbols[s]+ "" );
     }
  }
//+------------------------------------------------------------------+
Anatoli Kazharski  

결과.

1자:

 2018.01 . 28 11 : 10 : 29.325 Core 1   EURUSD,M5 (MetaQuotes-Demo): every tick generating
2018.01 . 28 11 : 10 : 29.325 Core 1   EURUSD,M5: testing of Experts\Test.ex5 from 2017.01 . 01 00 : 00 to 2018.01 . 01 00 : 00 started with inputs:
2018.01 . 28 11 : 10 : 29.325 Core 1     AmountSymbols= 1

2018.01 . 28 11 : 10 : 49.279 Core 1   final balance 10000.00 USD
2018.01 . 28 11 : 10 : 49.279 Core 1    2017.12 . 29 23 : 59 : 59    64793248.54125572
2018.01 . 28 11 : 10 : 49.279 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.032 . Test passed in 0 : 00 : 26.015 .
2018.01 . 28 11 : 10 : 49.279 Core 1   EURUSD,M5: total time from login to stop testing 0 : 00 : 26.047 (including 0 : 00 : 00.032 for history data synchronization)
2018.01 . 28 11 : 10 : 49.279 Core 1    778 Mb memory used including 8 Mb of history data, 512 Mb of tick data

2자:

 2018.01 . 28 11 : 11 : 49.343 Core 1   EURUSD,M5 (MetaQuotes-Demo): every tick generating
2018.01 . 28 11 : 11 : 49.343 Core 1   EURUSD,M5: testing of Experts\Test.ex5 from 2017.01 . 01 00 : 00 to 2018.01 . 01 00 : 00 started with inputs:
2018.01 . 28 11 : 11 : 49.343 Core 1     AmountSymbols= 2

2018.01 . 28 11 : 13 : 18.421 Core 1   final balance 10000.00 USD
2018.01 . 28 11 : 13 : 18.421 Core 1    2017.12 . 29 23 : 59 : 59    411044644.6801022
2018.01 . 28 11 : 13 : 18.421 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.032 . Test passed in 0 : 01 : 35.203 (including ticks preprocessing 0 : 00 : 01.360 ).
2018.01 . 28 11 : 13 : 18.421 Core 1   EURUSD,M5: total time from login to stop testing 0 : 01 : 35.235 (including 0 : 00 : 00.047 for history data synchronization)
2018.01 . 28 11 : 13 : 18.421 Core 1    53911219 total ticks for all symbols
2018.01 . 28 11 : 13 : 18.421 Core 1   EURUSD: passed to tester 26169180 ticks
2018.01 . 28 11 : 13 : 18.421 Core 1   GBPUSD: generate 27742039 ticks in 0 : 00 : 01.360 , passed to tester 27742039 ticks
2018.01 . 28 11 : 13 : 18.421 Core 1    1330 Mb memory used including 17 Mb of history data, 1024 Mb of tick data

3자:

 2018.01 . 28 11 : 14 : 27.847 Core 1   EURUSD,M5 (MetaQuotes-Demo): every tick generating
2018.01 . 28 11 : 14 : 27.847 Core 1   EURUSD,M5: testing of Experts\Test.ex5 from 2017.01 . 01 00 : 00 to 2018.01 . 01 00 : 00 started with inputs:
2018.01 . 28 11 : 14 : 27.847 Core 1     AmountSymbols= 3

2018.01 . 28 11 : 17 : 43.325 Core 1   final balance 10000.00 USD
2018.01 . 28 11 : 17 : 43.325 Core 1    2017.12 . 29 23 : 59 : 59    1009249102.577681
2018.01 . 28 11 : 17 : 43.325 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.047 . Test passed in 0 : 03 : 21.750 (including ticks preprocessing 0 : 00 : 01.047 ).
2018.01 . 28 11 : 17 : 43.325 Core 1   EURUSD,M5: total time from login to stop testing 0 : 03 : 21.797 (including 0 : 00 : 00.156 for history data synchronization)
2018.01 . 28 11 : 17 : 43.325 Core 1    74628939 total ticks for all symbols
2018.01 . 28 11 : 17 : 43.325 Core 1   AUDUSD: generate 20717720 ticks in 0 : 00 : 01.047 , passed to tester 20717720 ticks
2018.01 . 28 11 : 17 : 43.325 Core 1   EURUSD: passed to tester 26169180 ticks
2018.01 . 28 11 : 17 : 43.325 Core 1   GBPUSD: passed to tester 27742039 ticks
2018.01 . 28 11 : 17 : 43.325 Core 1    1750 Mb memory used including 26 Mb of history data, 1408 Mb of tick data

4자:

 2018.01 . 28 11 : 19 : 02.758 Core 1   EURUSD,M5 (MetaQuotes-Demo): every tick generating
2018.01 . 28 11 : 19 : 02.758 Core 1   EURUSD,M5: testing of Experts\Test.ex5 from 2017.01 . 01 00 : 00 to 2018.01 . 01 00 : 00 started with inputs:
2018.01 . 28 11 : 19 : 02.758 Core 1     AmountSymbols= 4

2018.01 . 28 11 : 25 : 57.059 Core 1   final balance 10000.00 USD
2018.01 . 28 11 : 25 : 57.059 Core 1    2017.12 . 29 23 : 59 : 59    63985236406.09325
2018.01 . 28 11 : 25 : 57.059 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.078 . Test passed in 0 : 07 : 00.531 (including ticks preprocessing 0 : 00 : 06.719 ).
2018.01 . 28 11 : 25 : 57.059 Core 1   EURUSD,M5: total time from login to stop testing 0 : 07 : 00.609 (including 0 : 00 : 00.078 for history data synchronization)
2018.01 . 28 11 : 25 : 57.059 Core 1    107227636 total ticks for all symbols
2018.01 . 28 11 : 25 : 57.059 Core 1   AUDUSD: passed to tester 20717720 ticks
2018.01 . 28 11 : 25 : 57.059 Core 1   EURUSD: passed to tester 26169180 ticks
2018.01 . 28 11 : 25 : 57.059 Core 1   GBPUSD: passed to tester 27742039 ticks
2018.01 . 28 11 : 25 : 57.059 Core 1   USDJPY: generate 32598697 ticks in 0 : 00 : 06.719 , passed to tester 32598697 ticks
2018.01 . 28 11 : 25 : 57.059 Core 1    1985 Mb memory used including 35 Mb of history data, 1600 Mb of cached tick data (total memory for tick data 2047 Mb)

5자:

 2018.01 . 28 11 : 27 : 00.683 Core 1   EURUSD,M5 (MetaQuotes-Demo): every tick generating
2018.01 . 28 11 : 27 : 00.683 Core 1   EURUSD,M5: testing of Experts\Test.ex5 from 2017.01 . 01 00 : 00 to 2018.01 . 01 00 : 00 started with inputs:
2018.01 . 28 11 : 27 : 00.683 Core 1     AmountSymbols= 5

2018.01 . 28 11 : 38 : 47.355 Core 1   final balance 10000.00 USD
2018.01 . 28 11 : 38 : 47.355 Core 1    2017.12 . 29 23 : 59 : 59    94559190795.58774
2018.01 . 28 11 : 38 : 47.355 Core 1   EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0 : 00 : 00.266 . Test passed in 0 : 11 : 54.015 (including ticks preprocessing 0 : 00 : 08.734 ).
2018.01 . 28 11 : 38 : 47.355 Core 1   EURUSD,M5: total time from login to stop testing 0 : 11 : 54.281 (including 0 : 00 : 00.500 for history data synchronization)
2018.01 . 28 11 : 38 : 47.355 Core 1    130637614 total ticks for all symbols
2018.01 . 28 11 : 38 : 47.355 Core 1   AUDUSD: generate 20717720 ticks in 0 : 00 : 01.078 , passed to tester 20717720 ticks
2018.01 . 28 11 : 38 : 47.355 Core 1   EURUSD: generate 26169180 ticks in 0 : 00 : 01.281 , passed to tester 26169180 ticks
2018.01 . 28 11 : 38 : 47.355 Core 1   GBPUSD: generate 27742039 ticks in 0 : 00 : 01.406 , passed to tester 27742039 ticks
2018.01 . 28 11 : 38 : 47.355 Core 1   USDCAD: generate 23409978 ticks in 0 : 00 : 01.188 , passed to tester 23409978 ticks
2018.01 . 28 11 : 38 : 47.355 Core 1   USDJPY: generate 32598697 ticks in 0 : 00 : 03.781 , passed to tester 32598697 ticks
2018.01 . 28 11 : 38 : 47.355 Core 1    2735 Mb memory used including 44 Mb of history data, 2304 Mb of cached tick data (total memory for tick data 2495 Mb)
fxsaber  
아직 런칭은 하지 않았지만, 전용기가 부족한 것 같습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 5 전략 테스터의 테스트 결과 분석 및 최적화

아나톨리 카자르스키 , 2018.01.28 09:09

테스트 전문가:

 void OnChartEvent ( const int     id,
                   const long    &lparam,
                   const double &dparam,
                   const string &sparam)
  {
//--- Если было событие "тик"
   if (lparam==CHARTEVENT_TICK + CHARTEVENT_CUSTOM )
     {
      Strategy();
       return ;
     }
  }
Anatoli Kazharski  
fxsaber :
아직 런칭은 하지 않았지만, 전용기가 부족한 것 같습니다.

긴 매개변수(lparam)가 확인됩니다. 틱 이벤트 ID가 포함되어 있습니다.

사용자 이벤트 ID(int id)는 0입니다.

더 명확하게 하기 위해 다음과 같이 할 수 있습니다.

 //+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent ( const int     id,
                   const long    &lparam,
                   const double &dparam,
                   const string &sparam)
  {
//--- Если было пользовательское событие
   if (id>= CHARTEVENT_CUSTOM )
     {
       //--- Если было событие "тик"
       if (lparam==CHARTEVENT_TICK)
        {
         Strategy();
         return ;
        }
       return ;
     }
  }